加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

为什么 TCP/IP 协议会拆分数据

发布时间:2020-02-19 21:37:25 所属栏目:站长百科 来源:站长网
导读:副问题#e# TCP/IP 协议簇成立了互联网通讯协议的观念模子,该协议簇的两个首要协议就是 TCP 和 IP 协议。这两个协议不只可以或许担保数据会从源呆板的源历程发送到方针呆板的方针历程中,还能担保数据的不重不漏以及发送的次序。 图 1 - TCP/IP 协议簇 当应用层
副问题[/!--empirenews.page--]

TCP/IP 协议簇成立了互联网通讯协议的观念模子,该协议簇的两个首要协议就是 TCP 和 IP 协议。这两个协议不只可以或许担保数据会从源呆板的源历程发送到方针呆板的方针历程中,还能担保数据的不重不漏以及发送的次序。

为什么 TCP/IP 协议会拆分数据

图 1 - TCP/IP 协议簇

当应用层协议行使 TCP/IP 协议传输数据时,TCP/IP 协议簇也许会将应用层发送的数据分成多个包依次发送,而数据的吸取方收到的数据也许是分段的可能拼接的,以是它必要对吸取的数据举办拆分可能重组。本文会别离从 IP 协媾和 TCP 协议两个角度出发说明为什么应用层写入的数据包会被 TCP/IP 协议拆分发送:

IP 协议会分片传输过大的数据包(Packet)停止物理装备的限定;

TCP 协议会分段传输过大的数据段(Segment)担保传输的靠得住性温次序;

最大传输单位

IP 协议是用于传输数据包的协议,作为收集层协议,它能提供数据的路由和寻址成果,让数据通过收集达到目标地。差异装备之间传输数据前,必要先确定一个 IP 数据包的巨细上限,即最大传输单位(Maximum transmission unit,即 MTU),MTU 是 IP 数据包可以或许传输的数据上限。

MTU 的值不是越大越好,更大的 MTU 意味着更低的特殊开销,更小的 MTU 意味着更低的收集耽误。每一个物理装备都有本身的 MTU,两个主机之间的 MTU 依靠于底层的收集手段,它由整个链路上 MTU 最小的物理装备抉择[^3],如下图所示,收集路径的 MTU 由 MTU 最小的赤色物理装备抉择,即 1000:

为什么 TCP/IP 协议会拆分数据

图 2 - 路径最大传输单位发明

路径最大传输单位发明(Path MTU Discovery,PMTUD)是用来确定两个主机传输路径 MTU 的机制,它的事变道理如下[^4]:

(1) 向目标主机发送 IP 头中 DF 节制位为 1 的数据包,DF 是不分片(Don't Fragment,DF)的缩写;

(2) 路径上的收集装备按照数据包的巨细和本身的 MTU 做出差异的抉择:

假如数据包大于装备的 MTU,就会扬弃数据包并发回一个包括该装备 MTU 的 ICMP 动静;

假如数据包小于装备的 MTU,就会继承向目标主机转达数据包;

(3) 源主机收到 ICMP 动静后,会不绝行使新的 MTU 发送 IP 数据包,直到 IP 数据包到达目标主机;

ICMP 是互联网节制动静协议(Internet Control Message Protocol,ICMP),它能在 IP 主机之间转达节制动静[^5]。

以太网对数据帧的限定一样平常都是 1500 字节[^6],在一样平常环境下,IP 主机的路径 MTU 都是 1500,去掉 IP 首部的 20 字节,假如待传输的数据大于 1480 节,那么该 IP 协议就会将数据包分片传输。

IP 协议数据分片对传输层协议是透明的,假设我们行使 UDP 协议传输 2000 字节的数据,加上 UDP 8 字节的协议头],IP 协议必要传输 2008 字节的数据。如下图所示,当 IP 协议发明待传输的数据大于 1480 字节,就会将数据分成下面的两个数据包:

为什么 TCP/IP 协议会拆分数据

图 3 - 分片传输的 UDP 数据

20 字节 IP 协议头 + 8 字节 UDP 协议头 + 1472 字节数据;

20 字节 IP 协议头 + 528 字节数据;

数据的吸取方在收到数据包时会对分片的数据举办重组,不外由于第二个数据包中不包括 UDP 协议的相干信息,一旦产生丢包,整个 UDP 数据报就无法从头拼装。假如 UDP 数据报必要传输的数据过多,那么 IP 协议就会大量分片,增进了不不变性。

假如 IP 协议没稀有据包巨细的限定,那么上层可以以动静为单元传输数据,天然就不存在分片和组装的需求,不外由于物理装备的 MTU 限定,想要担保数据传输的靠得住性和不变性还必要传输层的共同。

最大分段巨细

TCP 协议是面向字节约的协议,应用层交给 TCP 协议的数据并不会以动静为单元向目标主机发送,应用层交给 TCP 协议发送的数据也许会被拆分到多个数据段中。

TCP 协议引入了最大分段巨细(Maximum segment size,MSS)这一观念,它是 TCP 数据段可以或许携带的数据上限[^8]。在正常环境下,TCP 毗连的 MSS 是 MTU - 40 字节[^9],即 1460 字节;不外假如通讯两边没有指定 MSS 的话,在默认环境下 MSS 的巨细是 536 字节[^10]。

IP 协议的 MTU 是物理设惫亓?限定,它限定了路径可以或许发送数据包的上限,而 TCP 协议的 MSS 是操纵体系内核层面的限定,通讯两边会在三次握手[^11]时确定这次毗连的 MSS。一旦确定了 MSS,TCP 协议就会对应用层交给 TCP 协议发送的数据举办拆分,组成多个数据段。

必要留意的是,IP 协媾和 TCP 协议固然城市对数据举办拆分,可是 IP 协议以数据包(Package)为单元组织数据,而 TCP 协议以数据段(Segment)为单元组织数据。

如下图所示,假如 TCP 毗连的 MSS 是 1460 字节,应用层想要通过 TCP 协议传输 2000 字节的数据,那么 TCP 协议会按照 MSS 将 2000 字节的数据拆分到两个数据段中:

为什么 TCP/IP 协议会拆分数据

图 4 - 分段传输的 TCP 数据

20 字节 IP 头 + 20 字节 TCP 头 + 1460 字节数据;

20 字节 IP 头 + 20 字节 TCP 头 + 540 字节数据;

从应用层的角度来看,两个数据段中 2000 字节的数据组成了发送方想要发送的动静,可是 TCP 协议是面向字节约的,向协议写入的数据会以流的情势转达到对端。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读