原文地址:http://www.cnitblog.com/donne/archive/2010/12/23/72500.aspx
IP分片 在以太网上,由于电气限制,一帧不能超过1518字节,除去以太网帧头14字节(mac地址等)和帧尾4字节校验,还剩1500字节,这个大小称为MTU(最大传输单元)。
如果你的IP包大于1500字节,IP层就会分片了。 而1492的MTU值的来源,是因为PPPoE协议。PPP协议是宽带运营商用于对用户认证计费的(TCP/IP以太网无此功能)。PPPoE头尾一共8字节,所以有效载荷MTU变小了,原来有1500字节,现在只剩1492了。
这1492还包含20字节IP头,8字节UDP头或者20字节TCP头。所以真正的不分片数据,
UDP为1492-28=1464,
TCP为1492-40=1452字节。
TCP的确是流的,所以TCP一个包可以包含的数据大小为65536(包头长度定义为2字节).a向b连续发送数据,b在每次接受到数据大小大于其低水位后,你的recv就会返回(假设是阻塞模式),并得到数据长度。当然你要持续接受和处理数据。
如果实际数据大于1452字节,IP会分片,但IP也会重组分片,所以还是一次recv就可以收到(不一定全,但跟分片无关)。 如果一个分片丢失,则整个TCP包都会重发,因为IP层不会将没收完的分片交给传输层。 ACK确认的时机,是收到了就会确认上一次的完整包的TCP序列号,如果不完整当然要等收完整,也不会交互到应用层,也不会发送ACK确认(可以通过3次确认上一个完整的序列号以让发送方快传)。 握手协商和ACK TCP在发起3次握手时,会协商MSS(最大分节大小),这个值一般是路径最小MTU-IP头-TCP头,如果MTU是1500,则1500-20-20=1460字节。这样,每个包就不用IP层再分片了。所以你发2000字节,你调用一次send,如果发送缓冲区移动窗口够大,应该会全部成功。否则,会返回实际发送的字节。假设2000字节全部成功,tcp实际会将其分为1460和540两个包发送,接受端接受到1460这个包就会回一次ACK,接到540大小这个再ACK一次。每个分节都带有IP头和TCP头的。 IP分片只有第一个带有传输层头,其余的分片只有IP头。
相关推荐
本文将深入分析TCP数据包的结构及其各部分的作用,并结合实例进行详细解释。 #### 二、数据包结构 TCP/IP数据包结构主要包括以下几个部分: 1. **以太网头部(Ethernet Header)** - **目的MAC地址**:6字节,...
5. 重组标识(16位):发送主机赋予的标识,以便接收方进行分片重组。 6. 标志(3位):包括保留段位、不分段位和更多段位三个字段。 7. 段偏移量(13位):与更多段位组合,帮助接收方组合分段的报文,以字节为...
- **DF(Don’t Fragment)**:如果设置了该位,则表示不允许对数据报进行分片。 - **片段偏移量(Fragment Offset)**:占13位,表示当前片段相对于原数据报起始处的位置。 - **生存时间(TTL)**:占8位,用于...
IP分片用于解决不同网络设备MTU(最大传输单元)限制的问题,而IP多播则允许单个数据包被同时发送到多个目的地,常用于多媒体广播和组播通信。 网络编程部分,书中涵盖了套接字编程的基础知识,如如何创建、绑定、...
此外,还会涉及IP分片与重组,以及IP选项的处理。 UDP(用户数据报协议)是无连接的,提供简单高效的服务,适用于实时应用。源码解析将讲解如何创建和发送UDP数据报,以及如何处理接收到的数据报。UDP没有连接状态...
11. **路由与IP分片**:网络层的路由器根据IP地址决定数据包的路径。如果数据包过大,无法通过某些网络,IP协议会将其分片,然后在目的地重组。 12. **ICMP协议**:Internet控制消息协议用于网络诊断,如发送错误...
源码会展示分片的标志和序列号如何设置,以及接收端如何正确重组分片数据包。 6. **ICMP协议**:互联网控制消息协议用于错误报告和网络诊断,如ping命令就是基于ICMP。源码会展示如何处理ICMP报文,如超时、不可达...
TCP/IP详解不仅涉及以上基本概念,还包括端口号、IP地址、子网掩码、MAC地址、TCP三次握手和四次挥手、TCP滑动窗口、IP分片与重组、ARP(地址解析协议)和RARP(反向地址解析协议)等深入知识点。理解并掌握TCP/IP...
7. **IP分片与重组**:当数据包过大无法通过某些网络时,IP层会进行分片处理,到达目的地后,接收方根据IP头部的标识符和序列号进行重组。 8. **TCP流量控制与拥塞控制**:TCP使用滑动窗口机制进行流量控制,防止...
IP协议部分讲解了IP数据报的封装、分片与重组、IP路由以及IP服务类型等内容。此外,书中的ARP(地址解析协议)和RARP(反向地址解析协议)也是网络层的重要组成部分,它们负责将物理地址与IP地址进行相互转换。 TCP...
值得注意的是,为了更好地理解这些数据包,建议阅读《TCP-IP详解卷1:协议》,该书详细介绍了TCP/IP协议族的相关知识,是进行深入学习和研究的基础。 ### 结论 TCP/IP数据包的截取与分析是一项重要的技能,尤其是...
11. **IP分片与重组**:由于不同网络的MTU(最大传输单元)可能不同,大的IP数据包可能需要在发送端被分片,在接收端再进行重组。 12. **ARP(地址解析协议)与RARP(逆地址解析协议)**:ARP用于通过IP地址查找MAC...
7. **IP分片与重组**:当IP包过大无法通过某个网络的MTU(最大传输单元)时,IP协议会将数据包分片发送,然后在目的地重组。 8. **IP地址与子网掩码**:IP地址用于标识网络中的唯一设备,子网掩码则用于确定IP地址...
书中的内容不仅涵盖了这些基础知识,还会深入探讨TCP的连接建立与释放(三次握手和四次挥手)、拥塞控制、滑动窗口机制、IP的分片与重组、DNS(域名系统)的工作原理、ARP(地址解析协议)以及子网划分等高级主题。...
网络层和传输层的其他协议可能还包括IGMP(Internet组管理协议)用于多播、PMTUD(路径MTU发现)用于避免数据包分片等。这些协议的源代码实现可以帮助读者理解它们在网络通信中的作用和工作原理。 通过阅读和分析这...
卷2的内容可能包括TCP的连接管理、拥塞控制、重传策略以及IP层的分片和重组、ICMP(Internet Control Message Protocol,互联网控制消息协议)等。连接管理涉及TCP的建立、维护和终止过程,拥塞控制则涉及网络拥塞时...
例如,TCP的三次握手和四次挥手过程、拥塞控制机制、滑动窗口协议、IP的分片与重组等。 《卷二:实现》则更加注重实践,讲述了如何在Unix系统中实现这些协议。书中详细剖析了TCP/IP协议栈的内部工作机制,包括进程...
书中详细阐述了TCP连接的建立与释放、IP的分片与重组、网络层和传输层的交互,以及TCP的各种机制如超时重传、滑动窗口、拥塞控制等。此外,还会涉及端口的概念,以及如何利用socket接口进行TCP/IP编程,包括服务器端...