IP数据报格式

合集下载

IP数据报格式和IP地址路由

IP数据报格式和IP地址路由

IP数据报格式和IP地址路由⼀、IP数据报格式IP数据报格式如下:注:需要注意的是⽹络数据包以⼤端字节序传输,当然头部也得是⼤端字节序,也就是说:The most significant bit is numbered 0 at the left, and the least significant bit of a 32-bit value is numbered 31 on the right.The 4 bytes in the 32-bit value are transmitted in the order: bits 0-7 first, then bits 8-15, then 16-23, and bits 24-31 last. This is called big endian byte ordering, which is the byte ordering requiredfor all binary integers in the TCP/IP headers as they traverse a network. This is called the network byte order. Machines that store binary integers in other formats, such as the little endian format,must convert the header values into the network byte order before transmitting the data.版本IP协议版本号,长度为4位,IPv4此字段值为4,IPv6此字段值为6⾸部长度以32位的字为单位,该字段长度为4位,最⼩值为5,即不带任何选项的IP⾸部20个字节;最⼤值为15,所以⾸部长度最⼤为60个字节服务类型(TOS)长度为8位。

ip数据报格式 相关解答题

ip数据报格式 相关解答题

ip数据报格式相关解答题好的,以下是一篇可能的文章草稿,供您参考:IP数据报格式一、什么是IP数据报?IP数据报是一种在网络中传输的数据单元,通常由一个或多个IP 数据包组成。

它包含了发送主机和接收主机之间的数据和相关控制信息。

二、IP数据报的格式是什么?IP数据报的格式通常包括以下几个部分:1. 版本:IP协议的版本号,目前常用的版本是4(IPv4)。

2. 头部校验和:用于检测数据报在传输过程中是否发生改变。

3. 目标协议地址:接收数据报的设备的IP地址。

4. 源协议地址:发送数据报的设备的IP地址。

5. 数据部分:实际要传输的数据。

三、IP数据报头部有哪些字段?IP数据报头部包含多个字段,以下是其中一些常见的字段:1. 服务类型/TOS:用于控制数据传输的优先级、可靠性与实时性。

2. 标识符:用于跟踪数据报在转发过程中的顺序。

3. 标志字段:用于控制数据报的分片和粘包行为。

4. 片偏移:用于指定数据报片段在原始数据中的位置。

5. TTL(生存时间):用于控制数据报在路由器中的缓存时间和转发次数。

6. 协议:指示使用哪种协议来处理数据报的数据部分。

7. 校验和:用于检测IP数据报在传输过程中是否发生改变。

8. 源主机地址和目标主机地址:与IP数据报头部中的源协议地址和目标协议地址相对应,用于指定发送和接收数据报的主机。

四、如何解析IP数据报?解析IP数据报需要使用特定的协议和工具。

常见的工具包括Wireshark、tcpdump等。

解析过程通常包括以下步骤:1. 读取数据报。

2. 提取头部信息,包括版本、标志、片偏移、TTL等。

3. 根据协议字段确定使用哪种协议来处理数据报的数据部分。

4. 根据头部中的目标主机地址将数据报转发到相应的网络设备或应用程序。

五、如何处理IP数据报的分片?当一个较大的数据包需要通过路由器进行转发时,如果目标主机地址不在同一个网络中,路由器可能会将数据包分成多个更小的片段,并将每个片段发送到不同的网络中。

IP数据报的格式

IP数据报的格式

IP数据报的格式TCP/IP协议使用IP数据报包含一个数据报报头和一个数据区。

IP数据报头包含有源、目的信息,做寻径用。

并且指明承载负载的协议类型。

数据报所携带的数据量不固定!下面给出IP数据报的详细格式:0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7-----------------------------------------------------------------| 版本 |报头长度| 服务类型 | 总长度 | -----------------------------------------------------------------| 标识符 | 标志 | 分片偏移量 | -----------------------------------------------------------------| 存活时间 | 协议 | 报头校验和 | -----------------------------------------------------------------|源地址 | -----------------------------------------------------------------|目的地址 | -----------------------------------------------------------------| IP选项 | 填充 | -----------------------------------------------------------------|数据区。

| -----------------------------------------------------------------| 2.1 版本协议号IP数据报的第一个域是4bit长的版本域(version)。

以太网帧格式、IP报文格式、TCPUDP报文格式

以太网帧格式、IP报文格式、TCPUDP报文格式

以太⽹帧格式、IP报⽂格式、TCPUDP报⽂格式1、ISO开放系统有以下⼏层:7应⽤层6表⽰层5会话层4传输层3⽹络层2数据链路层1物理层2、TCP/IP ⽹络协议栈分为应⽤层(Application)、传输层(Transport)、⽹络层(Network)和链路层(Link)四层。

通信过程中,每层协议都要加上⼀个数据⾸部(header),称为封装(Encapsulation),如下图所⽰不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报(datagram),在链路层叫做帧(frame)。

数据封装成帧后发到传输介质上,到达⽬的主机后每层协议再剥掉相应的⾸部,最后将应⽤层数据交给应⽤程序处理。

其实在链路层之下还有物理层,指的是电信号的传递⽅式,⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤等都属于物理层的概念。

3、集线器(Hub)是⼯作在物理层的⽹络设备,⽤于双绞线的连接和信号中继(将已衰减的信号再次放⼤使之传得更远)。

交换机是⼯作在链路层的⽹络设备,可以在不同的链路层⽹络之间转发数据帧(⽐如⼗兆以太⽹和百兆以太⽹之间、以太⽹和令牌环⽹之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层⾸部重新封装之后再转发。

路由器是⼯作在第三层的⽹络设备,同时兼有交换机的功能,可以在不同的链路层接⼝之间转发数据包,因此路由器需要将进来的数据包拆掉⽹络层和链路层两层⾸部并重新封装。

4、⽹络层的IP 协议是构成Internet 的基础。

IP 协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应⽤程序中提供⽀持。

传输层可选择TCP 或UDP 协议。

TCP 是⼀种⾯向连接的、可靠的协议,有点像打电话,双⽅拿起电话互通⾝份之后就建⽴了连接,然后说话就⾏了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。

IP数据报首部格式

IP数据报首部格式

IP数据报⾸部格式IP协议提供不可靠、⽆连接的数据报传送服务。

不可靠:尽⼒⽽为地传输,不保证IP数据报能成功到达⽬的地。

⽆连接:每⼀个数据报之间相互独⽴地进⾏路由选择,可不按发送顺序接收。

IP⾸部格式例如以下:以下就⽤这幅图结合Wireshark来分析个字段含义。

这次截取的是DNS数据报,它位于应⽤层。

⾸先看⼀下整个IP⾸部的内容:相应的原始数据:以下按字段分别进⾏说明。

4位版本号表⽰眼下的协议版本号号。

这⾥使⽤的是IPv4,当然值就是4啦。

4为⾸部长度表⽰⾸部包括多少个4字节。

相应Header length字段的20字节,但依据原始数据能够看出,这个字段实际值应该是5,也就是有5个4字节,共20字节。

8位服务类型包含最⼩延迟、最⼤吞吐量、最⾼可靠性等性能指标。

这⾥全为0表⽰⼀般服务。

16位总长度是指整个IP数据报的长度。

以字节为单位。

这⾥为514字节。

注意这⼀长度仅仅是包括在以太⽹帧中的IP数据报的长度,不包括以太⽹帧开头的⽬的地址(6字节)、源地址(6字节)、类型(2字节)。

16位标识唯⼀地标识主机发送的每⼀份数据报。

通常每发送⼀份报⽂它的值就加1。

这⼀字段主要⽤来分⽚和重组。

3位标识。

在分⽚和重组时⽤到,这⾥暂不讨论。

13位⽚廉价。

在分⽚和重组时⽤到。

这⾥暂不讨论。

8位⽣存时间表⽰该数据报能够经过的最多路由器数。

经过⼀个路由器值减1。

减到0则丢弃该数据报。

并发送ICMP报⽂通知源主机。

8位协议域。

分别有:1表⽰ICMP协议2表⽰IGMP协议6表⽰TCP协议17表⽰UDP协议我们这⾥是UDP协议。

从⽽能够知道,DNS协议执⾏于UDP之上。

16位⾸部检验和。

详细怎样校验这⾥不讨论。

当校验值有误时,IP层丢弃收到的数据报,但不⽣成差错报⽂,由上层去发现丢失的数据报并进⾏重传。

接下来就是32位的源IP加上32位的⽬的IP。

这⾥没什么好说的。

最后的选项字段⾮常少被使⽤,这⾥就不讨论了。

參考:《TCP/IP具体解释》 P24-P27.。

数据包报文格式(IP包TCP报头UDP报头)

数据包报文格式(IP包TCP报头UDP报头)

数据包报文格式(IP包TCP报头UDP报头)一、IP包格式IP数据包是一种可变长分组,它由首部和数据负载两部分组成。

首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定。

数据负载部分的长度一般可变,整个IP数据包的最大长度为65535B。

1、版本号(Version)长度为4位(bit),IP v4的值为0100,IP v6的值为0110。

2、首部长度指的是IP包头长度,用4位(bit)表示,十进制值就是[0,15],一个IP包前20个字节是必有的,后40个字节根据情况可能有可能没有。

如果IP包头是20个字节,则该位应是20/4=53、服务类型(Type of Service TOS)长度为8位(bit),其组成:前3位为优先级(Precedence),后4位标志位,最后1位保留未用。

优先级主要用于QoS,表示从0(普通级别)到7(网络控制分组)的优先级。

标志位可分别表示D(Delay更低的时延)、T(Throughput 更高的吞吐量)、R(Reliability更高的可靠性)、C(Cost 更低费用的路由)。

TOS只表示用户的请求,不具有强制性,实际应用中很少用,路由器通常忽略TOS字段。

4、总长度(Total Length)指IP包总长度,用16位(bit)表示,即IP包最大长度可以达216=65535字节。

在以太网中允许的最大包长为1500B,当超过网络允许的最大长度时需将过长的数据包分片。

5、标识符(Identifier)长度为16位,用于数据包在分段重组时标识其序列号。

将数据分段后,打包成IP 包,IP包因走的路由上不同,会产生不同的到达目地的时间,到达目地的后再根据标识符进行重新组装还原。

该字段要与标志、段偏移一起使用的才能达到分段组装的目标。

6、标志(Flags)长度为3位,三位从左到右分别是MF、DF、未用。

MF=1表示后面还有分段的数据包,MF=0表示没有更多分片(即最后一个分片)。

计算机三级考试复习知识点:IP数据报

计算机三级考试复习知识点:IP数据报

计算机三级考试复习知识点:IP数据报计算机三级考试复习知识点:IP数据报IP数据报是IP协议使用的数据单元,互联层数据信息和控制信息的传递都需要通过IP数据报进行,同时也是计算机三级考试的重要内容,店铺整理了相关知识点,一起来复习下吧:1.IP数据报的格式IP数据报的格式可以分为报头区和数据区两部分,数据区包括高层需要传输的数据,而报头区是为了正确传输高层数据而增加的控制信息。

通俗地说,数据报的数据区就像是一个信件,而信封上写明寄信人和收信人等信息后,就相当于是一个报头区。

把两者结合一起,就是一个IP数据报。

报头区包含了源IP地址、目的IP地址等控制信息,具体内容如下。

(1)版本和协议类型在IP报头中,版本字段表示该数据报对应的IP协议版本号,不同的IP协议版本规定的数据报格式稍有不同,目前使用的IP协议版本号为4。

协议字段表示该数据报数据区数据的高级协议类型(如TCP),用于指明数据区数据的格式。

(2)长度报头中有两个表示长度的字段,一个为报头长度,另一个为总长度。

报头长度以32b为单位,指出该报头区的长度。

在没有选项和填充的情况下,该值为“5”。

总长度以8b为单位,表示整个IP数据报的总长度(其中包含报头区长度和数据区长度)。

(3)服务类型服务类型字段规定对本数据报的处理方式。

利用该字段,发送端可以为IP数据包分配一个转发优先级,并可以要求中转路由器尽量使用低延迟、高吞吐率或高可靠性的线路投递。

(4)生存周期IP数据报的路由选择具有独立性,因此从源主机到目的主机的传输延迟也具有随机性。

如果路由表发生错误,数据报就有可能进入一个死循环。

利用IP报头中的生存周期字段,可以有效的控制数据报在网络中无休止的流动。

在网络中,“生存周期”域随时间而递减,在该域为0时,报文将被删除,避免死循环的发生。

(5)头部校验和头部校验和用于保证IP数据报头的完整性。

注意,在IP数据报中,只含有报头校验字段,没有数据区校验字段。

IP数据报格式

IP数据报格式

IP数据报格式IP数据报格式TCP/IP协议定义了⼀个在因特⽹上传输的包,称为IP 数据报(IP Datagram)。

这是⼀个与硬件⽆关的虚拟包, 由⾸部和数据两部分组成,其格式如图所⽰。

⾸部的前⼀部分是固定长度,共20字节,是所有IP数据报必须具有的。

在⾸部的固定部分的后⾯是⼀些可选字段,其长度是可变的。

⾸部中的源地址和⽬的地址都是IP协议地址1、IP数据报⾸部的固定部分中的各字段(1)版本占4位,指IP协议的版本。

通信双⽅使⽤的IP 协议版本必须⼀致。

⽬前⼴泛使⽤的IP协议版本号为4(即IPv4)。

(2)⾸部长度占4位,可表⽰的最⼤⼗进制数值是15。

请注意,这个字段所表⽰数的单位是32位字长(1个32位字长是4字节),因此,当IP的⾸部长度为1111时(即⼗进制的15),⾸部长度就达到60字节。

当IP分组的⾸部长度不是4字节的整数倍时,必须利⽤最后的填充字段加以填充。

因此数据部分永远在4字节的整数倍开始,这样在实现IP 协议时较为⽅便。

⾸部长度限制为60 字节的缺点是有时可能不够⽤。

但这样做是希望⽤户尽量减少开销。

最常⽤的⾸部长度就是20字节(即⾸部长度为0101),这时不使⽤任何选项。

(#我们⼀般看到的版本和⾸部长度两个字段是⼗六进制45,就是版本号version=4,headlength=5,也就是⾸部长度是60个字节)(3)区分服务占8位,⽤来获得更好的服务。

这个字段在旧标准中叫做服务类型,但实际上⼀直没有被使⽤过。

1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。

只有在使⽤区分服务时,这个字段才起作⽤。

(4)总长度总长度指⾸部和数据之和的长度,单位为字节。

总长度字段为16位,因此数据报的最⼤长度为216-1=65535字节。

#可以看这个以太⽹frame总长为336字节,⽽IP数据包Total length=322,336-322=14正好是Ethernet包头的长度,所以就可以看出这IP数据包总长度⼀值就是除去Ethernet头的剩余长度,也就是IP包头加数据的长度。

ipv4 报文格式解析

ipv4 报文格式解析

ipv4 报文格式解析IPv4(Internet Protocol version 4)是互联网协议(IP)的第四版,也是第一个广泛使用的协议版本。

它构成了当今互联网技术的基础。

IPv4使用32位地址,因此可以提供大约43亿个唯一地址。

下面是IPv4报文的基本格式解析:IPv4报文(或称为数据报)主要由两部分组成:报头和数据部分。

1. 报头:版本(Version):占4位,指定IP协议的版本。

对于IPv4,此值为4。

报头长度(Header Length):占4位,表示IP报头的长度,以32位字为单位。

最小值为5,表示报头长度为20字节。

服务类型(Type of Service):占8位,用于QoS(服务质量)等目的。

总长度(Total Length):占16位,表示整个IP数据报的长度,包括报头和数据。

标识(Identification):占16位,帮助分片后的数据报重新组装。

标志(Flags):占3位,与分片相关。

片段偏移(Fragment Offset):占13位,表示分片在原始数据中的偏移量。

生存时间(Time to Live, TTL):占8位,表示数据报在网络中的生存时间或经过的路由器数量。

每经过一个路由器,此值减1,直到为0时被丢弃。

协议(Protocol):占8位,表示上层协议类型,例如TCP、UDP等。

报头校验和(Header Checksum):占16位,用于确保IP报头的完整性。

源IP地址(Source IP Address):占32位,表示发送方的IP地址。

目标IP地址(Destination IP Address):占32位,表示接收方的IP地址。

2. 数据部分:此部分包含上层协议(如TCP、UDP等)的数据。

其长度和具体内容取决于上层协议。

3. 选项(Options):这是一个可选的部分,不总是出现在IPv4数据报中。

当存在时,它跟在报头后面、数据部分之前。

选项可以用来支持各种特殊功能和测试。

TCPIP几种协议数据报格式简介

TCPIP几种协议数据报格式简介
z TCP 报文格式如下图:
TCP 是面向连接的可靠数据传输协议,因此比较复杂,在此仅作简单介绍。“序号”指数据在发送端数据流中 的位置。“确认号”指出本机希望下一个接收的字节的序号。与 IP 校验不同的是 TCP,UDP 校验采用伪头标加整个 报文一同校验的方法。TCP 协议工作原理另行介绍。
TCP 数据报中依次包括以下信息:
协议采用分层结构,因此,数据报文也采用分层封装的方法。下面以应用最广泛的以太网为例说明其数据报 文分层封装,如下图所示:
任何通讯协议都有独特的报文格式,TCP/IP 协议也不例外。对于通讯协议编程,我们首先要清楚其报文格式。 由于 TCP/IP 协议采用分层模型,各层都有专用的报头,以下就简单介绍以太网下 TCP/IP 各层报文格式。
1、 16 位源端口 Source Port。该部分占 16 个 BIT。通过此值,可以看出发起连接的计算机源端口号。
2、 16 位目的端口 Destination Port。该部分占 16 个 BIT。通过此值,可以看出要登录的目的端口号。
3、 32 位序列号 Initial Sequence Number。表示初始连接的请求号,即 SEQ 值。该部分占 32 个 BIT。
4、 32 位确认号 Next Expected SEQ Numbe。对方返回的 ACK 值。该部分占 32 个 BIT。
5、 4 位数据偏移 Data Offset。表示数据偏移的大小。该部分占 4 个 BIT。
6、 6 位保留位 Reserved Bites:保留位,此处不用。该部分占 6 个 BIT。
的 16 次方减 1,即:65535 个字节。因此,在以太网中能够传输的最大 IP 数据包为 65535 个字节。
5、 16 位标识号 Identification。该部分占 16 个 BIT,以十进制数表示。

IP数据报的格式

IP数据报的格式

IP数据报的格式 IP协议具有什么功能从数据报的格式中就能够知道,⼀个IP数据报被分为了⾸部和数据两个部分,在⾸部中有20个字节是固定的,还有⼀些可选字段长度是可变的,下⾯是IP数据报的具体格式:IP数据报各个字段的意义 1.版本号 版本号占4位,指使⽤的IP协议的版本,通信双⽅使⽤的版本要⼀致才能通信,⽬前的版本有IPv4和IPv6, 2.⾸部长度 指数据报的⾸部的长度,占4位,注意这⾥的⾸部长度的单位是4个字节,所以最⼤的⾸部长度可以达到 15 * 4 = 60 个字节,当⾸部长度不是4个整数倍的时候,就要使⽤填充字段进⾏填充。

3.区分服务 占8位,⽤来获得更好的服务,只有在使⽤区分服务的时候,这个字段才有⽤,⼀般情况下,都不使⽤这个字段 4.总长度 ⾸部和数据部分长度之和,占16位,因此IP数据报的最⼤长度位2的16次⽅ - 1,即65535个字节,然⽽这样长度的数据报是极少遇到的,我们知道在数据链层规定了MTU的⼤⼩(常⽤的以太⽹的MTU为1500字节),当数据报的⼤⼩超过MTU时,就要进⾏分⽚处理。

IP协议规定所有的主机和路由器,必须能够接受长度不超过576字节的数据报,当要发送的数据包的长度超过576个字节时,就应该先了解⽬的主机是否能够接受所发送的数据报的长度,否则就要进⾏分⽚处理了。

5.标识 占16位,IP软件在存储器中维持⼀个计数器,每产⽣⼀个数据报,就将计数器加⼀,并将此值赋值给标识字段,当数据报的长度,超过⽹络的MTU时,就必须进⾏分⽚处理,这个标识将会赋值到所有的分⽚中,也就是说⼀个数据报经过分⽚之后的形成的多个数据报的标识是⼀样的,这样做是为了将它们组成⼀个完整的数据报。

6.标志 占3位,但⽬前只有两位有意义, 标志字段的最低位为MF,当MF = 1 时,表⽰后⾯还有分⽚,MF = 0表⽰这是最后⼀个分⽚ 中间位位DF,DF的意思是不能分⽚,当DF=0时,才允许分⽚ 7.⽚位移 占13位,分⽚之后的每⼀⽚在原来的数据报中的位置,即相对于数据报的起点位置,该⽚从何处开始,⽚位移以8个字节位单位, 8.⽣存时间 占8位,英⽂缩写为TTL(Time To Live),这个字段指明数据报在⽹络中的⽣存时间,每当数据报经过⼀个路由器,TTL就减1,当TTL为0时,路由器就丢弃该数据报,⽽不进⾏转发了,这样做的⽬的是为了防⽌数据报在⽹络中“兜圈⼦”⽽⽩⽩消耗⽹络资源,⼀般的操作系统都有默认的TTL: Linux 64 Windows 128 Unix 256 9.协议 占8位,协议字段指出数据包的数据部分使⽤的是何种协议,以便使⽬的主机的IP层知道应该将数据报中的数据交给哪个部分来处理,常见的协议和对应的字段值如下: ICMP 1 IGMP 2 IP 4 , IP数据报再封装到IP数据报中 TCP 6 IGP 9 UDP 17 IPv6 41 ESP 50 OSPF 89 10.⾸部检验和 占16位,只将⾸部检验过后的检验和填⼊此字段中,不检验数据报的数据部分,数据报每经过⼀个路由器都要重新计算检验和,检验和的计算过程如下: 先将检验和字段设置为全0, 然后将IP数据报的⾸部划分位以16位为⼀个单位的序列,将这些字段进⾏反码算术运算求和, 将得到的结果取反,并写⼊检验和字段,注意这个取反后的结果和原来的结果相加为全1 接收⽅收到数据报之后,也将IP数据报的⾸部划分位以16位为⼀个单位的序列,将这些字段进⾏反码算术运算求和, 若将得到的结果取反不为0,那么证明出错了,则丢弃该数据报,若取反结果为0,将数据报上交。

IP数据报

IP数据报

IP 数据报版本 报头长度服务类型 总长度 标识标志 片偏移 生存周期 协议头部校验和 源IP 地址目的IP 地址选项+填充数据…… IP 数据报格式1. 版本与协议类型在IP 报头中,版本字段表示该数据报对应的IP 协议版本号,不同的IP 协议版本规的数据报格式稍有不同,目前使用的IP 协议版本号为“4”。

为了避免错误解释报文格式和内容,所有IP 软件在处理数据报之前都必须检查版本号,以确保版本正确。

协议字段表示该数据报数据区数据的高级协议类型(如TCP ),用于指明数据区数据的格式。

2. 长度报头中有两个表示长度的字段,一个为报头长度,一个为总长度。

报头长度以32位的双字节为单位,指出该报头区的长度。

在没有选项和填充的情况下,该值为“5”。

一个含有选项的报头长度则取决于选项域的长度。

但是,报头长度应当是32位的整数倍,如不是,需在填充域加0凑齐。

总长度以8位的字节为单位,表示整个IP 数据报的长度(其中包含头部长度和数据报区长度)。

3. 服务类型服务类型字段规定对本数据报的处理方式。

利用该字段,发送端可以为IP 数据报分配一个转发优先级,并可以要求中途转发路由器尽量使用低延迟、高吞吐率或高可靠性的线路投递。

但是,中途的路由器能否按照IP 数据报要求的服务类型进行处理,则依赖于路由器的实现方法和底层物理网络技术。

4. 生存周期IP 数据报的路由选择具有独立性,因此从源主机到目的主机的传输延迟也具有随机性。

如果路由表发生错误,数据报有可能进入一条循环路径,无休止地在网络中流动。

利用IP 报头中的生存周期字段,就可以有效控制这一情况的发生。

在网络中,“生存周期”域随时间而递减,在该域为“0”时,报文将被删除,避免死循环的发生。

5. 头部校验和头部校验和用于保证IP 数据报报头的完整性。

请注意,在IP 数据报中只含有报头校验字段,而没有数据区校验字段。

这样做的最大好处是,可大大节约路由器处理每一数据报的0 4 8 16 19 31 报头区数据区时间,并允许不同的上层协议选择自己的数据校验方法。

ip协议的语法

ip协议的语法

ip协议的语法【实用版】目录1.IP 协议简介2.IP 协议的语法结构3.IP 地址与子网掩码4.端口号与协议类型5.总结正文一、IP 协议简介互联网协议(Internet Protocol,简称 IP)是互联网协议族(TCP/IP)中的一员,主要负责在互联网中传输数据包。

IP 协议采用无连接的、不可靠的数据报传输方式,使得互联网能够高效地传输各种类型的信息。

二、IP 协议的语法结构IP 协议的数据报格式如下:- 版本(Version):表示 IP 协议的版本号,通常为 IPv4 或 IPv6。

- 首部长度(Header Length):表示 IP 首部的长度,以 4 字节为单位。

该字段的最小值为 20 字节。

- 服务类型(Type of Service):表示数据包的服务质量,例如优先级、延迟和吞吐量。

- 总长度(Total Length):表示整个 IP 数据报的长度,包括首部和数据部分。

- 标识(Identification):用于标识数据包的唯一性。

每个数据包都有一个唯一的标识符。

- 标志(Flags):用于指示是否分段以及如何分段数据包。

- 分段偏移量(Fragment Offset):用于指示数据包在分段后的位置。

- 生存时间(Time to Live):表示数据包在网络中允许经过的最大路由器数量。

- 协议(Protocol):表示数据包所使用的协议类型,例如 TCP 或 UDP。

- 首部校验和(Header Checksum):用于检验 IP 首部是否正确。

- 源 IP 地址(Source IP Address):表示数据包的源 IP 地址。

- 目标 IP 地址(Destination IP Address):表示数据包的目标 IP 地址。

三、IP 地址与子网掩码IP 地址是 IP 协议中用于唯一标识设备的地址。

IP 地址通常分为IPv4 和 IPv6 两种,其中 IPv4 地址是 32 位的,而 IPv6 地址是 128 位的。

计算机网络原理 IP数据报的格式

计算机网络原理  IP数据报的格式

计算机网络原理IP数据报的格式要进行传输的数据在IP层首先需要加上IP头信息,封装成IP数据报。

IP数据报包括一个报文头以及与更高层协议相关的数据。

图6-22所示为IP数据报的具体格式。

图6-22 IP数据报格式IP数据报的格式可以分为报头区和数据区两大部分,其中,数据区包括高层需要传输的数据,报头区是为了正确传输高层数据而增加的控制信息,这些控制信息包括:●版本。

长度为4bit,表示与数据报对应的IP协议版本号。

不同的IP协议版本,其数据报格式有所不同。

当前的IP协议版本号为“4”。

所有IP软件在处理数据报之前都必须检查版本号,以确保版本正确。

IP软件将拒绝处理版本不同的数据报,以避免错误解释其中内容。

●报头长度。

长度为4bit,指出以32bit长计算的报头长度,IP数据报头中除IP选项域外,其他各域均为定长域,各定长域长度为20个字节,这样一个不含选项域的普通IP数据报其头标长度域值为“5”。

总的来说,头标长度应为32bit的整数位,假如不是,在头标尾部添“0”凑齐。

●服务类型。

服务类型(SERVICE TYPE)规定对本数据报的处理方式。

该域长度为一个字节,被分为5个子域,其子域结构如表6-6所示。

其中,3bit的“优先权”(PRECEDENCE)子域指示本数据报的优先权,表示本数据报的重要程度。

优先权取值从0到7,“0”表示一般优先权,“7”表示网络控制优先权,优先权值是由用户指定的。

大多数网络软件对此不予理睬,然而它毕竟提供了一种手段,允许控制信息享受比一般数据较高的优先权。

DTR三位数据表示本数据报所要的传输类型。

其中,D 代表低延迟——Delay;T代表高吞吐率——Throughput;R代表高可靠性——Reliability。

上述3位只是用户的请求,不具有强制性,Internet在寻找路径时可能以它们为参考。

●总长:总长域为16bit,指示整个IP数据报的长度,以字节为单位,其中包括报头长度及数据区长。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IP数据报格式
TCP/IP协议定义了一个在因特网上传输的包,称为IP 数据报(IP Datagram)。

这是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如图所示。

首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。

在首部的固定部分的后面是一些可选字段,其长度是可变的。

首部中的源地址和目的地址都是IP协议地址
1、IP数据报首部的固定部分中的各字段
(1)版本占4位,指IP协议的版本。

通信双方使用的IP 协议版本必须一致。

目前广泛使用的IP协议版本号为4(即IPv4)。

(2)首部长度占4位,可表示的最大十进制数值是15。

请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。

当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

因此数据部分永远在4字节的整数倍开始,这样在实现IP 协议时较为方便。

首部长度限制为60 字节的缺点是有时可能不够用。

但这样做是希望用户尽量减少开销。

最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何
选项。

(#我们一般看到的版本和首部长度两个字段是十六进制45,就是版本号version=4,headlength=5,也就是首部长度是60个字节)
(3)区分服务占8位,用来获得更好的服务。

这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。

1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。

只有在使用区分服务时,这个字段才起作用。

(4)总长度总长度指首部和数据之和的长度,单位为字节。

总长度字段为16位,因此数据报的最大长度为
216-1=65535字节。

#可以看这个以太网frame总长为336字节,而IP数据包Total length=322,336-322=14正好是Ethernet包头的长度,所以就可以看出这IP数据包总长度一值就是除去Ethernet头的剩余长度,也就是IP包头加数据的长度。

在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。

当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

(5)标识(identification)占16位。

IP软件在存储器中维
持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。

但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。

当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。

相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

(6)标志(flag)占3位,但目前只有2位有意义。

●标志字段中的最低位记为MF(More Fragment)。

MF=1即表示后面“还有分片”的数据报。

MF=0表示这已是若干数据报片中的最后一个。

●标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。

只有当DF=0时才允许分片。

(7)片偏移占13位。

片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。

也就是说,相对用户数据字段的起点,该片从何处开始。

片偏移以8个字节为偏移单位。

这就是说,每个分片的长度一定是8字节(64位)的整数倍。

(8)生存时间占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。

由发出数据报的源点设置这个字段。

其目的是防止无法交付的数
据报无限制地在因特网中兜圈子,因而白白消耗网络资源。

最初的设计是以秒作为TTL的单位。

每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。

若数据报在路由器消耗的时间小于1秒,就把TTL值减1。

当TTL 值为0时,就丢弃这个数据报。

#TTL通常是32或者64,scapy中默认是64
(9)协议占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

(在scapy中,下层的这个protocol一般可以从上曾继承而来,自动填充,我们一般可以省略不填此项)
(10)首部检验和占16位。

这个字段只检验数据报的首部,但不包括数据部分。

这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。

不检验数据部分可减少计算的工作量。

(11)源地址占32位。

(12)目的地址占32位。

2、IP数据报首部的可变部分
IP首部的可变部分就是一个可选字段。

选项字段用来支持排
错、测量以及安全等措施,内容很丰富。

此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。

某些选项项目只需要1个字节,它只包括1个字节的选项代码。

但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。

增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。

这就增加了每一个路由器处理数据报的开销。

实际上这些选项很少被使用。

新的IP版本IPv6就将IP数据报的首部长度做成固定的。

目前,这些任选项定义如下:
(1)安全和处理限制(用于军事领域)
(2)记录路径(让每个路由器都记下它的IP地址)
(3)时间戳(让每个路由器都记下它的IP地址和时间)(4)宽松的源站路由(为数据报指定一系列必须经过的IP地址)
(5)严格的源站路由(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)这些选项很少被使用,并非所有主机和路由器都支持这些选项。

附:scapy中的IP层实现:各个参数对应的非常清楚,我们经常关心的可能是ttl,proto,src,dst等等
>>> ls(IP)
version : BitField = (4)
ihl : BitField = (None)
tos : XByteField = (0)
len : ShortField = (None)
id : ShortField = (1)
flags : FlagsField = (0)
frag : BitField = (0)
ttl : ByteField = (64)
proto : ByteEnumField = (0) chksum : XShortField = (None) src : Emph = (None)
dst : Emph = ('127.0.0.1') options : IPoptionsField = ('') >>> IP().show()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= ip chksum= 0x0 src= 127.0.0.1 dst= 127.0.0.1 options= '' >>>。

相关文档
最新文档