问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

TCP分段 & IP分片

发布网友 发布时间:2024-05-02 09:33

我来回答

1个回答

热心网友 时间:2024-07-26 11:42

链路层具有最大传输单元MTU这个特性,*了数据帧的最大长度,不同的网络类型都有一个上限值。如以太网Ethernet II和802.3规范对帧中的数据字段长度都有一个*,其最大值分别是1500和1492个字节。

如果IP层有数据包要传,而且数据包的长度(包括IP头)超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。

这里以Ethernet II 为例,MAC头以下的 IP 数据报最大传输单位为 MTU ( Maximum Transmission Unit),对于大多数使用以太网的局域网来说,MTU=1500 。

Wireshark中看以太网帧的封包格式为:

Frame = Ethernet Header + IPHeader + TCP Header + TCP Segment Data

(1 )Ethernet Header = 14 Byte = Dst Physical Address (6 Byte )+  Src Physical Address (6 Byte )+ Type (2 Byte ),以太网帧头以下称之为数据帧 。

(2 )IP Header = 20 Byte (without options field ),数据在IP 层称为 Datagram ,分片称为 Fragment。

( 3 ) TCP Header

= 20 Byte ( without options field),数据在 TCP 层称为 Stream ,分段称为 Segment( UDP 中称为 Message )。

( 4 ) 54 个字节后为 TCP 数据负载部分( Data Portion ),即应用层用户数据。

TCP自身支持分段,当TCP要传输长度超过MSS(Maxitum Segment Size)的数据时,会先对数据进行分段,正常情况下,MSS小于MTU,因此,TCP一般不会造成IP分片。若数据过大,只会在传输层进行数据分段,到了IP层就不用分片。因此采用TCP协议进行数据传输,是不会造成IP分片的。

HTTP 请求消息一般不会很长,一个网络包就能装得下,但如果其中要提交表单

数据,长度就可能超过一个网络包所能容纳的数据量,比如在博客或者论坛上发表一篇长文就属于这种情况。这种情况下,发送缓冲区中的数据就会超过 MSS 的长度,这时我们当然不需要继续等待后面的数据了。发送缓冲区中的数据会被以 MSS 长度为单位进行拆分,拆分出来的每块数据会被放进单独的网络包中。

根据发送缓冲区中的数据拆分的情况,当判断需要发送这些数据时,就在每一块数据前面加上 TCP 头部,并根据套接字中记录的控制信息标记发送方和接收方的端口号,然后交给 IP 模块来执行发送数据的操作。

TCP 数据包每次能够传输的最大数据分段称为 MSS (Maxitum Segment Size),为了达到最佳的传输效能,在建立 TCP 连接时双方协商 MSS 值,双方提供的 MSS 值的最小值为这次连接的最大 MSS 值。MSS 往往基于 MTU 计算出来,通常 MSS=MTU-sizeof(IP Header)-sizeof(TCP

Header)=1500-20-20=1460 。如

TCP segment len 指出了应用程序数据的大小,即应用层数据经初次封装后的大小。使用wirshark看起内容如下

POST /License/client/ProcessQueryServlet

HTTP/1.1

Host: 172.24.116.249:8050

Connection: keep-alive

Content-Length: 118

Cache-Control: max-age=0

Origin:

http://172.24.116.249:8050

Upgrade-Insecure-Requests:

1

User-Agent: Mozilla/5.0

(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)

Chrome/54.0.2840.99 Safari/537.36

Content-Type:

application/x-www-form-urlencoded

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Referer:

http://172.24.116.249:8050/License/client/PreQueryServlet

Accept-Encoding: gzip,

deflate

Accept-Language:

zh-CN,zh;q=0.8

Cookie:

JSESSIONID=67C7292511815E7AA38CE5B863FC0E02

 

cause=&%E5%AE%A2%E6%88%B7%E5%90%8D%E7%A7%B0=kehumingcheng&%E5%AE%A2%E6%88%B7%E5%8F%B7=kehuhao&query=%E6%9F%A5%E8%AF%A2

上述请求头加上body实体的长度就是776bytes。在nodepad中看如下

TCP/IP 可以使用一些可选参数(protocol option),如加密等,这时头部的长度会

侵占一些MSS空间,则真正用来承载数据的就剩下1500-20-20-12=1448字节了。如

         Tcp建立连接的时候,必须进行三次握手,在前两个握手包中,双方互相声明了自己的MSS。经过握手后,彼此知道自己的MSS,就会自动调整从而适配接收方的MTU。如一个IP包最多可以携带1500-20=1480字节的数据。当要传输的数据块大于1460字节时,TCP层就会把它分段,封装成多个网络包。这样,数据经过本地 TCP 层分段后,交给本地 IP 层,在本地 IP 层就不需要分片了。

       从这一层意义上说,其实TCP无所谓分段,因为每个TCP数据报在组成前其大小就已经被MSS*了,所以TCP数据报的长度是不可能大于MSS的,自然到了IP层的数据报肯定不会超过MTU,当然也就不用分片了。

然而,如果网络上有交换机之类的MTU比发送方和接收方都小,则还会有问题。实际上,在下一跳路由( Next Hop )的邻居路由器上可能发生 IP 分片。因为路由器的网卡的MTU 可能小于需要转发的 IP 数据报的大小。这时候,在路由器上可能发生两种情况:

( 1 )如果源发送端设置了这个 IP 数据包可以分片( May

Fragment , DF=0 ),路由器将 IP 数据报分片后转发。

( 2 )如果源发送端设置了这个 IP 数据报不可以分片( Don’t

Fragment , DF=1 ),路由器将 IP 数据报丢弃,并发送 ICMP 分片错误消息给源发送端。

而对于UDP数据报和ICMP,如果组成的 IP数据报长度超过了1500,那么IP数据报显然就要进行分片,因为它们不能像TCP一样自己进行分段。

UDP和ICMP认为网络层可以传输无限长(实际上有65535的*)的数据,当这两种协议发送数据时,它们不考虑数据长度,仅在其头部添加UDP或ICMP首部,然后直接交给网络层就万事大吉了。接着网络层IP协议对这种“身长头短”的数据进行分片,不要指望IP能很“智能”地识别传给它的数据上层头部在哪里,载荷又在哪里,它会直接将整个的数据切成N个分片,这样做的结果是,只有第一个分片具有UDP或者ICMP首部,而其它分片则没有。因此UDP不会分段,而是由IP来分。

一般IP首部为20字节,UDP或ICMP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据静荷载部分大于1472字节,就会出现分片现象。

       以ping 一个大包 1473字节为例,

icmp包头位于第一个分片中,其余分片只包含ip头和数据。除了最后一个分片,其它分片的数据(除去ip头)必须是8的整数倍。

第一个分片包的有效载荷为:1514-14-20-8=1472,第二个分片包的有效载荷为:35-14-20=1,可见1473大小的数据被分在了两个包里面进行传输。
TCP分段 & IP分片

IP协议分片对数据传输的可靠性和稳定性至关重要。避免IP分片需要TCP协议引入最大分段大小(MSS),定义了TCP数据段能携带的最大数据量,通常为MTU减40字节,即1460字节。在TCP连接中,MSS在三次握手时确定,TCP协议根据MSS将应用层数据拆分成多个数据段。TCP协议面向字节流,应用层数据不会以消息单位发送...

ip动态 - StormProxies

StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效地隐藏用户的真实IP地址,保护用户的隐私和安全。2. 快速响应:StormProxies的动态代理服务器具有快速响应的特点,可以快速响应用户的请求,提高用户的网络访问速度和效率。3. 高度可定制:StormProxies的动态代理服务器可以根据用户的需求进行定制,例如可以根据用户的地理位置、网络带宽、访问频率等因素进行定制。4. 多种协议支持:…StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP纯净高匿;2、覆盖全球20...

IP分片和TCP分段有什么区别?

IP分片和TCP分段的区别 1,MTU(Maximum Transmission Unit,MTU),最大传输单元 (1)以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节。链路层的这个特性称作MTU。不同类型的网络大多数都有一个上限。如果IP层有一个数据要传,且数据的长度比链路层的MTU还大,那么IP...

动图图解!既然IP层会分片,为什么TCP层也还要分段?

尽管IP层会进行数据分片以适应不同网络节点的MTU,TCP层仍然进行分段是为了提高数据传输效率和应对丢包时的重传。TCP分段使得在IP层不需要再分片,避免了大块数据的重传,特别是对于UDP协议,TCP的分段是必要的。然而,整个传输链路中,若MTU变化,IP层可能会在其他节点进行二次分片,这就需要通过PMTU Disco...

TCP分段 & IP分片

TCP自身支持分段,当TCP要传输长度超过MSS(Maxitum Segment Size)的数据时,会先对数据进行分段,正常情况下,MSS小于MTU,因此,TCP一般不会造成IP分片。若数据过大,只会在传输层进行数据分段,到了IP层就不用分片。因此采用TCP协议进行数据传输,是不会造成IP分片的。HTTP 请求消息一般...

IP 分片/MTU 与TCP分段/MSS

TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。 因此TCP报文段很少会发生IP分片的情况 。再来看UDP数据报,由于UDP数据报不会自己进行分段,因此当长度超过了MTU时,会在网络...

tcp分片和ip分片的区别

IP分片产生的原因是网络层的MTU;TCP分段产生原因是MSS IP分片由网络层完成,也在网络层进行重组;TCP分段是在传输层完成,并在传输层进行重组 对于以太网,MSS为1460字节,而MUT往往会大于MSS 故采用TCP协议进行数据传输,是不会造成IP分片的。若数据过大,只会在传输层进行数据分段,到了IP...

TCP/IP 之IP数据报ip分片ip分片过程

在TCP/IP网络中,IP数据报的传输是一个重要环节。本文将深入解析IP数据报的结构,特别是其分片过程以及关键字段的作用。首部结构解析IP数据报首部由固定和可变部分组成,版本号(4位)用于标识协议版本,IPv4用4,IPv6用6。首部长度(4位)指示总长度,最小为20字节(包括固定部分)。服务类型(TOS,8...

TCP UDP 分段 IP分片

udp ip学习博客 3次握手4次挥手 链路层 MTU 最大传输单元 1500 MISS最大分段 TCP 层     数据  ;tcp +Data TCP+MISS+id2 D1<MISS ip +TCP+D1+id2 tcp+D1+id2 tcp一段一段(D1)传 传成功了在传第二段(D2)  数据编号id1 包活计时器  2h &...

TCP/IP 协议难点之一—— IP分片

TCP发送数据时,将大于MSS的数据分段(segment不叫分片),MSS一般为1460.所以,TCP数据包不会在IP层分片。IP头部有3位标志字段,标志是否为分片包。第一位无用,第二位0:允许分片,1:不允许。第三位0:最后一片,1:后面还有分片。13位offset表示偏移,用于IP重组时数据排序,13位因此支持最大IP...

什么是IP分片技术

连接双方会相互通告MSS(Maximum Segment Size,最大报文段长度),MSS一般是MTU—IP首部(20)—TCP首部(20),每次发送的TCP数据都不会超过双方MSS的最小值,所以就保证了IP数据报不会超过MTU,避免了IP分片。参考资料:http://www.cnblogs.com/glacierh/p/3653442.html ...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
抽动症的小孩子应该多吃什么啊? 爬山虎的脚主要讲了爬山虎什么内容? oversize衬衣怎么穿搭 下课后,同学们在操场上做什么? 四川和运机械有限公司公司实力 人体含水量百分比最高的器官是( ) 翡翠玉镯要怎么去识别是不是a货翡翠玉镯真假的鉴别方法 怎么分辨翡翠玉镯的真假 分辨翡翠玉镯真假的方法 我是一位高一女生,快要分班了,语数英三科100以上,物理不及格,化学80... 新异教观点 怎么将微信名片的二维码印到海报上? 我感觉我的身体挺强壮的为什么总是生病呢 月经不调怎么办? 安宁海鲜火锅哪里好吃 怎么设置联想笔记本电脑亮度调到最亮? 联想台式电脑亮度调节怎么弄联想台式电脑亮度怎么调节 结转进项税和销项税分录 电脑边充电边用好吗 经典轩逸轮胎有塑料盘怎么换轮胎 早晨和饭后喝咖啡对身体有没有影响 趣谈中医学中的「三」 ...并列。最早写赋的是战国的 和 ;而汉赋正式形成的第一篇_百度... 矽肺哪些食物不能吃 胃又发酸,胀痛吃什么药好 《和命运做朋友》600字初中作文 从重庆渝北发快递顺丰到河北廊坊大城县,多久可以到达 重庆到河北顺丰快递几天到 如何区分风寒还是风热感冒,症状都差不多。 顺丰快递可以从重庆快递到河北省吗 重庆能发顺丰快递到河北沧州吗? 戚继光驱逐的是哪国侵略者 公敌用五笔怎么打 戚继光驱除的是哪国侵略者 ...这是谁说的话?他所抵抗的是哪国侵略者的侵略? 戚继光驱逐的是那个国家 明代抗倭明将戚继光驱逐的是什么 成都市记者一般收入多少? 成都记者待遇如何? 上市半年降11万,捷豹XEL喜获"年度跳水王",入手不足18万! 懔的生僻字组词 x5效果器怎么接三台功放 我喜欢钻牛角尖怎么办我男朋友很讨厌我钻牛角尖 可是我忍不住怎么办... 无声掌是谁交给郭靖的? 射雕英雄传里,写到的三大美食,仅以缅怀金庸先生! 高速照相机哪家好? 我有两枚美能达胶片相机时用过的28-70/70-210的镜头,现在的数码相机中那... 美能达胶卷相机的长焦镜头能和什么样的数码相机相配 我国为改善农业生产条件,增加农业投入的重要途径有 美能达镜头能配什么数码相机? 俄罗斯的朋友去美国工作可以逗留多久?
  • 焦点

最新推荐

猜你喜欢

热门推荐