当前位置:文档之家› IP协议及包头格式

IP协议及包头格式

Internet协议(Internet Protocol)

1. 介绍

1.1. 产生原因

IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之前传送一种称之为数据报的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。

1.2. 范围

IP的责任就是把数据从源传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协议来说很普通的服务。

1.3. 接口

这个协议由主机到主机协议调用,而此协议负责调用本地网络协议将数据报传送以下一个网关或目的主机。例如TCP可以调用IP协议,在调用时传送目的地址和源地址作为参数,IP形成数据报并调用本地网络(协议)接口传送数据报。

1.4. 操作

IP实现两个基本功能:寻址和分段。IP可以根据数据报报头中包括的目的地址将数据报传送到目的地址,在此过程中IP负责选择传送的道路,这种选择道路称为路由功能。如果有些网络内只能传送小数据报,IP可以将数据报重新组装并在报头域内注明。IP模块中包括这些基本功能,这些模块存在于网络中的每台主机和网关上,而且这些模块(特别在网关上)有路由选择和其它服务功能。对IP来说,数据报之间没有什么联系,对IP不好说什么连接或逻辑链路。

IP使用四个关键技术提供服务:服务类型,生存时间,选项和报头校验码。服务类型指希望得到的服务质量。服务类型是一个参数集,这此参数是Internet 能够提供服务的代表。这种服务类型由网关使用,用于在特定的网络,或是用于下下一个要经过的网络,或是下一个要对这个数据报进行路由的网关上选择实际的传送参数。生存时间是数据报可以生存的时间上限。它由发送者设置,由经过路由的地方处理。如果未到达时生存时间为零,抛弃此数据报。对于控制函数来说选项是重要的,但对于通常的通信来说它没有存在的必要。选项包括时间戳,安全和特殊路由。报头校验码保证数据的正确传输。如果校验出错,抛弃整个数据报。

IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。

2. 总览

2.1. 与其它协议的联系

下图显示了IP协议在协议体系中的位置。

IP上下有两个接口,一个是与主机与主机协议的接口,另一个是与本地网络的接口,本地网络可以是小型网络也可以大型网络,说不定的。

2.2. 操作模式

下面的例子可以看到操作的模型是什么。我们假设传输要经过中间网关。传送进程调用本地IP模块传送数据,同时传送目的地址和其它参数作为调用参数。IP 层准备数据报头并把它加在需要传送的数据之前。IP模块为这个网络地址决定一个本地网络地址,在这里就是网关地址。IP传送数据报和本地网络地址到网络接口。本地网络接口创建一个本地网络头加在数据报上,然后向本地网络发送。

加上本地网络头的数据报到达网关后,本地网络接口去掉这个头,将结果传送给(网关上的)IP模块。这个IP模块决定决定目的主要的本地网络地址,然后再如上所述的过程传送数据报到本地网络接口。这个本地网络接口创建一个本地网络头加在数据报上,将数据报传送到目的主机。在目的主机上,本地网络接口去掉数据报上的本地网络头,将结果交给IP模块。IP模块决定数据报应该把数据报向哪一个应用程序传送,系统会发出系统调用,IP模块返回源地址和其它参数。

2.3. 功能描述

IP的功能就是把数据报在互联的网络上传送,通过将数据报在一个个IP模块间传送直到目的模块来达到目的。网络中每个主机和网关上都有IP模块。数据报在一个个模块间通过路由处理网络地址传送到目的地址。因此网络地址对于IP 协议十分重要。如前所述,因为各个网络上的数据报大小可能不同,因此有必要对大的数据报进行分段。

寻址

名字,地址和路由是有区别的,名字是我们要找的,地址指出这个名字在什么地方,路由解决如何到那里的问题。IP主要处理地址的问题。把名字和地址进行映射的工作由上层协议完成。IP模块将地址和本地网络地址加以映射,而将本地网络地址和路由进行映射则是低层协议的任务。

地址是32位长,由网络号和本地地址两部分构成。地址有三类:A类的最高位为0,后7位表示网络号,其它的24位表示本地地址;B类前两位为10,后14位表示网络地址,其它16位表示本地地址;C类三位为110,后21位是网络号,其它8位代表本地地址。

在将网络地址和本地网络地址进行映射时必须注意,有些主机可能使用几个不同的IP地址(我们可以把本地网络地址理解为MAC地址)。我们必须能够处理一台主机有几个处理端口,而每个端口都有几个逻辑的IP地址。

分段

对于不同的网络,其中传送的包大小可能不一样,因此把大包分小的功能是必须的。数据报也可以被标记为“不可分段”,如果一个数据报被如何标记了,那么在任何情况下都不准对它进行分段。如果不分段到不了目的地,那就把包在半路抛弃了。在本地网内进行的重新分段和重组对IP模块是不可见的,这种方法也可以使用。

本地网分段和重组把重组的各段加上标记,接收方使用这些标记使不同的段区别开来。段偏移量域告诉接收方应该把这一段放在什么地方,多段标记指示最后一个段,利用不同的域完全可以重组一个数据报。标记域是用于唯一标记数据报的,

它是最初的发送方设置,而且要保证数据报在网络传输的全过程中它中唯一的。最初的发送方把多段标记设置为零,段偏移量设置为零。

我们假设IP模块把一个大数据报分为两个小的,IP模块首先取得数据报头,再分隔数据为两份,将数据报头加在两份数据上。分隔数据时以8个字节为单位,第二段不一定是8个字节,但第一个必须是。我们把第一段中的8位字节数称为段块数(NFB)。新生成的第一个数据报内是生成的第一段数据,设置多段标记为1;新生成的第二个数据报内是生成的第二段数据,多段标记等于原来数据报内的值,段偏移量等于原数据报中的值加上NFB。上述过程可以从2扩展至N的情况。

对段的重组要求以下四个域有相同的值:标记,源地址,目标地址和协议。将不同的数据报根据自己带的偏移量重新组合为新段,第一个段的偏移量为0,最后一个段的多段标记为0。

2.4. 网关

网关在不同网络间传送数据报,网关也实现网关到网关协议(GGP),它用于传送路由和其它控制信息。网关中的高层协议根本不用实现,GGP的功能可以在IP 模块内实现。

3. 说明

3.1. Internet包头格式

包头格式如下:

版本:4位

此域标明包头的格式。我们现在说明的是IP版本4。

IHL:4位

Internet包头长度是以32位为单位标记的包头长度,它指向数据的开始位置,这个域的最小合法值为5。

服务类型:8位

它是一些指示服务质量的参数,这些参数用于在特定网络指示所需要的服务。有些网络会提供优先级服务。选择的基本原则是以下三者的权衡:低延时,高可靠和高吞吐量。

0-2: 优先级

3: 0 = 通常延时 1 = 低延时

4: 0 = 通常吞吐量 1 = 高吞吐量

5: 0 = 通常可靠性 1 = 高可靠性

6-7: 保留

优先级的说明如下:

111 - Network Control

110 - Internetwork Control

101 - CRITIC/ECP

100 - Flash Override

011 - Flash

010 - Immediate

001 - Priority

000 - Routine

如果使用了延时(D),吞吐量(T)和可靠性(R)选项可以增加服务质量。这因各个网络不同而不同,没有通用性。除了非常特殊的情况外,最多设置两个参数就够了。服务类型是用来指示如何对待在网络中传送的数据报。网络控制优先级原来是用于一个网络中的,而实际中却应用于每个网络了。互联控制是用于网关控制的。如果只在一个网络中实现了这些参数,那个网络必须在自己的范围之内控制对它们的访问。

总长度:16位

总长度指的是数据报的长度,由字节计,包括数据和报头。允许数据报的大小为64K。这么大的数据报对大多数主机和网络来说是不适用的。但是,所有主机必须能够接收大于576字节的数据报,无论它们是一起来,还是分段来。如果知道对方主机能够接收大于576字节的数据报,最好在发送时不要发送小于576字节的数据报。选择576是因为576=512(数据)+64(报头)。报头最长不超过60字节,通常为20字节。

标识:16位

标记是发送用于帮助重组分段的包的。

标记:3位

0: 保留,必须为0

1: (DF) 0 = 可分段,1 = 不可分段

Bit 2: (MF) 0 = 最后一段,1 = 还有多段

段偏移:13位

此域指示这个段在应该在数据报中什么位置,它以64位为单位计算,首段的偏移为零。

生存期:8位

此域说明数据报在互联网系统生存的最大时间。如果此域的值为零,抛弃此数据报。在处理报头的同时也处理此域。时间以秒计,但每个处理单元都至少会对TTL减一,即使时间小于一秒。

协议:8位

此域指示用于数据报数据部分的下一层协议。

头校验码:16位

校验码只在头部,因此头域会在处理时改变,因此头会经常改变。这种校验方法比较容易计算,实验证明它也是适用的,但它可能在未来被CRC校验过程取代。

源地址和目的地址:32位,具体情况请看下文。

选项:长度不定

在数据报中可以有选项也可以没有,但IP模块中必须有处理选项的功能。有些情况下,安全选项是必须的。它的长度不定,可以没有也可以是多个。选项有两种格式:

1: 单独一个选项类型字节

2: 一个选项类型字节,一个选项长度字节和实际选项数据字节

选项长度是选项类型,长度本身和数据的长度。选项类型可被看作有3个域:1位复制标记

2位选项类

5位选项号

复制标记指这个选项要在分段是要存在于所有段中。

0 = 不复制

1 = 复制

选项类有:

0 = 控制

1 = 保留

2 = 调度和测量

3 = 保留

下面是具体选项:

2 4 变长Internet时间戳

特定选项定义

选项表结束

+--------+

|00000000|

+--------+

Type=0

此选项指示选项表的结束,它不一定和报头结束点一致,它用于指示选项表的结束而不是每个选项的结束,只有当选项表结束位置和报头结束位置不一致时使用。它可以被复制,引入或在分段时删除。

无操作

+--------+

|00000001|

+--------+

Type=1

此选项可被用于选项间,它可以被复制,引入或在分段时删除。

安全

此选项提供主机一种发送安全,compartmentation,处理限制和TCC参数的方法。此选项的格式如下:

类型=130 长度=11

安全(S域):16位

安全共分16级,8级保留。

00000000 00000000 - 未分类的

11110001 00110101 - 机密

01111000 10011010 - EFTO

10111100 01001101 - MMMM

01011110 00100110 - PROG

10101111 00010011 - 限制的

11010111 10001000 - 秘密

01101011 11000101 - 绝对机密

00110101 11100010 - 保留

10011010 11110001 - 保留

01001101 01111000 - 保留

00100100 10111101 - 保留

00010011 01011110 - 保留

10001001 10101111 - 保留

11000100 11010110 - 保留

11100010 01101011 - 保留

Compartments(C域):16位

全0代表传送的信息是非compartment的。

处理限制(H域):16位

控制值和版本标记是由字母和数字组成的,具体说明请参阅其它资料。

传输控制码(TCC域):24位

提供控制流量的方法。TCC的值为三字母词,在HQ DCA Code 530中有说明。在分段时必须复制它。

松源地址和记录路由

+--------+--------+--------+---------//--------+

|10000011| length | pointer| route data |

+--------+--------+--------+---------//--------+

Type=131

松源地址和记录路由(LSRR)可以由源地址提供路由信息,并记录路由信息。这个选项以选项类型码开始。第二位是选项长度,第三位是一个指针,指向路由数据中下一个要被处理的源地址,它的最小值为4。路由数据是由一系列地址组成的,每个地址是32位。如果指针大于长度,源路由为空(记录的路由满),路由要根据目的地址域进行。

如果目的地址已经达到,而指针未大于长度,源路由中的下一地址代替目的地址域中的地址,同时记录的路由地址代替则使用过的源地址,将指针加4。这一以记录的路由替换源路由的过程意味着选项(和IP头一起作为一个整体)数据报在网络中经过处理后保持一个固定长度。它称之为松源地址路由是因为网关或主机IP在达到路由的下一个地址时可以使用多个中间网关。它在分段时必须复制。

紧源地址和记录路由

+--------+--------+--------+---------//--------+

|10001001| length | pointer| route data |

+--------+--------+--------+---------//--------+

Type=137

紧源地址和记录路由(SSRR)选项可以由源地址提供路由信息,并记录路由信息。这个选项以选项类型码开始。第二位是选项长度,第三位是一个指针,指向路由数据中下一个要被处理的源地址,它的最小值为4。路由数据是由一系列地址组成的,每个地址是32位。如果指针大于长度,源路由为空(记录的路由满),路由要根据目的地址域进行。

如果目的地址已经达到,而指针未大于长度,源路由中的下一地址代替目的地址域中的地址,同时记录的路由地址代替则使用过的源地址,将指针加4。这一以记录的路由替换源路由的过程意味着选项(和IP头一起作为一个整体)数据报在网络中经过处理后保持一个固定长度。它称之为紧源地址路由是因为网关或主机IP在达到路由的下一个地址时不可以使用中间网关。它在分段时必须复制。

记录路由

+--------+--------+--------+---------//--------+

|00000111| length | pointer| route data |

+--------+--------+--------+---------//--------+

Type=7

此选项提供了记录数据报路由的方法。这个选项以选项类型码开始。第二位是选项长度,第三位是一个指针,指向路由数据中下一个要被处理的源地址,它的最小值为4。记录的路由是由一系列IP地址构成的,每个IP地址是32位。如果指针大于长度,记录路由数据域已满。源主机必须为这一选项分配足够大的空间。空间分定后不会因为加入地址而增加。初始内容必须为0。

当IP模块处理数据报时,它检查是否有记录路由选项,如果有,它将自己的IP 地址放入记录路由地址空间,指针值加4。如果地址空间已满,模块不会把自己的IP地址加入了;如果空间未满,可是不够整个地址加入,模块会认为源数据报出错并抛弃它。上面两种情况下,ICMP参数信息消息会发送到源主机。在分段时不复制,而仅仅存在于第一个段。

流标记

10001000

00000010

流ID

类型=136 长度=4

此选项提供一种在不支持流的网络中传送16位SATNET流标记的方法。分段时必须复制。

Internet时间戳

类型=68

选项长度是在选项内的类型,长度,指针和溢出/标记字节的大小。指针是从选项开始到时间戳结束的字节数加一。最小值为5。当指针大于长度时时间戳域满。溢出(oflw)(大小为4位)是IP模块号,这个模块因缺省空间而不能注册时间戳。它的值分别为:

0 -- 仅有时间戳,保存于连续的32位字中;

1 -- 每个时间戳前都有注册单元的IP地址;

3 -- IP地址域是预先指定的,如果IP模块的地址和下一个指定的IP地址一致,则注册自己的时间戳。

时间戳是从UT午夜时间开始以毫秒计算的,如果时间不以毫秒计算,或不能提供以UT午夜为基准,那用什么时间倒都可以,只要时间戳的最高位设置为1,表示这不是一个标准值就行了。源主机必须为这一选项分配足够大的空间。空间分定后不会因为加入地址而增加。初值必须为零或IP地址/零这样的偶对。如果空间已满,模块在传送数据报时不加入时间戳,但溢出计数仍然加一。

如果剩余的空间不能使完全的时间戳加入,或溢出计数溢出,源数据报出错并被抛弃。ICMP参数信息消息会发送到源主机。此选项在分段时不复制,仅在第一段出现。

填充:变长

报头域填充用于保证报头是32位的倍数。填充值为0。

3.2. 讨论

协议的实现必须健壮,每个实现都要保证与其它人的实现兼容。通常一个实现在发送时应该遵守比较保守的策略,在接收时大可不必保守。也就是说,发送构成良好的包,接收自己能够解释的包(有些错误也是将就着了)。

基本的Interent服务是面向数据报的,在网关处可以提供以数据报的分段和在目的主机的重组服务。当然,在一个网络内或在因遵守私下的协议而在一个网络的网关间进行分段和重组也是可以的,因为这对IP协议和高层协议是透明的。这种透明的分段称为基于网络的分段,这里不做讨论。IP地址是在主机一级区别源地址和目的地址的。

寻址

为了可以对网络大小进行灵活的控制,IP地址提供了几类地址,一类是可以容纳比较多主机的网络,一种容纳的主机数就比较少,我们大家听说过的什么A 类,B类地址,C类地址就是为了用于不同规模的网络而提出的。下面是一些地址格式:

如果网络域为零意味着本网络,这种方式仅在于特定的ICMP消息中使用;扩展的地址模型未定义。

由本地网络指定的本地地址必须考虑到单个的主机可以作为不同的网络主机使用。也就是说,必须在网络主机地址和网络/主机接口之间进行映射,这种接口允许几个IP地址对应一个接口。同时还应该考虑到一台主机有多个处理接口,对于从不同接收收到的信息应该看做是来自同一个IP地址的。

分段和重组

Internet标记域(ID)和源地址,目的地址和协议域一起用于确认数据报分段和重组。如果数据报不是最后一段,则设置多段标记位(MF)。段偏移域标记段位置,它是相对于未分段时的数据报而言的。段以8个字节为单位,这样的分段策略使未分段的数据报有全零的分段信息(MF = 0,段偏移= 0)。如果进行分段,边界必须是8个字节的倍数。这种格式允许2的13次方(8192)个8字节段,一个数据报的最大长度刚好和长度域标明的数据64K一致。在分段时,有些选项被复制,有些则不。

每个IP模块必须能够不分段地传送68字节的数据报。这因为IP包头会达到60字节,而最小数据段长为8,68=60+8;而它也必须能够接收576字节的数据,不论这数据是未分段的还是分段的。

会被分段影响的域包括:

(1) 选项域

(2) 多段标记

(3) 段偏移

(4) Internet包头长度域

(5) 总长度域

(6) 包头校验码

如果设置了不分段标记(DF),则不可进行分段,即使数据报会因此而被抛弃。如果接收主机不能进行重组时则需要设置此位。我们在进行无盘引导时,则需要设置这一位。下面通过例子说明这一过程。其中#代表不等于,X到Y指的是包括X,而不包括Y的所有数据。

能够在下一个网络传送的最大数据报称为最大传输单元(MTU)。如果数据报的长度小于等于MTU,进行下一步;否则分为两段,第一段的大小等于MTU,第二段就是剩余的长度,将第一段传送,如果第二段仍然大于MTU,则重复分段过程,直到可以发送为止。下面我们给出一个定义:

FO - 段偏移

IHL - Internet包头长度

DF - 不分段标记

MF - 多段标记

TL - 总长度

OFO - 原段偏移

OIHL - 原Internet包头长度

OMF - 原多段标记

OTL - 原总长度

NFB - 段数

MTU - 最大传输单元

过程:

IF TL <= MTU THEN 将此数据报提交给下一处理阶段

ELSE IF DF = 1 THEN 抛弃数据报

ELSE 产生第一段:

(1) 复制源internet包头;

(2) OIHL <- IHL;OTL <- TL;OFO <- FO;OMF <- MF;

(3) NFB <- (MTU-IHL*4)/8;

(4) 附加第一个NFB*8个数据字节;

(5) 校正包头:MF <- 1;TL <- (IHL*4)+(NFB*8);重新计算校验码;

(6) 提交数据段到下一个数据报处理阶段;

如果要产生第二个段:

(7) 有选择地复制internet头;

(8) 附加剩余数据;

(9) 校正包头:IHL <- (((OIHL*4)-(未复制的选项长度))+3)/4;

TL <- OTL - NFB*8 - (OIHL-IHL)*4);

FO <- OFO + NFB;MF <- OMF;重新计算校验码;

(10) 将此段提交分段检测;结束。

上例中除了最后一段外,其它段都达到了MTU的大小,各种实现不同,只要能够得到的段小于等于MTU就可以了。

重组过程例子

对于每个数据报,缓冲区标记是由源地址,目的地址,协议和标记域一起确认的。如果数据报未分段,那就不需要进行重组,处理进行下一阶段。重组需要的数据结构有:数据缓冲区,包头缓冲区,段块位表,数据长度域和计数器。段中的数据根据段偏移和长度放在相应位置,段块标准表中的相应位根据接收的段块被设置。

如果是第一段(段偏移为0),将包头放于包头缓冲区;如果是最后一段(多段标记为0),计算数据总长度。如果接收完了整个数据报,进行下一处理阶段;如果没有接收完,设置计数器值为当前计数器和此段中保存的生存时间之间比较在的一个,重组函数放弃控制权。如果超时释放所有缓冲区。计数器的初值是重组等待时间的下限。因为如果到达段中的生存时间大于计数器当前值等待时间增加,如果小于则不会减少。计数器的最大时间可以达到最大生存时间(大约为4.25分)。如果设置为15秒可能比较好,当然随着实践,这个值可能会有更改。这个值的选择和缓冲区的大小和传输媒介有关,传输速度乘于计数器值等于缓冲区大小。

定义:

FO - 段偏移

IHL - Internet包头长度

MF - 多段标记

TTL - 生存时间

NFB - 段块数

TL - 总长度

TDL - 总数据长度

BUFID - 缓冲区标记

RCVBT - 段接收位表

TLB - 计数器下限

过程:

如果到达的数据段中的数据有部分或全部相同,上面的过程会使用数据的最新版本。

标记

标记是为了对特定数据报的段提供唯一的标记。如果数据报拥有相同的源地址,目的地址,协议和标记,IP模块会把他们认定是同一数据报。选择的任何由发送方担任。发送协议模块需要保持一个标记表,每个目的地址保持一个表项。然

而,因此标记域允许65536个不同的值,有些主机能够不考虑目的地仍然可以达到标记唯一的目的。高层协议也可以使用标记。

服务类型

服务类型(TOS)是网络服务质量的选择。服务类型是由抽象参数确定的优先级,时延,吞吐量和可靠性的结合物。这些参数和一些实际对应的网络服务对应。对于什么是时延,什么是吞吐量之类的定义这里就不多说了。

生存时间

生存时间由发送者设置,是数据报在网络中最长的生存时间,如果超时会抛弃数据报。网络中每个结点都会处理存在于包头中的生存时间。此域的最少减少量为1,单位是秒。因此,最长的生存时间为255秒。每个处理模块必须对TTL减1,即使所使用的时间少于一秒也是如此。高层可靠连接协议是基于原重复数据报将不会在特定时间后到达,TTL是为了满足这样假设而存在。

选项

选项中数据报中是可选的,但在实现中必须有的。有没有选项是发送者说了算,每个IP模块必须能够分析每个选项,每个选项域有多个选项。选项可能没有达到32位的边界,不足的以零填充以达到32位的倍数。

校验码

如果包头发生改变必须重新计算包头校验码,校验码可以在一定程度上杜绝传输错误。有些应用程序允许数据报中的数据出错,如果IP强调数据正确性,类似的应用程序也就用不成了。

错误

IP协议错误可由ICMP协议报告。

3.3. 接口

接口的描述是功能性的,这个描述的具体实现机制会因为操作系统的不同而不同。不同的IP实现会有不同的用户接口。但是起码的子集是所有实现必须支持的。本节将描述这个基本子集。IP协议有上下有两个接口,一个是面向本地网络的,另一个是面向高层协议或应用程序的,我们称后一个接口为用户。虽然IP协议是数据报协议,所以用于保存状态的资源(内存)很少。

下面是一个高层接口范例:

SEND (src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt => result)

上式中:

src = 源地址

dst = 目的地址

prot = 协议

TOS = 服务类型

TTL = 生存时间

BufPTR = 缓冲区指针

len = 缓冲区长度

Id = 标记

DF = 不分段

opt = 选项数据

result = 响应,响应分为OK和Error两种;

OK = 发送成功

Error = 参数错误或本地网络错误

优先级和安全性参数在选项中传送。

RECV (BufPTR, prot, => result, src, dst, TOS, len, opt) 上式中:

BufPTR = 缓冲区指针

prot = 协议

result = 响应,响应分为OK和Error两种;

OK = 发送成功

Error = 参数错误

len = 缓冲区长度

src = 源地址

dst = 目标地址

TOS = 服务类型

opt = 选项数据

当用户发送数据报时,他执行SEND命令。IP模块在收到调用时,检查传送来的参数并准备发送数据。如果参数合法而且本地网络正常接收数据,返回成功。如果参数不合法,或本地网络未接收数据,返回不成功。在未成功时会返回报告,报告内容会因实现不同而不同。

当数据报到达IP模块时,要么有一个RECV调用要么没有。如果有这个调用会传送信息给用户;如果没有,通知用户信息到达。如果没有找到应该通知的用户,返回ICMP错误,抛弃数据。通知用户可以通过假中断或类似的机制,这视操作系统不同而不同。源地址包括在发送调用中,IP模块可以检查源地址是否是一个合法地址。

MODBUSTCP_IP协议书范本

MODBUS TCP ip协议 【网络架构】 以太网帧格式 历史上以太网帧格式有五种: 1.Ethernet V1:这是最原始的一种格式,是由Xerox PARC提出的3Mbps CS MA/CD以太网标准的封装格式,后来在1980年由DEC,Intel和Xerox标准化形成Ethernet V1标准. 2.Ethernet V2(ARPA):由DEC,Intel和Xerox在1982年公布其标准,主要更改了Ethernet V1的电气特性和物理接口,在帧格式上并无变化;Ethernet V2出现后迅速取代Ethernet V1成为以太网事实标准;Ethernet V2帧头结构为6bytes的源地址+6bytes的目标地址+2Bytes的协议类型字段+数据。 3.RAW 802.3:这是1983年Novell发布其划时代的Netware/86网络套件时采用的私有以太网帧格式,该格式以当时尚未正式发布的802.3标准为基础;但是当两年以后IEEE正式发布802.3标准时情况发生了变化—IEEE在802.3帧头中又加入了802.2 LLC(Logical Link Control)头,这使得Novell的RAW 802.3格式跟正式的I EEE 802.3标准互不兼容.

4.802.3/802.2 LLC:这是IEEE 正式的802.3标准,它由Ethernet V2发展而来。它将Ethernet V2帧头的协议类型字段替换为帧长度字段(取值为0000-05dc;十进制的1500);并加入802.2 LLC头用以标志上层协议,LLC头中包含DSAP,SS AP以及Crontrol字段. 5.802.3/802.2 SNAP:这是IEEE为保证在802.2 LLC上支持更多的上层协议同时更好的支持IP协议而发布的标准,与802.3/802.2 LLC一样802.3/802.2 SNA P也带有LLC头,但是扩展了LLC属性,新添加了一个2Bytes的协议类型域(同时将SAP的值置为AA),从而使其可以标识更多的上层协议类型;另外添加了一个3B ytes的OUI字段用于代表不同的组织,RFC 1042定义了IP报文在802.2网络中的封装方法和ARP协议在802.2 SANP中的实现. 802.3以太网帧格式备注: 前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、源MAC 地址(6字节)、类型/长度(2字节)、数据(46~1500字节)、帧校验序列(4字节)[MAC地址可以用2-6字节来表示,原则上是这样,实际都是6字节] 以太网帧格式总结 MAC地址厂商的查询的网址: 全部厂商列表: [url]/regauth/oui/oui.txt[/url] 网页查询地址: [url]/regauth/oui/index.shtml[/url] 在Search the public OUI listing . . .输入网卡MAC地址前三位即可,如00-0D-65 ==>Start: 目前,有四种不同格式的以太网帧在使用,它们分别是: ●Ethernet II即DIX 2.0:Xerox与DEC、Intel在1982年制定的以太网标准帧格式。Cisco名称为:ARPA。 ●Ethernet 802.3 raw:Novell在1983年公布的专用以太网标准帧格式。Cisco名称为:Novell-Ether。 ●Ethernet 802.3 SAP:IEEE在1985年公布的Ethernet 802.3的SAP版本以太网帧格式。Cisco名称为:SAP。 ●Ethernet 802.3 SNAP:IEEE在1985年公布的Ethernet 802.3的SNAP版本以太网帧格式。Cisco名称为:SNAP。 在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,如图3所示。其中,前7个字节称为前同步码(Preamble),容是16进制数0xAA,最后1字节为帧起始标志符0xAB,它标识着以太网帧的开始。前导字符的作用是使接收节点进行同步并做好接收数据帧的

TCP和UDP协议简介

TCP和UDP协议简介 从专业的角度说,TCP的可靠保证,是它的三次握手机制,这一机制保证校验了数据,保证了他的可靠性。而UDP就没有了,所以不可靠。不过UDP的速度是TCP比不了的,而且UDP的反应速度更快,QQ就是用UDP协议传输的,HTTP是用TCP协议传输的,不用我说什么,自己体验一下就能发现区别了。再有就是UDP和TCP的目的端口不一样(这句话好象是多余的),而且两个协议不在同一层,TCP在三层,UDP不是在四层就是七层。TCP/IP协议介绍 TCP/IP的通讯协议 这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP 协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。 TCP/IP整体构架概述 TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line 等)来传送数据。 TCP/IP中的协议 以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的: 1.IP 网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的

Ethernet/IP协议简介

目录 1 现场总线控制技术与工业以太网........................................................................................ - 1 - 2 工业以太网实时性问题........................................................................................................ - 3 - 2.1 通讯确定性和实时性技术........................................................................................... - 3 - 3 Ethernet/IP协议简介.......................................................................................................... - 4 - 3.1 Ethernet/IP工业以太网.............................................................................................. - 4 - 3.1.1 Ethernet/IP协议模型及协议内容................................................................... - 5 - 3.1.2 EtherNet/IP 的通信机制.................................................................................... - 7 - 3.2 ProfitNet工业以太网................................................................................................. - 8 - 3.2.1 基本介绍............................................................................................................ - 8 - 3.2.2 实时通信............................................................................................................ - 8 - 3.2.3 PROFINET .......................................................................................................... - 9 - 3.2.4 安全.................................................................................................................. - 10 - 3.3 Modbus-IDA工业以太网 ........................................................................................ - 11 - 3.3.1 基本信息.......................................................................................................... - 11 - 3.3.2 特点.................................................................................................................. - 12 - 3.3.3 传输方式.......................................................................................................... - 13 - 3.3.4 CRC ................................................................................................................... - 15 - 3.4 Controlnet工业以太网............................................................................................. - 17 - 3.4.1 原理.................................................................................................................. - 17 - 3.4.2 ControlNet网络................................................................................................ - 18 - 3.4.3 控制网国际有限公司...................................................................................... - 18 - 3.4.4 可建造ControlNet的设备.............................................................................. - 18 - 3.5 World FIP工业以太网............................................................................................. - 20 - 3.5.1 概述.................................................................................................................. - 20 - 3.5.2 WorldFip的特点 .............................................................................................. - 20 - 3.5.3 WorldFip 协议 ................................................................................................. - 21 - 3.5.4 WorldFip总线典型器件 .................................................................................. - 22 - 3.5.5 开发工具.......................................................................................................... - 23 - 3.5.6 目前存在的一些问题和应用前景.................................................................. - 23 - 4 Ethernet/I P通信适配器硬件设计与实现....................................................................... - 2 5 - 4.1 硬件系统总体架构.................................................................................................. - 25 - 4.2电源设计................................................................................................................... - 25 - 4.3复位电路设计........................................................................................................... - 26 - 4.4以太网通讯接口设计............................................................................................... - 26 - 4.4.1以太网电路原理......................................................................................... - 27 - 4.4.2以太网芯片CS8900A-IQ3功能描述........................................................ - 27 - 4.5串行通讯接口设计...................................................................................................... - 29 - 4.6 主从USB接口设计.............................................................................................. - 29 - 4.7 外部I/0扩展接口设计 ........................................................................................ - 30 - 5 EtherNet/IP 工业以太网优缺点及发展前景..................................................................... - 31 -

TCPIP协议格式

通过连接实例解读TCP/IP协议 最近狂补基础,猛看TCP/IP协议。不过,书上的东西太抽象了,没有什么数据实例,看了不久就忘了。于是,搬来一个sniffer,抓了数据包来看,呵呵,结合书里面得讲解,理解得比较快。我就来灌点基础知识。 开始吧,先介绍IP协议。 IP协议(Internet Protocol)是网络层协议,用在因特网上,TCP,UDP,ICMP,IGMP数据都是按照IP数据格式发送得。IP协议提供的是不可靠无连接得服务。IP数据包由一个头部和一个正文部分构成。正文主要是传输的数据,我们主要来理解头部数据,可以从其理解到IP协议。 IP数据包头部格式(RFC791) Example Internet Datagram Header 上面的就是IP数据的头部格式,这里大概地介绍一下。 IP头部由20字节的固定长度和一个可选任意长度部分构成,以大段点机次序传送,从左到右。 TCP协议 TCP协议(TRANSMISSION CONTROL PROTOCOL)是传输层协议,为应用层提供服务,和UDP不同的是,TCP协议提供的可靠的面向连接的服务。在RFC793中是基本的TCP描述。关于TCP协议的头部格式内容的说明: TCP Header FORMat

TCP Header FORMat 跟IP头部差不多,基本的长度也是20字节。TCP数据包是包含在一个IP数据报文中的。 好了,简单介绍到此为止。来看看我捕获的例子吧。这是一次FTP的连接,呵呵,是cuteftp默认的cuteftp的FTP站点,IP地址是:216.3.226.21。我的IP地址假设为:192.168.1.1。下面的数据就是TCO/IP连接过程中的数据传输。我们可以分析TCP/IP协议数据格式以及TCP/IP连接的三次握手 (ThreeWay-Handshake)情况。下面的这些十六进制数据只是TCP/IP协议的数据,不是完整的网络通讯数据。 第一次,我向FTP站点发送连接请求(我把TCP数据的可选部分去掉了) 192.168.1.1->216.3.226.21 IP头部: 45 00 00 30 52 52 40 00 80 06 2c 23 c0 a8 01 01 d8 03 e2 15 TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00 来看看IP头部的数据是些什么。 第一字节,“45”,其中“4”是IP协议的版本(Version),说明是IP4。“5”是IHL位,表示IP头部的长度,是一个4bit字段,最大就是1111了,值为12,IP头部的最大长度就是60字节。而这里为“5”,说明是20字节,这是标准的IP头部长度,头部报文中没有发送可选部分数据。 接下来的一个字节“00”是服务类型(Type of Service)。这个8bit字段由 3bit的优先权子字段(现在已经被忽略),4 bit的TOS子字段以及1 bit的未用字段(现在为0)构成.4 bit的TOS子字段包含:最小延时、最大吞吐量、最高可靠性以及最小费用构成,这四个1bit位最多只能有一个为1,本例中都为0,表示是一般服务。 接着的两个字节“00 30”是IP数据报文总长,包含头部以及数据,这里表示48字节。这48字节由20字节的IP头部以及28字节的TCP头构成(本来截取的TCP头应该是28字节的,其中8字节为可选部分,被我省去了)。因此目前最大的IP数据包长度是65535字节。 再是两个字节的标志位(Identification):“5252”,转换为十进制就是21074。这个是让目的主机来判断新来的分段属于哪个分组。 下一个字节“40”,转换为二进制就是“0100 0000”,其中第一位是IP协议目前没有用上的,为0。接着的是两个标志DF和MF。DF为1表示不要分段,MF

IP协议相关知识简介(doc 15页)

IP协议相关知识简介(doc 15页)

第1章Internet概述 什么是Internet?在英语中“Inter”的含义是“交互的”,“net”是指“网络”。简单而言,Internet是指一个由计算机构成的交互网络。它是一个世界范围内的巨大的计算机网络体系,它把全球数万个计算机网络,数千万台主机连接起来,包含了难以计数的信息资源,向全世界提供信息服务。它的出现,是世界由工业化走向信息化的必然和象征,但这并不是对Internet的一种定义,而仅仅是对它的一种解释。从网络通信的角度来看,Internet是一个以TCP/IP网络协议连接各个国家、各个地区、各个机构的计算机网络的数据通信网。从信息资源的角度来看,Internet是一个集各个部门、各个领域的各种信息资源为一体,供网上用户共享的信息资源网。现在的Internet已经远远超过了一个网络的涵

义,它是一个信息社会的缩影。虽然至今还没有一个准确的定义来概括Internet,但是这个定义应从通信协议、物理连接、资源共享、相互联系、相互通信等角度来综合加以考虑。 了解一个事物的最有效方法莫过于先了解它的历史,在本章中,先简要回顾一下Internet的发展历史,再介绍与Internet相关的管理结构,并对当前的Internet应用现状与发展趋势作一简单介绍。 1.1 Internet发展历史 Internet最早来源于美国国防部高级研究计划局DARPA(Defense advanced Research Projects Agency)的前身ARPA建立的ARPAnet,该网于1969年投入使用。从20世纪60年代开始,ARPA就开始向美国国内大学的计算机系和一些公司提供经费,以促进基于分组交换技术的计算机网络的研究。1968年,ARPA为ARPAnet 网络项目立项,该项目基于这样一种主导思想:网络必须能够经受住故障的考验而维持正常工作,一旦发生战争,当网络的某一部分因遭受攻击而失去工作能力时,网络的其他部分应当能够

TCPIP等协议报文格式

TCP/IP等协议报文格式 应用层(Application) HTTP、Telnet、FTP、SNMP、SMTP 传输层(transport) TCP、UDP 网间层(Internet) IP-ARP、RARP、ICMP 网络接口层(NETwork)Ethernet、X.25、SLIP、PPP 以太网数据报文封装格式 TCP报文 TCP数据区 TCP IP报文 IP数据区 IP 帧头 帧数据区

ETH 前导 目的地址 源地址 帧类型 数据 CRC 长度 8 6 6 2 46~1500 4 用户填充数据60~1514 8字节前导用于帧同步,CRC用于帧校验,此2类数据可由网卡芯片自动添加。目的地址和源地址是指网卡的物理地址,即MAC地址,多数情况下具有唯一性。帧类型或协议类型——0X0806为ARP协议,0X0800为IP协议。 ARP/RARP (地址解析/反向地址解析)报文格式 0~7

8~15 16~23 24~31 硬件协议 协议类型 硬件地址长度 协议地址长度 操作 发送者硬件地址(字节0~3) 发送者硬件地址(字节4~5) 发送者IP地址(字节0~1) 发送者IP地址(字节2~3) 目的硬件地址(字节0~1) 目的硬件地址(字节2~5) 目的IP地址(字节0~3) 硬件类型——发送者本机网络接口类型(以太网=1) 协议类型——发送者所提供/请求的高级协议地址类型(IP协议=0x0800)操作——ARP请求=1,ARP响应=2,RARP请求=3,RARP响应=4

IP数据报头格式如下表0~3 4~7 8~11 12~15 16~18 19~31 4位 版本 4位 包头长度 8位 服务类型(TOS) 16位 总长度 16位 标识号(ID号) 3位 Flag 13位 片偏移 8位 生存时间 8位 协议类型 16位

TCP IP协议常见问题总结(一)

TCP/IP FAQ系列,以古老经典的4.4BSD-Lite实现为准,参考《TCP/IP协议详解》3卷,加入个人的思考理解,理清主干,不深究细枝末节,皆在总结基本原理和实现。 本篇涵盖了数据链路层、ARP、RARP、IP、ICMP、TCP、UDP方面的问题与解答。 【Data Link】 1. 环回接口地址必须是127.0.0.1吗? 形如127.x.x.x的A类IP都可作为环回接口的地址,但常用的是127.0.0.1。 2. 环回接口为什么没有输入处理? 发送到环回接口的数据报实质上被送到网络层的输入队列中,因此数据报没有离开网络,也就不可能从链路上接收到目标地址为环回接口地址的数据帧,所以不存在输入处理。 3. SLIP、环回和以太网接口,三者有何不同? SLIP和环回接口没有链路层首部和硬件地址,环回接口没有输入处理,而以太网接口都有。 4. SLIP和以太网接口如何分用输入帧,环回接口如何分用输出分组? SLIP将帧直接放进IP输入队列中,以太网接口则根据帧类型字段放到对应的协议输入队列中,环回接口则按目的地址族放到对应的输入队列中。 5. 接口和地址有什么关联? 一个接口的编址信息包括主机地址、广播地址和网络掩码,当内核初始化时,每个接口分配一个链路层地址,可以配置有多个相同或不同的网络层地址,例如2个IP地址,或者1个IP地址、1个OSI 地址。 【ARP & RARP】1. 何时发送ARP请求,何时应答ARP请求? 当单播发送IP数据并且查询ARP高速缓存失败时,就会广播一个询问目的主机硬件地址的ARP请求;当接收到ARP请求的主机就是该请求所要查找的目的主机或目的主机的ARP代理服务器时,就会单播一个ARP应答。 2. 为什么两者的以太网帧类型不同? ARP值为0x0806,RARP为0x8035,其实对于发送方来说,利用ARP的op字段可以区分RARP,但对于接收方,由于ARP实现在内核中,而RARP一般实现为服务器,所以为了更易区分,就单独用另一个值标识。 3. 设计RARP服务器有哪些问题? 一是怎么发送以太网帧以响应请求,这与系统相关。二是当存在多个服务器时,同时发送响应帧会造成以太网冲突,这可以通过分主从服务器和随机延时来优化避免。 4. ARP在等待应答时,它会如何处理发往给定目的的多个报文? 在大多数的实现中,在等待一个ARP应答时,只将最后一个报文发给特定目的主机。Host Requirements RFC要求实现中必须防止这种类型的ARP洪泛,建议最高速率是每秒一次。 5. 免费ARP有什么作用? 一般的ARP请求用于查询目标硬件地址,并等待应答。而免费的ARP发出请求并不一定期望应答,这可以有两方面的作用: 1)一个主机可以确定是否存在相同IP地址的另一主机 2)当本机硬件地址改变时,通知其它主机更新ARP高速缓存。 6. ARP如何映射一个IP多播地址? 先获取IP多播地址的低23位,再与常量0x01005e7f0000按位或,结果就是对应的多播硬件地址。 【IP】 1. 何时何地分片?

MODBUS-TCP协议介绍

MODBUS-TCP ~ ~~ IEEE 802.3 CSMA/CD 10Mb/s (1)10 Base 5 RG-8 500m (2)10 Base 2 RG-58 185m (3)10 Base T UTP STP 100m ~~ 100Mb/s 802.3a 100 Base Tx 100 Base Fx ~~ 10/100M 100M “ ” (UTP) 100m 2 3km 100km 1000Mb/s 802.3z/802.3ab 10Gb/s 802.3ae ~ ~~ IEEE802.3 EN50081-2 EN50082-2 1 DIN UTP STP( ) ~TCP/IP 1. TCP/IP ~~ TCP/IP 20 80 X.25 TCP/IP ( ) TCP/IP TCP/IP TCP/IP

Internet TCP/IP TCP/IP ~~ TCP/IP OSI OSI TCP/IP 1 TCP/IP 2. Internet Protocol(IP) ~~IP Internet RFC79 ( RFC: Request For Comments ) ~~IP IP “ ” I/O IP IP IP “IP ” “ ” “ ” “ ” IP IP ~~IP IP 2

~~IP 4 ( 3 ) A 16387064 (1 126) B 64516 ( 128 191) C 254 ( 192 223) D (“0.0.0.0”) 1 (“255.255.255.255”) 3. Transmission Control Protocol (TCP) ~~TCP ( 4 ) RFC793 TCP TCP TCP

TCPIP协议分析

TCP/IP协议分析及应用 在计算机网络的发展过程中,TCP/IP网络是迄今为止对人类社会影响最重要的一种网络。TCP和IP是两种网络通信协议,以这两种协议为核心协议的网络总称为TCP/IP网络。人们常说的国际互联网或因特网就是一种TCP/IP网络,大多数企业的内部网也是TCP/IP网络。 作为一名学习计算机的学生,我们一定要对TCP/IP协议进行深刻的解析。通过对协议的分析进一步了解网络上数据的传送方式和网络上出现的问题的解决方法。本实验就是对文件传输协议进行分析来确定FTP协议工作方式。 目的:通过访问FTP:202.207.112.32,向FTP服务器上传和下载文件。用抓包工作来捕捉数据在网络上的传送过程。为的方便数据包的分析,通过上传一个内容为全A的TXT文件,来更直观的分析文件传输的过程。 过程: 1.在本机上安装科莱抓包软件 2.对科莱进行进滤器的设置(arp、ftp、ftp ctrl、ftp data) 3.通过运行CMD窗口进行FTP的访问 4.用PUT和GET进行文件的上传与下载 5.对抓到的包进行详细的分析 CMD中的工作过程: C:\Documents and Settings\Administrator>ftp 202.207.112.32 Connected to 202.207.112.32. 220 Serv-U FTP Server v5.1 for WinSock ready... User (202.207.112.32:(none)): anonymous //通过匿名方式访问 331 User name okay, please send complete E-mail address as password. Password: 230 User logged in, proceed. ftp> cd 学生作业上传区/暂存文件夹 250 Directory changed to /学生作业上传区/暂存文件夹 ftp> put d:\aaa123.txt //上传aaa123.txt文件 200 PORT Command successful. 150 Opening ASCII mode data connection for aaa123.txt.

ip协议字段解析

IP包的协议字段 switch(Protocol){ case 0: return "HOPOPT"; //IPv6逐跳选项 case 1: return "ICMP"; //控制消息 case 2: return "IGMP"; //组管理 case 3: return "GGP"; //网关对网关 case 4: return "IP in IP"; //IP中的IP(封装) case 5: return "ST"; //流 case 6: return "TCP"; //TCP传输控制 case 7: return "CBT"; //CBT case 8: return "EGP"; //外部网关协议 case 9: return "IGB"; //任何专用内部网关(Cisco将其用于IGRP)case 10: return "BBN-RCC-MON"; //BBN RCC监视 case 11: return "NVP-II"; //网络语音协议 case 12: return "PUP"; //PUP case 13: return "ARGUS"; //ARGUS case 14: return "EMCON"; //EMCON case 15: return "XNET"; //跨网调试器 case 16: return "CHAOS"; //Chaos case 17: return "UDP"; //用户数据报 case 18: return "MUX"; //多路复用 case 19: return "DCN-MEAS"; //DCN测量子系统 case 20: return "HMP"; //主机监视 case 21: return "PRM"; //数据包无线测量 case 22: return "Xns_IDP"; //XEROX NS IDP case 23: return "TRUNK-1"; //第1主干 case 24: return "TRUNK-2"; //第2主干 case 25: return "LEAF-1"; //第1叶 case 26: return "LEAF-2"; //第2叶 case 27: return "RDP"; //可靠数据协议 case 28: return "IRTP"; //Internet可靠事务 case 29: return "ISO-TP4"; //ISO传输协议第4类 case 30: return "NETBLT"; //批量数据传输协议 case 31: return "MFE-NSP"; //MFE网络服务协议 case 32: return "MERIT-INP"; //MERIT节点间协议 case 33: return "SEP"; //顺序交换协议 case 34: return "3PC"; //第三方连接协议 case 35: return "IDPR"; //IDPR域间策略路由协议 case 36: return "XTP"; //XTP case 37: return "DDP"; //数据报传送协议 case 38: return "IDPR-CMTP"; //IDPR控制消息传输协议 case 39: return "TP++"; //TP++传输协议 case 40: return "IL"; //IL传输协议 case 41: return "IPv6"; //IPv6

详解TCPIP协议总结

TCP/IP 协议 TCP/IP 不是一个协议,而是一个协议族的统称。里面包括IP 协议、 IMCP 协议、TCP 协议。 这里有儿个需要注意的知识点: ?互联网地址:也就是IP 地址,一般为网络号+子网号+主机号 ?域名系统:通俗的来说,就是一个数据库,可以将主机名转换成IP 地址 ? RFC : TCP/IP 协议的标准文档 ?端口号:一个逻辑号码,IP 包所带有的标记 ? Socket :应用编程接口 数据链路层的工作特性: ?为IP 模块发送和接收IP 数据报 ?为ARP 模块发送ARP 请求和接收ARP 应答(ARP :地址解析协议,将IP 地 址转换 成MAC 地址) ? 为RARP 发送RARP 请求和接收RARP 应答 接下来我们了解一下TCP/IP 的工作流 程: 数据链路层从ARP 得到数据的传递信息,再从IP 得到具体的数据信息 IP 协议 IP 协议头当中,最重要的就是TTL (IP 允许通过的最大网段数量)字 段(八位),规定该数据包能穿过儿个路山之后才会被抛弃。 IP 路由选择 版本首部长圍区分服务 总长度 标识 标志 片偏移 生存时间 协议 首部检验利 源地址 目的地址 可选字段(长度可变) 填充 I 4 8 24 31 部分 16 19 数 据 部 分 固 皆定 部分 发送在前 IP 数据

箝古畫帕igiKMudeu ICMP 协议(网络控制文协议) 将IP 数据包不能传送的错误信息传送给主机 查询报文 1. ping 査询:主机是否可达,通过计算间隔时间和传送多少个包的数量 2. 子网掩码 3. 时间戳:获得当询时间 优元幔萦匹配 ?SEE 失? ■ 匹杞同孑協1的跨用器 ?成切? 发送冷總民避 丿 1 丿 V / 、 Z 、 匹配同网号杓路Fh 器 ?或6 发送IP SS 冕包绘跑国器 1 丿 1 丿 芨索SKIAB^田 发迭IP 数据给淫呂器 艾败 丢弃担个? ARP 协议工作原理 ( e?*Aw>?a? r^?WARpr?s 爸旁丰0?榜 ?ommeu

tcp,ip详解卷1,协议,下载

竭诚为您提供优质文档/双击可除tcp,ip详解卷1,协议,下载 篇一:tcp_ip协议详解 tcp/ip协议详解 这部分简要介绍一下tcp/ip的内部结构,为讨论与互联网有关的安全问题打下基础。tcp/ip协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如t1和x.25、以太网以及Rs-232串行接口)之上。确切地说,tcp/ip协议是一组包括tcp协议和ip协议,udp (userdatagramprotocol)协议、icmp (internetcontrolmessageprotocol)协议和其他一些协议的协议组。 tcp/ip整体构架概述 tcp/ip协议并不完全符合osi的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而tcp/ip通讯协议采用了4层的层级结构,每一层都呼叫它的

下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(smtp)、文件传输协议(Ftp)、网络远程访问协议(telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(tcp)、用户数据报协议(udp)等,tcp和udp给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(ip)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如ethernet、serialline等)来传送数据。 tcp/ip中的协议 以下简单介绍tcp/ip中的协议都具备什么样的功能,都是如何工作的: 1.ip 网际协议ip是tcp/ip的心脏,也是网络层中最重要的协议。 ip层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---tcp或udp层;相反,ip层也把从tcp或udp层接收来的数据包传

TCPIP协议详解卷1学习笔记-IP校验和与ICMP协议

TCP/IP协议详解卷1学习笔记-IP校验和与ICMP协议 IP数据报的检验和: 为了计算一份数据报的I P检验和,首先把检验和字段置为0。然后,对首部中每个16 bit 进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当 收到一份I P数据报后,同样对首部中每个16 bit进行二进制反码的求和。由于接收方在计算过 程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错, 那么接收方计算的结果应该为全1。 这个是原文。看一些网络程序的源码时,发现几乎都是用同一种程序来计算检验和的: USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT); } if(size ) { cksum += *(UCHAR*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (USHORT)(~cksum); } 摘自 ping 源码。 大家都用的东西看来是不会错的了,不过还是要按协议说的方法用笨办法试试看。 今天看的是ICMP协议,基本格式: |-------- IP 数据报 ------------+ +--20 bytes --+----------------+

+ IP首部 + ICMP 报文 + +------------------------------+ ICMP报文还是通过IP报文发送出去的。 ICMP的格式: +----8---+----8---+-------- --------+ + 8位类型 + 8位代码 + 16位检验和 + +-----------------------------------+ + 不同类型有不同的内容和长度 + +-----------------------------------+ ICMP的报文类型有很多种,而每种类型里又有多种代码。 报文分查询报文和差错报文。差错报文不会嵌套产生。差错报文中包含导致差错的IP首部和数据部分的前8个字节,并据此与具体的协议和进程联系起来。因为TCP和UDP的前8个字节中包含有源端口和目的端口,可以据此查找到与此联系的用户进程。大部分的实现中只返回8个字节,有系统返回的是前64个字节。如果是UDP报文产生差错,而又没有预先通过 connect与指定端口联系起来,用户进程将收不到这个差错报文。内核在处理后将丢弃。 讨论了部分tftp实现中的的简单的差错重传机制,等待5秒重传,已被RFC 禁用。我在串口通讯中用的还是这种简单的重传方式,看来要改了。 详细讨论了时间截请求与回复的过程,以及地址掩码请求与回应数据包的格式。对端口不可达错误,差错报文为: +----------------- 端口不可达的ICMP差错报文 -------------------------------+ + 以太网首部 + IP首部 + ICMP首部 + 产生差错的IP首部 + IP 报数据域 + +- 14 bytes +--- 20 bytes ---+ 8 bytes +---- 20 bytes ----+-- 8 bytes -+ 根据标准,列出5种情况下,不会产生差错报文,基本上都是为了避免出现ICMP广播风暴的。 这个协议因为类型与具体的细节太多,比较的费事,不过也比较简单。如果不做协议的分析,倒不需要对每个类型都搞得十分清楚。好像这个并没有多少利用的空间。不过如果在一个主机试图发起连接时,发送一个伪装的ICMP包告诉它“端口不可达”,结果会怎么样?值得试试。 第2卷第13章 HTTP协议

相关主题