java——网络原理初识

news2024/12/23 17:04:04

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 小比特 大梦想

目录

    • 1.网络通信概念初识
      • 1.1 IP地址
      • 1.2端口号
      • 1.3协议
        • 1.3.1协议分层
          • 协议分层带来的好处主要有两个方面
        • 1.3.2 TCP/IP五层 (或四层模型)
        • 1.3.3 协议的层和层之间是怎么配合工作的

1.网络通信概念初识

1.1 IP地址

网络互联的目的就是进行网络通信,也就是从网络获取数据,说具体一点,就是网络主机中不同进程之间进行通信
那么,在组件的网络里,到底是怎么判断是从哪台主机,将数据传输到哪台主机的呢??
这就需要使用IP地址来标识
IP地址用来标识网络上一个设备的位置,通过位置找到这个设备进行进一步的通信
IP地址实际上是一个32位的整数(针对IPV4),也就是 4个字节的数
但是我们在平常见到的往往是使用"点分十进制" 的方式 来表示IP地址
所谓"点分十进制" 就是将上述的IP地址分成4个部分,每个部分一个字节,并且每个部分表示的范围在 0 - 255

1.2端口号

IP地址是用来标识不同主机的
而端口号就是用来标识一个主机上的不同程序
要求在每个程序启动的时候,就需要关联上一个和别的程序不一样的端口号

1.3协议

协议就是"约定",是通信双方对通信规则的约定
这个约定一定是双方都认可的,就是约定在通信的时候,哪一部分该怎么做
进行网络通信的时候,是一定要有通信协议的
就是为了保证,在不同的主机,不同的设备上,即使是不同的硬件,不同的操作系统,不同的应用程序,也能保证通信的正常进行
在网络通信过程里面,通信协议是非常重要的环节

1.3.1协议分层

网络通信是一个非常复杂的事情,涉及到很多的细节问题
如果是仅仅只是通过一个协议就约定了上述所有的细节该怎么实现,那么这个协议将会非常庞大
最好的办法就是 将上面庞大的协议,进行拆分
拆分就是为了更好的管理,不要让这个东西太复杂,让拆分完后的每一部分,复杂一个功能模块
此时,就可以将一个功能复杂的协议,拆分成多功能单一的协议的

拆分是拆分了,但是拆出来的协议太多了,就要对协议进行分类分层
就类似于在公司:
在这里插入图片描述
虽然整体的人多,分出来的组别也多,但是不会乱

而分层,不乱的前提是,不能分级汇报工作

协议分层也就是类似上面的效果,将很多协议,按照不同的功能分层不同的层级,每一个层级都有对应的主线任务(目标,要解决的问题)

上层协议会调用下层协议的功能,下层协议会给上层协议提供服务(不能越级调用)

协议分层带来的好处主要有两个方面

(1)封装的效果
即某一层协议不必知道其他层协议的细节,降低学习成本
在这里插入图片描述
按照如图所示的类似封装效果,那么此时会汉语的两个人,不必知道电话通信的原理,就能打电话

而设计电话的人,也可能不懂汉语,但是也不影响他开发电话

(2)任意协议之间,都是可以灵活替换的 即方便进行解耦合
在这里插入图片描述
即使层级内部的协议变了

站在使用者的角度,完全感知不到,电话机有任何区别

站在电话开发者的角度,也不必对针对英语做出任何的修改

此时引入协议分层就对 整个网络升级迭代,带来了很大的便利

我们当前的网络现状,就是有很多协议,这些协议就是按照一定的分层规则,组织起来的

有两种分层规则:OSI七层模型 和 TCP/IP五层(或四层)模型

但是OSI七层模型只是存在于教科书上,是一种理想化的模型,客观世界是不存在的(搞得太复杂了)

因此我们主要来看 TCP/IP五层(或四层)模型

1.3.2 TCP/IP五层 (或四层模型)

TCP/IP五层(或四层)模型实际上是 OSI七层模型的简化版

我们目前接触到的网络,大部分都是TCP/IP五层(或四层)模型,电脑上网基本都是,至于手机上网的 4G 5G通信,就是一套专门的协议

(1)物理层

就是硬件层面上的相关约定,比如网口,网线…

(2)数据链层,网络层,传输层,应用层

举个例子:
我们在淘宝上买衣服,下单的时候,就需要填写收件人信息,同时商家也需要填写发件人的信息

此时我和商家就只是关注收件人信息和 发件人信息 ,即终点和起点

这就类似于传输层,只关注 通信双方的起点和终点
即"端"到"端"的传输(endPoint)

接下来商家发货,就会把快递交给快递小哥拿到快递公司,此时快递公司就会对这些快递进行分拣,根据不同的目的地,安置到不同的传输路线上

例如有的是"上海 - > 重庆" ,有的是"上海 -> 广东",而即使是"上海 - > 重庆",中间也有不同的中转站

快递公司就会把路线规划好,包裹就会按照这样的既定路线进行传输

这就类似于网络层,关注的是通信中,通信路线的规划
规划出的路径,就决定了数据要经过哪些节点,即"点到点的传输"

此时具体到运输层面上,即具体咋运输,就要有快递员自行确定了

例如上海到 ->苏州是大卡车,苏州到 南京是火车…

这就类似于数据链路层,关注的是通信过程中,相邻两个点之间的运输

当我买家拿到快递后,此时我们拿到快递后具体需要干什么,就是我自己关心的事情,商家 / 快递公司不关心

这就类似于应用层,和具体应用直接相关,传输的数据干啥用,如何使用,有啥意义

这就是TCP / IP五层

而有一些资料把上述的五层称为四层,实际上就是 不单独算物理层(实际上物理层数据链层可以合并)
在这里插入图片描述
如图所示,实际上两种模型的区别就在于,TCP/IP模型,将应用层,表示层,会话层合并成一个应用层了

至于其他层,都是同一个东西,只是不同的叫法

1.3.3 协议的层和层之间是怎么配合工作的

上层协议会调用下层协议的功能,下层协议会给上层协议提供服务

我们通过一个实际场景来解释:

A 通过 QQ 给 B 发送 hello消息

QQ应用程序就要负责实现上述的逻辑

(1)应用层

QQ应用程序首先就需要把上述要传递的内容,组织成 “应用层数据包”

QQ里会有一个应用层网络协,协议就是规定了,数据按照怎么样的格式来组织

而网络上传输的数据本质上就是二进制字符串

因此发送人 接收人 消息时间,消息内容 就要组织到一个字符串里面,组织的时候,就要按照一定的格式来组织

不同协议,数据组织的格式是不同的

此时我们假设,QQ应用层协议是这样的:发送人的QQ号,接受人的QQ号,发送时间,消息正文\n(即使事实上的QQ应用层协议更加复杂,但是本质上也是把各个属性信息,组织成一个字符串,即将结构化的数据,转化为字符串 / 二进制字符串 -> 序列化)

假设此时的应用层数据包是:

在这里插入图片描述

(2)传输层

此时应用层数据已经有了,QQ应用程序就要调用系统的API来进行传输,就要将数据交给传输层(传输层(操作系统内核提供了API),让应用程序去调用 -> 称为 socket api)

调用这样的api,就能交给数据交给传输层(进入到系统内核了)

传输层拿到应用层数据包后,就要对应用层数据包进行进一步的封装,构造成"传输层数据包"

在传输层里有两个典型的协议,TCP,UDP(此处假设使用UDP来作为传输层协议)

在这里插入图片描述

而报头里面放的是一些UDP相关的属性(比如发件人和收件人的端口号,就在UDP中)

报头后面的数据就称为UDP数据包的载荷(payLoad)

这种过程就类似于包装快递

(3)网络层

传输层构造好数据包后,就会继续把数据包交给网络层(传输层会调用网络层提供的API,这个调用的过程是系统内核自己负责的)

在网络层,典型的协议就是IP协议

在这里插入图片描述

IP数据包不关心后面的载荷是啥,只关心IP报头里的数据(发件人的IP地址和收件人的IP地址)

(4)数据链层

网络层又进一步调用 数据链层的API,把上述IP数据包进一步交给数据链层

这里同样也是操作系统内核完成的工作

而这里调用的API往往是网卡驱动程序提供的

数据链层的典型协议就是以太网

电脑通过有线网传输数据,走的就是以太网协议,我们电脑上插的网线就是 (以太网线)

在这里插入图片描述

此时上述数据就已经进入到网卡驱动里了,接下来就要真正发送出去了

(5)物理层

上述数据本质上还是0101这样的二进制数据

硬件设备就要把上述数据转化成光信号 / 电信号 / 电磁波 ,才会真正发射

上述层层包装数据,不停的加数据报头的过程,就是 “封装”

而上述数据实际上不是直接到达B,而是先到达和A连接的交换机 / 路由器

而数据到达B之后,要做的事情就是 上述过程的逆过程

(1)物理层

收到一系列光信号后,把这些信号转成0101这样的二进制数据,交给数据链路层

(2)数据链路层对数据进行解析(解析报头里的关键信息,为后续的传输 / 转发 打下基础,还要拿到载荷数据)

此时解析出来的数据是要交给上层的

(3)网络层

IP协议按照协议对从数据链路拿到的数据进行进一步解析,解析报头中的关键信息,取出载荷

进一步将解析出来的数据交给 传输层

(4)传输层

拿着传输过来的UDP数据包,按照UDP格式进一步解析,解析出关键信息(要给哪个端口号使用),以及解析出载荷

再进一步将载荷交给对应的应用程序

(5)应用层

QQ拿到应用数据包

按照自己的协议格式进行解析,将前面拿到的结构化数据,显示到页面上

注意:这样的网络数据在发送之后,实际上再中间会经过很多路由器 / 交换机进行转发,此时路由器和交换机也会进行封装分用

但是与上面不同的是,路由器只是封装到网络层即可,而交换机封装到数据链路层



感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 小比特 大梦想

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1718769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索气象数据的多维度三维可视化:PM2.5、风速与高度分析

探索气象数据的多维度可视化:PM2.5、风速与高度分析 摘要 在现代气象学中,数据可视化是理解复杂气象模式和趋势的关键工具。本文将介绍一种先进的数据可视化技术,它能够将PM2.5浓度、风速和高度等多维度数据以直观和动态的方式展现出来。 …

国产身份域管架构图集合(信创政策AD域替换必看)

几类典型架构 双机架构 单点单机房 集群架构 多点单机房 两地三中心架构 多点多机房 多地分布式架构 多点多机房 全栈信创方案架构,欢迎探讨交流~

emp.dll文件丢失要怎么解决?荒野大镖客emp.dll修复方法分享

软件运行过程中经常遇到各种技术问题,其中之一就是动态链接库(DLL)文件丢失的现象。DLL文件是Windows操作系统中一个重要的组件,它包含运行多个应用程序所需要的代码和数据。因此,一个丢失的DLL文件,如“em…

同城活动报名系统源码活动组局找搭子小程序Java源码全开源

活动流程图 管理端设置 1.系统操作 2.活动类型 可添加线上和线下活动,线上活动,比如游戏等,需要可以进入游戏,需要签到等; 线下活动,比如线下交友等, 3.活动管理 可给用户添加活动,给活动设置报名时间,活动开始时间等; 也可查看报名列表和签到列表 4.进行中的活动 等发起…

校园导航系统C++

制作一个简单的大学城导航系统,根据用户指定的起点和终点,求出最短路径长度以及具体路径。 项目要求: 1)程序与数据相分离,地图中的所有数据都是从文件读入,而不是写在代码中 2)最短路径算法…

热敏电阻的设计

热敏电阻(NTC)的作用:抑制开机时的浪涌电流。防止开机瞬间产生的浪涌电流损坏后面的元件。 取值依据:根据对开机的脉冲电流(浪涌电流)小于多少A? 由,这个U是指最大输入电压,I为要求的浪涌电流。 NTC是负温度系数的热…

设计模式23——状态模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 状态模式(State&am…

打造高效上传体验:基于Kotlin的Android快速上传框架

1. 引言 在Android开发中,文件上传操作常常面临各种挑战,为此我开源了一个高效、易用的快速上传框架,助力开发者轻松实现文件上传功能。 GitHub项目地址: 点我 2. 框架特点概述 纯Kotlin编写:简洁、现代的编程语言。MVVM架构&a…

动态分配函数参数用二级指针的作用

文章目录 前言一、案例 前言 在一些情况下,我们需要在函数内部动态地分配内存来存储结构体,并且需要在函数外部访问该结构体。在这种情况下,可以使用二级指针作为函数参数来实现动态内存分配,并且在函数外部使用指针访问结构体。…

py黑帽子学习笔记_web攻击

python网络库 py2的urllib2 py3好像把urllib2继承到了标准库urllib,直接用urllib就行,urllib2在urllib里都有对应的接口 py3的urllib get请求 post请求,和get不同的是,先把post请求数据和请求封装到request对象,再…

数字化转型对企业来说意味着什么?

数字化转型是当今社会不可避免的趋势,它的发展其实是多方面因素影响导致的。首先,随着科技的迅速发展,人们对于信息获取和处理的需求越来越强烈,这促使了各行各业都要朝着数字化方向发展。其次,全球化的潮流让企业需要…

制作U启动装win10系统

一、背景 在我们日常上班过程中经常会遇到以下问题: 1、c盘快满了 2、新电脑用着好卡 3、买新电脑不会装系统 二、实现方式 通常我们遇到这种情况 都会选择去电脑专卖店找专人装系统 但是这样又需要花费自己的money,这样显得自己不够专业像个菜鸟&#…

【成品设计】基于STM32单片机的语音远程运算器

《基于STM32单片机的语音远程运算器》 输入端 所需器件: STM32最小系统板。语音识别模块:用于检测语音命令。蓝牙模块:作为主机用于与输出端蓝牙模块进行连接,发送数据。蜂鸣器红色LED:用于语音命令检测错误提示。 …

记录一次云服务器无法连接的排查过程

运行环境:阿里云服务器 故障外显原因:登录失败,操作系统禁用了密码登录方式 控制台监控数据显示云盘读写BPS拉满了 因为之前问过线上售后,让安装了atop监控,,所以先打开atop日志: atop -r /var/log/atop…

揭秘数字货币:比特币背后的技术逻辑

随着科技的飞速发展,数字货币作为一种新兴的经济形态,已经逐渐走入我们的视野。其中,比特币无疑是这一领域的佼佼者。那么,比特币背后的技术逻辑究竟是什么呢?本文将为您揭开这一神秘面纱。 一、区块链技术:比特币的基石 比特币的核心技术就是区块链(Blockchain)。区块…

[Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解

目录 0.子序列 vs 子数组1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.摆动序列1.题目链接2.题目链接3.代码实现 0.子序列 vs 子数组 子序列: 相对顺序是跟源字符串/数组是一致的但是元素和元素之间,在源字符串/数组中可以是不连续的一般时间…

前端开发:$nextTick()的使用及原理

目录 前言 $nextTick()的概念 $nextTick()的用法和原理 1、$nextTick()用法 2、$nextTick()原理 $nextTick()的具体使用示例 拓展:面试中考察$nextTick()的底层原理 最后 前言 在前端开发中,涉及到JS原生的使用原理是非常重要的知识点&#xff0…

Spring Boot详解:深入了解与实践

文章目录 1. Spring Boot简介1.1 什么是Spring Boot?1.2 Spring Boot的历史背景1.3 Spring Boot的核心特点 2. Spring Boot的核心概念2.1 自动配置2.1.1 自动配置原理2.1.2 自定义配置 2.2 Spring Boot Starter2.3 Spring Boot CLI 3. Spring Boot的主要功能模块3.1…

Microsoft Dynamics 365 Business Central 讲解VAT RATE CHANGE TOOL(增值税税率更改工具)

学习目标: 如果使用VAT RATE CHANGE TOOL(增值税税率更改工具) 过程演示: 1.创建新的VAT产品过账组 2.创建新的总账科目以过账采购、销售和逆向征收增值税。 3.给新的VAT产品过账设置过账设置 4.创建一个新的一般产品过账组 5…

百度地图1

地图的基本操作 百度地图3.0文档 百度地图3.0实例中心 设置地图 centerAndZoom(center: Point, zoom: Number)设初始化地图,center类型为Point时,zoom必须赋值,范围3-19级, // 百度地图API功能var map new BMap.Map("map"); //…