[13]从零开始的JAVAEE-网络协议

一、协议

协议是网络编程中非常重要的一个东西,所谓的协议,其实就是一个约定,一个信息从A传输到B,这个信息在计算机中的传输本质上是一些电信号,为了使得A发出的信息B可以理解,双方就可以约定一个特殊的格式。A按照这个格式来发送数据,B按照这个格式来解析数据,这样就实现了数据的传输

协议分层

在实际的网络通信中,需要约定的协议其实是非常非常复杂的,这是因为网络通信的环境非常复杂,为了应对这些环境,就需要复杂的协议。但是协议太复杂也不好。为了解决这个问题,就可以将协议进行分层:即将一个协议拆分成多个协议。

一个复杂的协议是可以拆分成很多个小协议的,而拆分出来的这些小协议很多作用和定位都是类似的,因此可以针对这些小协议进行分类,同时针对这些协议的类别进行分层。

分层的基本约定:下层协议给上层协议提供支持,不能跨层调用

协议分层的好处

 以这张图为例,协议分为了两层,分别为语言层和通信设备层。

然后在下面,就可以针对不同的场景使用不同的协议。A和C之间使用汉语交流,并且使用无线电话通信。

后面转为了B和C之间交流,就可以直接选用英语协议和有线电话协议,非常的方便

  • 层级直接的耦合程度低,即上层协议不需要理解下层的细节,下层协议也不必要理解上层的协议。
  • 方便对某一层的协议进行直接替换

网络中的网络协议大致分为两种,OSI七层模型和TCP/IP五层模型

 这里介绍应用更广泛的TCP/IP协议

TCP/IP五层网络协议(八股文)

这是当下应用最广泛的网络协议模型,也是校招中最常见的面试范围,需要大家了解并掌握

这个网络协议分为五层,分别为

  1. 应用层
  2. 传输层
  3. 网络层
  4. 数据链路层
  5. 物理层

例如,在淘宝购买一件商品

  • 你挑选商品的时候在淘宝进行的交互操作就是应用层关注的事
  • 下单之后,卖家会关注你的收货地址,你会关注卖家的发货地址,这就是传输层
  • 从发货地址到收货地址的城市有很多种不同的路线,如何进行规划,这就是网络层关注的事情
  • 商品运输过程中每途经两个不同的城市,如何运输,使用什么样的运输方式,这就是数据链路层关注的事情
  • 最后在运输过程中走的马路、铁轨,就是物理层关注的事情

作为一个程序员,我们要对自己有清晰的认知,我们只是一个程序员,实际上是无法对系统内核进行修改的(也有的大佬能改但是那已经是最顶级的大佬了),当然也无法对硬件层进行修改,我们可以操作的仅仅只是应用层,所以我们主要关注的点就在于应用层,其他层的协议,我们同样也需要有一定的理解。

网络传输的过程主要就是封装&&分用

  • 封装:发送方发送数据将初始数据从上到下依次交给不同层级的协议进行封装,向下传输
  • 分用:接收方把接收到的封装好的数据从下到上依次交给不同层级的协议进行解析,向上传输

下面就以QQ发送消息为例,来看一看不同的协议层都干了什么事

注意:这里的演示是我自己约定的协议,实际qq传输协议更为复杂,这里只是方便演示随意约定。

A的qq号是1234,B的qq号是4567,A在2023-6-27 9:26:00向B发送数据:在干嘛?

应用层

拿到上述用户数据后,将其进行封装成一个数据报(本质上就是字符串拼接)

传输层

应用层拿到数据后调用传输层的api,然后传输层拿到数据,传输层进行数据处理

传输层有许多协议,最典型的就是TCP和UDP,这里以UDP为例

UDP会将这个数据报再次进行封装

 UDP会在对其拼接一层UDP数据报头,这个报头里的数据主要是源端口,目的端口,数据量,标识地址等等等等。

网络层

传输层拼接完报头后,数据来到网络层,网络层最常见的协议:IP协议

IP协议又会对上述的数据报进一步封装

 IP协议会在拼接一层源IP和目的IP,这里的IP就对应了发送方和接收方两台主机的IP地址

数据链路层

网络层拼接完报头后,数据来到了数据链路层,这里的协议最典型的是:以太网

这里又会对数据报进行拼接

以太网协议会在报头拼接一个帧头,在报尾拼接一个帧尾,帧头主要描述了源mac地址和目的mac地址。这个mac地址和IP地址类似但不同,在上面淘宝买东西的例子中,收货地址和发货地址对应IP,那么传输时途径不同的城市,每个城市就对应了mac地址,数据链路层只关注两个节点间的传输,不关注目的地和起始地。 

物理层

数据来到物理层后,物理层将上述的数据转为光信号/电信号/电磁波信号。就可以进行传输了

这是A发送数据的过程,A发送完毕后,B那边会收到一个数据报,此时B在按照协议层向上层层解析,最终就得到了A发送的信息

在真实的网络通信中,是极其复杂的,每一次消息的发送,可能都涉及到封装和分用

  • 这里的交换机,只需要封装分用到数据链路层,就是二层转发
  • 这里的路由器,则需要封装分用到网络层,就是三层转发 

         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不卷啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值