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

作者&投稿:宿壮 (若有异议请与网页底部的电邮联系)
~ 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方:

其实协议本身根据《TCP/IP详解卷1》理解起来并不难,但是实现起来就很难:数据的操作,标志位的设置,网络状态的变换,中断多线程通讯等等;

在下图的七层网络协议参考模型中,IP层属于网络层,网络层最主要的作用就是:将指定IP的数据报传输到对应的主机。

下图是以太帧封装格式(RFC 894),RFC 894封装格式也是我们最常用的。

下面做个简单介绍:

下面再看看数据部分:IP数据报

图中从左到右为0~31位,共四个字节,从上到下依次增长,IP头部占20字节,剩下的为数据,如果传输层为TCP则还有20字节的TCP头部,如果是UDP则还有8字节(如果分片的话,中间的包没有UDP头部,即0字节)的UDP头部。剩下的才是真正的用户要传送的数据。可以看出传送同样多的数据,UDP协议要比TCP传送的数据多,但从这一点来说UDP速度也要比TCP快。

下面对一些字段做个简单介绍:

从上面的介绍我们知道,一个以太帧最大为1518字节
(14字节以太首部,20字节IP首部,UDP8/TCP20,因此IP包每次最大为1500==MTU。去掉协议头UDP有效数据1472字节,TCP为1460字节。还有最后的4字节CRC),但是一个IP数据报则可能会有8192字节,超过以太帧的最大限制,那么这时就需要IP分片,分批进行传输。

发送方会在IP层将要发送的数据分成多个数据包分批发送,而接收方则将数据按照顺序再从新组织起来,等接收到一个完整的数据报之后,然后再提交给上一层传输层。

我们知道,协议本身并没有对数据在各个层中间怎么传递做出要求,比如嵌入式实现和BSD实现就不太一样,因为嵌入式内存比较少,数据在层与层之间传递时会尽量避免数据拷贝,而只是指针的操作。下面我们以嵌入式中用的比较多的LwIP举例

LwIP允许的最大IP由如下决定: IP_REASS_MAX_PBUFS 决定IP分片允许最大pbuf数量, IP_REASS_MAXAGE 分片的生存时间,超过则错误并将之前接收的IP分片丢弃。

如果数据大于 IP_REASS_MAX_PBUFS 则有两种选择,一,直接删除数据返回;二,是删除生存时间最长的IP分片PBUF,这个通过 IP_REASS_FREE_OLDEST 来使能。

当为UDP协议时,如果缓冲区描述符大小小于完整的IP数据包,IP分片数据包到来时,很快将描述符耗尽,后来的IP包由于无缓冲区描述符而丢弃,UDP没有重传机制,很可能永远不会接收到完整的IP分片包。从而大于 IP_REASS_MAXAGE 出现错误,因此缓冲区描述符也应增大以适应IP分片重装。

TCP发送数据时,将大于MSS的数据分段(segment不叫分片),MSS一般为1460.所以,TCP数据包不会在IP层分片。

IP头部有3位标志字段,标志是否为分片包。第一位无用,第二位0:允许分片,1:不允许。第三位0:最后一片,1:后面还有分片。13位offset表示偏移,用于IP重组时数据排序,13位因此支持最大IP数据包为8192字节。

标准的BSD协议实现如下图所示,采用两个结构体,IPQ为表头,将各个IP分片表头连接起来,并存储IP信息。Ipasfrag为具体的分片数据。


cp是什么意思,为什么叫cp
这个词就有夫妻、配对的意思。最原始这个词其实来自于日本,准确来说是来自日本动漫,大家喜欢把动漫中彼此有密切关联、特别是有情侣关系、恋爱关系的一队人物称为“xxcp”,比如我们都知道的“新兰cp”。慢慢这个词也从二次元来到三次元,现实中的情侣或者夫妻也可以用“某某c...

一对cp什么意思是什么
一对cp流行于网络,一般是观众给自己所喜欢的荧屏上的情侣的称呼,一般都是假想的情侣或者夫妇。CP是英文单词couple的缩写,意思是夫妻,一对夫妇的意思。cauple就是配对,就是一对一对的,经常表示一男一女。游戏爱好者和漫画爱好者,会把游戏里和故事里自己所喜欢的角色进行夫妻配对。举个例子来说,...

什么是cp
CP,是英文单词couple的缩略词,意思是指夫妇、夫妻、情侣这类。而且在生活中人们经常会将两个互不相连的人称为cp,近年来在其他场合中也开始广泛使用,通常来说这种配对并不是我们常规意义上理解的“他们本身就是一对”的说法,而更多情况下只是别人的幻想而已。此外,CP还是一种王道组合的意思,在韩国...

CP的全称是什么
CP的全称是couple。CP是英语中couple的缩写,意思是夫妻,一对配偶的意思。cauple即是配对,即是一对一对的,常常表明一男一女。CP盛行于网络,通常是观众给自个所喜爱的荧屏上的情侣的称号,通常都是想象的情侣或许配偶。酷爱游戏和动漫的童鞋,也会把游戏里和故事里自个所喜爱的人物进行夫妻配对。举...

cp算情侣吗
cp不算是情侣,CP流行于网络,是观众给自己所喜欢的荧屏上的情侣的称呼,一般都是假想的情侣或者夫妇。CP之说在中文同人圈中也流行开来,其含义也越来越广泛,并且不仅限于二次元同人,在三次元的多种场合中也开始频繁出现。但是CP一词从根本上讲只是一种同人用语。在日本,CP使用场合也基本较多地只...

cp是什么意思?(通俗一点)
CP的意思 CP是一个网络流行词,在不同的语境中有不同的含义。一般来说,CP是英文单词“Coupling”的缩写,意为配对、情侣等。在网络世界,尤其是社交媒体和粉丝文化中,CP通常指的是一对被大家认可并喜爱的角色组合或人物配对。这种配对可以是影视角色、小说人物,甚至是现实生活中的明星情侣。详细解释 ...

cp是什么意思网络用语
1. "CP"的意思是配对,源于英语"couple"的缩写,代表夫妻或一对配偶。2. "CP"在网络中流行,通常是指观众给喜欢的荧幕情侣起的昵称,他们可能是虚构的情侣或配偶。3. "CP"还有一种含义是"王道组合",在韩国娱乐圈中,指的是公司规定的官方配对。4. "CP"的起源是日本ACGN同人圈,同人作者在创作...

CP是什么意思?
深入探索,CP源于英文Coupling或Couple的缩写,进一步在日本文化中发展为カプ,即配对或情侣的概念。它可以涵盖各种角色关系,如男女、女女、男妖、女妖、妖妖,甚至是人与物之间的组合,极具创意和想象力。在中文圈和深受日式文化影响的ACG圈中,CP被赋予了Character Pairing的解释,但这一用法并非源自西方...

cp和情侣的区别
CP是指“亲密伴侣”的缩写,主要指两个人关系很亲密、关系深厚、感情很好的一种关系,但不一定是恋爱关系。可以是很好的朋友、亲密的同事、亲密的家人等,他们之间的亲密关系强调情感的连接和支持,但没有浪漫和性爱方面的特征。CP关系通常是建立在共同兴趣、互相关心、信任和非常信赖的基础上。而情侣关系...

情侣cp是什么意思
在网络语境中,CP是“Character Pairing”的缩写,意思是角色配对。情侣CP则是指两个人之间具有情侣关系的配对。这种关系可能是基于影视剧、综艺节目中的虚构情节,也可以是现实生活中真实存在的恋爱关系。2. 情侣CP的来源 情侣CP的概念主要来源于影视剧和娱乐行业。在影视作品中,制作方常常会将两个角色...

浔阳区19125409312: 47.试简述通信协议的特点. -
陀宰双黄: 目前常见的通信协议主要有:NetBEUI、IPX/SPX、NWLink、TCP/IP,在这几种协议中用得最多、最为复杂的当然还是TCP/IP协议,最为简单的是NetBEUI协议,它简单得不需要任何设置即可成功配置. 1、 NetBEUI协议 NetBEUI协议它的全称...

浔阳区19125409312: TCP/IP参考模型与OSI/RM相比的优点何不?
陀宰双黄: TCP/IP的主要优点:1)简单、灵活、易于实现2)充分考虑不同用户的需求TCP/IP主要缺点:1)没有明显地区分出协议、接口和服务的概念2)不通用,只能描述它本身3)主机-网络层只是个接口4)不区分物理层和数据链路层5)有缺陷的协议很难被替换

浔阳区19125409312: 本地连接没有有效的IP配置未修复求讲解
陀宰双黄: 希望对你有帮助!本地连接--属性--单击IN协议(TCP/IP)--属性--点击使用下面的IP地址192.168.1.13(最后一个可以填2-200内的任意)255.255.255.0(点一下自动出来)192.168.1.1

浔阳区19125409312: TCP/IP协议怎么设置,知道协议的配置是错误该怎么修改?
陀宰双黄: 1.右键网上邻居属性2.右键本地连接属性3.单击TCP/IP属性4.进入界面 输入IP地址,掩码一般为255.255.255.0输入网关,输入DNS服务器地址5.确定,完成

浔阳区19125409312: TCP/IP参考模型的传输层和应用层的主要设备各是什么?! -
陀宰双黄: TCP/IP参考模型 TCP/IP协议的开发研制人员将Internet分为五个层次以便于理解,它也称为互联网分层模型或互联网分层参考模型,如下表: 应用层(第五层) 传输层(第四层) 互联网层(第三层) 网络接口层(第二层...

浔阳区19125409312: TCP/IP协议是什么?IP、ICMP和RARP协议有什?
陀宰双黄: TCP/IP(Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/互联网络协议)协议是Internet最基本的协议,简单地说,就是由底层的IP协议和...

浔阳区19125409312: 你知道什么叫TCP/IP技巧?它的物理层用的是几M的光纤?
陀宰双黄: 1建立在传输层协定上的抽象数据构造socket作为收集中数据交换的列队点,是TCP/IP收集最为通用的API.文┞仿在介绍TCP协定客户端和办事器端过程通信流程和具体实现的基本上,以Delphi情况为编程说话说清楚明了在Windows下应用socket...

浔阳区19125409312: TCP/IP是一个工业化标准而非国际化标准????判断:
陀宰双黄: TCP/IP是一个工业化标准而非国际化标准 对TCP/IP不符合国际标准化组织的标准 错TCP/IP中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的.TCP/IP协议作为因特网上所有主机间的共同协议,从此以后被作为一种必须遵守的规则被肯定和应用.正是由于TCP/IP协议,才有今天“地球村”因特网的巨大发展

浔阳区19125409312: TCP/IP的各种协议都有端口号码?
陀宰双黄: 不都有,只有应用层协议才有.因为应用层到传输层会加上一个传输层报头,其中包含端口号.TCP/IP协议分四层(五层也可),其中应用层识别进程,协议当中会包含进程号;传输层负责端到端传输,会为上层协议加上报头,其中包含端口号;网络层主要负责传输路径,所以包含IP地址;数据链路层负责无错误透明传输数据帧,故有MAC地址.可以随时追问,祝你好运~

浔阳区19125409312: 以下有关internet说法不正确的是()
陀宰双黄: 这个问题很简单! 二者是一个不可分割的整体协议,分别为网络层和传输层,相互依存,不能分开读的.解释如下 TransmissionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网