一个网络包传输的全过程 您所在的位置:网站首页 ip数据包传输 一个网络包传输的全过程

一个网络包传输的全过程

2023-10-05 05:10| 来源: 网络整理| 查看: 265

  网络包本质就是连续有顺序的0和1的一连串数字,一个终端通过互联网把这一连串有顺序的数字传输到另一个终端接收,这就是网络包传输。

MTU:最大传输单元,一个网络包的最大长度,以太网中一般为1500个字节,MTU是包含了IP头部、TCP头部、数据块的总长度

MSS:最大分段大小,除去IP头部、TCP头部后网络报所能容纳的最大长度,叫作MSS,即MTU减去头部后的长度就是MSS的长度,一般为1460字节。

1.数据包的定义

我们知道计算机只能识别二进制的数据,如果我们要想实现多台计算机之间的通信,发送方就需要依赖特定的通信协议,把二进制的0和1按通讯协议的格式构造成有序的0和1来进行发送,而接收方则也借助该协议进行数据解析还原。

数据包是由头部和数据两部分构成的。头部包含目的地址等控制信息,大家可以把它理解为快递包裹的表单,头部后面就是委托方要发送给对方的数据,也就是相当于快递包裹里的货物。

2.数据包的结构组成

还记得TCP/IP协议的分层吗?TCP/IP分为应用层、传输层、网络层、网络接口层,数据在每层封装处理完后,会委托给下一层处理。在发送方,应用层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段),数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包),数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧),最后,帧被转换为二进制比特,通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。

注意点:

(1)如果应用层每次传一点数据,就发送一个网络包出去,很频繁的话就发送大量的小包,可能造成网络阻塞。所以当从应用程序收到的数据长度超过或者接近 MSS 时再发送出去,就可以避免发送大量小包的问题了。

(2)当应用程序发送数据的频率不高的时候,如果每次都等到长度接近 MSS 时再发送,可能会因为等待时间太长而造成发送延迟,这种情况下,即便缓冲区中的数据长度没有达到 MSS,也应该果断发送出去。为此,协议栈的内部有一个计时器,当经过一定时间之后,就会把网络包发送出去 。

判断要素就是这两个,但它们其实是互相矛盾的。如果长度优先,那么网络的效率会提高,但可能会因为等待填满缓冲区而产生延迟;相反地,如果时间优先,那么延迟时间会变少,但又会降低网络的效率。因此,在进行发送操作时需要综合考虑这两个要素以达到平衡。不过,TCP 协议规格中并没有告诉我们怎样才能平衡,因此实际如何判断是由协议栈的开发者来决定的,也正是由于这个原因,不同种类和版本的操作系统在相关操作上也就存在差异。

3.数据包如何从一台计算机通过互联网传输到另一台计算机

发送方的网络设备会负责创建包,创建包的过程就是生成含有正确控制信息的头部,然后再附加上要发送的数据。接下来,包会被发往最近的路由器。当到达最近的路由器后,路由器会根据头部中的信息判断接下来应该发往哪里,发往下一个路由器,循环往复,直到到达接收方的网络设备。

发送方的包首先通过计算机网卡,网卡会把包由0、1的数字信号转换为特定电压和电流的电信号,(可能到达光猫,光猫调制器再把电信号转为为光信号通过光纤传输),把包发送给当前网络的路由网关,根据包的MAC地址会找到当前网络的网关,经过交换器传输到网关路由,路由网关接收把把电信号接收后转换为数字信号,在网关路由再根据包的目地的IP地址,找到转发给下一个可达的路由器,把包的MAC头部去掉,换成下一个路由器的MAC头部,重新把数据信号转成电信号发出去,电信号沿着网线传输到下一个路由器

在互联网中以此类推,直到找到另一台计算机所在局域网的路由器,这个路由器里面有一个路由表,里面有缓存了这个局域网的IP地址和MAC地址的对应关系表,如果路由表有,则把包的MAC头部替换为目标IP的MAC头部再发送出去,如果没有,则通过ARP协议向整个局域网发送广播问这个IP是谁的,这个局域网中有计算机对应这个IP地址,那么它会回应这个IP地址是我的,我的MAC地址是xxx,路由表就会缓存这条记录。

最后这个包就到达了另一个计算机的网卡,网卡把电信号转成数字信号接收,校验IP头部是否正确,正确后去掉IP头部发送给TCP模块,TCP模块校验接收后再去掉TCP头部把数据块发送给应用程序。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有