IP数据报的分片与重组
最大传输单元:不同的网络由于链路层和介质的物理特性不同,因此在进行数据传输时,对数据帧的最大长度都有一个限制,这个限制值叫最大传输单元(Maximum Transmission Unit, MTU)。如果两台主机之间的通信要通过多个具有不同MTU值的网络,那么重要的不是两台主机所在网络的MTU值,而是两台通信主机路径上最小的MTU值,它被称作路径MTU。
网络名称 |
MTU(单位:Byte) |
以太网 |
1500 |
IEEE 802.3/802.2 |
1492 |
FDDI |
4352 |
ATM(信元) |
48 |
X.25 |
576 |
点到点(低延时) |
296 |
令牌环网(IBM 16MB/s) |
17914 |
令牌环网(IEEE 802.5 IBM 16MB/s) |
4464 |
分片
当一个IP数据报要通过链路层进行传输时,如果IP数据报的长度比链路层MTU的值大,那么IP层就需要对将要发送的IP数据报进行分片,把一个IP数据报分成若干个长度小于或等于链路层的MTU的IP数据报,才能经过链路层进行传输。这种为了适合网络传输而把一个数据报分成多个数据报的过程,叫分片(fragmentation)。分片后的各个IP数据报,可能经过不同的路径到达目标主机。
IP数据报头
注:分片后的IP数据报,数据区所示的原IP数据报数据区的一个连续部分。头部是原IP数据报头区的复制,但与原来未分片的IP数据报头部有以下两点不同:
(1)标志。在IP数据报的头部,有一个叫标志的字段,用3位二进制数表示。
不分片(Do Not Fragment , DF)标志如果被置1,则数据报在传输工程中不能被分片。
片未完(More Fragment , MF)标志被置1时,说明该数据报不是分片后的第一个数据报,最后一个数据报的该位被置0.
(2)片偏移
IP数据报被分成3片之后,各片数据区在原来IP数据区中的位置用13位片偏移表示。假设标志域返回1,则此域包括本片数据在原IP数据报数据区中的偏移量。
(3)重组
当分了片的IP数据报被传输到最终目标主机时,目标主机要对收到的各分片重新进行组装,以恢复成源主机发送时的IP数据报,这个过程叫做IP数据报的重组。
IP数据报选项
IP数据报选项主要由两大功能:一是可以用来实现对数据报传输过程的控制。二是进行网络测试。
IP选择域共分4大类:
选项类 |
用途 |
选项号 |
长度 |
功能 |
0类 |
数据报或网络控制 |
0 |
- |
IP数据报头中的任选项域结束 |
1 |
- |
无操作 |
2 |
11Byte |
安全和处理限制(用于军事领域) |
3 |
可变 |
设置宽松源路由选择 |
7 |
可变 |
记录数据报经过的路由 |
9 |
可变 |
设置严格源路由选择 |
1类 |
- |
2类 |
调试和测量 |
|
可变 |
记录Internet时戳 |
3类 |
未用 |
|
IP数据报选择由3部分组成:选项码,选项长度和选项数据。选项码和选项长度各占一个字节,选项长度用于确定选项部分的长度。
(1)复制:占一位,用来控制一个带有选项的IP数据报被分片时,分片后对选项的处理方式。如果该位被置1,将选项复制到所有分片中;被置0,将选项仅复制到第一个分片中。
(2)选项类和选项号:选项类占两位,选项号占5位,用于确定该选项是哪类选项中的哪个选项,其实就是用于确定该项的功能。
分享到:
相关推荐
《TCP/IP网络编程》尹圣雨 例程源码
《tcp/ip高效编程:改善网络程序的44个技巧》是tcp/ip 领域的经典著作,对tcp/ip 网络编程中存在的各种问题进行了全面解析,旨在帮助读者深入透彻地理解tcp/ip 网络编程。本书组织方式比较特别,正文部分包括4 章,将...
内容概要:主要收录了《TCP/IP网络编程》这本书每个章节内容所用到的代码,可以直接运行(是C语言文件,最好在Linux系统中运行使用) 适合人群:有一定编程语言基础,网络编程方面零基础也可学习 能学到什么:结合...
TCP/IP网络编程课件,关于网络编程的详细介绍。
详细讲解tcp/ip技术及底层网络编程技术,还包括一些示例代码
基于VC的TCP/IP网络编程,实现基本的接收功能。
1.1 Internet中的“世界语”——TCP/IP协议 1.2 TCP/IP协议的体系结构 1.3 TCP/IP协议的工作过程 习题
tcp/ip网络环境编程ppt,某所大学课程。
实现了服务器与客户端功能的合二为一,客户端启动后,连接三次服务器,如果失败,则自己自动变为服务器。
TCP/IP SOCKET 网络编程 多模式I/O网络开发
TCP/IP高效编程: 改善网络程序的44个技巧 (高清带书签)
W.Richard Stevens(1951-1999)是一位非常受人尊敬的专家,除了《TCP/IP详解》三卷本外,他还有其他两部最为畅销的作品:《UNIX环境高级编程》和《UNIX网络编程》(两卷本)。 目录 译者序 前言 第1章 概述 1 ...
网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给另外一个设备,然后接受另外一个设备反馈的数据。现在的网络编程...
基于TCP_IP协议的网络编程 C++ 调用windows api函数
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket...《Java TCP/IP Socket编程(原书第2版)》适合作为Java Socket编程的入门教程,也可供从事网络相关专业的技术人员参考。
TCP/IP网络中最常用的传输协议TCP和UDP。传输层通常以TCP和UDP协议来控制端点到端点的通信。Socket定义了通信的端点,是由IP地址和端口号组成。JAVA语言已经成为现今网络应用中最广泛的语言,本文就是介绍JAVA中的...
本书以通俗易懂的语言详细介绍了TCP/IP及其工作原理,以简单明了的编程实例全面介绍了基于Winsock的网络程序设计技术
上篇主要介绍TCP/IP协议簇中的常用协议,下篇专门介绍网络编程知识与技能。 (2)具体在编写每一节的内容时将原理知识与实用技能融为一体。以方便读者学习。 (3)考虑到TCP/IP协议比较抽象,学习起来有一定的难度,...
利用TCP/IP进行网络间通信,利用客户端给服务器端发数据,服务器端进行处理并返回处理结果