应用层报文怎么传输到另一个应用层的?

发布时间 2023-11-27 10:46:06作者: 我不想学编丿程

原文:

https://blog.csdn.net/weixin_45525272/article/details/126751796

文章目录

吐槽

各层全写的乱七八糟的,说啥的都有,靠,不整理了,也不背哪个,说啥的都有:

ip数据包?IP数据报?
数据报是网络层的还是传输层的???
啥乱七八糟的???????????????????????????????????????????????????????????

???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????

数据报文传输过程

应用层数据(报文)向外发送时,数据是由最上面的应用层向下经过一层层封装后发送给物理层;而接收数据时,数据是由物理层向上经过一层层解封后发给应用层。数据的封装和解封过程如下:

数据的封装过程

传输层及其以下的机制由内核提供, 应用层由用户进程提供, 应用程序对通讯数据的含义进行解释, 而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。

应用层数据通过协议栈发到网络上时,每层协议都要加上一个相对应的头部(header ),该过程称为封装。

封装过程如下图所示:

在这里插入图片描述

数据的解封过程

不 同 的 协 议 层 对 数 据 包 有 不 同的 称 谓 ,在 传 输 层 叫 做 TCP报文段(segment ),在网络层叫做IP数据报( datagram) ,在链路层叫做帧(frame )。数据封装成帧后发到传输介质上,到达目的主机后,每层协议再剥掉相应的头部,最后将应用层数据交给应用程序处理,该过程称为解封。

解封过程如下图所示

在这里插入图片描述

数据封装和解封装过程举例

(1)从计算机 A 的应用层内网通软件向计算机 B 发出一个消息,生成数据;
(2)请求从计算机 A 的应用层下到 计算机A 的传输层,传输层在上层数据前面加上 TCP报头,报头中包括目标端口以及源端口;
(3)传输层数据下到网络层,计算机A 在网络层封装,源 IP地址为 计算机A地址,目标 IP地址为计算机 B 地址;
(4)计算机 A 将计算机B 的 IP 地址和子网掩码与自己做比对,可以发现 计算机 B 与自己处于相同的子网。所以数据传输不必经过网关设备;
(5)数据包下到 计算机 A 的数据链路层进行封装,源 MAC 地址为 计算机A的 MAC地址,目标MAC 地址查询自己的 ARP 表。
(6)计算机 A 把帧转换成 bit 流,从物理接口网卡发出;
(7)物理层接收到电信号,把它交给数据链路层进行查看帧的目标 MAC 地址,和自己是否相等,如果相等说明该帧是发送给自己的,于是将MAC帧头解开并接着上传到网络层;
(8)网络层查看目标 IP 地址和自己是否匹配,如果匹配即解开 IP 头封装。然后再把数据上传到传输层;
(9)传输层解开对应的包头之后,继续把数据传给应用层,计算机 B 即可接收到计算机 A 发的消息。

补充:报文、报文段、分组、包、数据报、帧、数据流的概念区别如下:

  1. 报文(message)
    我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。

    报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。

  2. 报文段(segment)

    通常是指起始点和目的地都是传输层的信息单元。

  3. 数据报(datagram)
    面向无连接的数据传输,其工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。

  4. 分组/包(packet)
    分组是在网络中传输的二进制格式的单元,为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是网络层。

  5. 帧(frame)
    帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧。它的起始点和目的点都是数据链路层。

  6. 数据单元(data unit)
    指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。

    SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。

总结

传输数据单元 说明
应用层 消息
传输层 报文段(segment)/数据报(datagram) (注:TCP叫TCP报文段,UDP叫UDP数据报,也有人叫UDP段)
网络层 分组、数据包(packet)
链路层 帧(frame)
物理层 PDU(bit)

本文转自 https://blog.csdn.net/weixin_45525272/article/details/126751796,如有侵权,请联系删除。