TCPIP数据报格式
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包头加数据的长度。
常见网络协议报文格式汇总
常见网络协议报文格式汇总网络协议是计算机网络通信中,用于规定通信双方传输数据的格式和规则的标准化。
协议中的报文是通信双方之间进行数据交换的载体。
下面我将简单介绍一些常见的网络协议报文格式。
1. HTTP(Hypertext Transfer Protocol)报文格式:-请求报文格式:```<Method> <Request-URI> <HTTP-Version><Headers><Entity-Body>```-响应报文格式:```<HTTP-Version> <Status-Code> <Reason-Phrase><Headers><Entity-Body>```2. TCP(Transmission Control Protocol)报文格式:-TCP报文格式如下:```Source Port Destination PortSequence Number Acknowledgment NumberData Offset Reserved Control BitsWindow Checksum Urgent PointerOptions (if any)Data```3. UDP(User Datagram Protocol)报文格式:-UDP报文格式如下:```Source Port Destination PortLength ChecksumData```4. IP(Internet Protocol)报文格式:-IPv4报文格式如下:```Version IHL Type of Service Total LengthIdentification Flags Fragment Offset Time to Live Protocol Header Checksum Source IP AddressDestination IP AddressOptions (if any)Padding (if necessary)Data```-IPv6报文格式如下:```Version Traffic Class Flow Label Payload Length Next HeaderHop LimitSource IPv6 AddressDestination IPv6 AddressOptions (if any)Padding (if necessary)Data```5. ICMP(Internet Control Message Protocol)报文格式:-ICMP报文格式如下:```Type Code ChecksumIdentifier Sequence NumberData (Optional)```6. Ethernet报文格式:- Ethernet报文格式如下:```Destination MAC AddressSource MAC AddressEthernet TypePayload```7. DNS(Domain Name System)报文格式:-DNS报文格式如下:```DNS Message HeaderDNS Message Question SectionDNS Message Answer SectionDNS Message Authority SectionDNS Message Additional Section```8. FTP(File Transfer Protocol)报文格式:-FTP报文格式如下:```Arguments```9. SMTP(Simple Mail Transfer Protocol)报文格式:-SMTP报文格式如下:```Arguments```这些是常见的网络协议的报文格式,它们用于在计算机网络中进行数据传输和通信。
数据包报文格式(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数据包格式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,TCP,UDP,ICMP报文格式
以太网数据格式与各种报文格式一、数据封装当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络。
而再这个过程中,每一层都会对要发送的数据加一些首部信息。
整个过程如下图。
如图可以看出,每一层数据是由上一层数据+本层首部信息组成的,其中每一层的数据,称为本层的协议数据单元,即PDU.应用层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段),图示为TCP段传输层的数据(TCP段)传给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包); 图示为IP数据包网络层数据报(IP数据包)被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧),图示为以太网帧。
最后,帧被转换为比特,通过网络介质传输。
这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
二、数据格式需要注意的是,这里所说的以太网帧,与我们常说的以太网是不一样的。
下面我们就来介绍每一层数据的首部信息内容。
首先我们知道世界上有个协会叫作IEEE,即电子工程师协会,里面有个分会,叫作IEEE802委员会,是专门来制定局域网各种标准的。
而802下面还有个分部,叫作802.3.就是我们经常提到的IEEE802.3,这个部门制定的规范叫以太网规范,这个以太网规范中就定义了上面提到的“以太网首部”,这个以太网规范,实际只定义了数据链路层中的MAC层和物理层规范。
(注意数据链路层包括MAC子层和LLC子以太网帧格式:以太网常用帧格式有两种,一种是Ethernet II,另一种是IEEE 802.3 格式。
这两种格式区别是:Ethernet II中包含一个Type字段,。
其中Type字段描述了,以太网首部后面所跟数据包的类型,例如Type为0x8000时为IP协议包,Type为8060时,后面为ARP协议包。
以太网中多数数据帧使用的是Ethernet II帧格式。
III. Linux系统编程_ 36 TCP/IP协议基础_4 IP数据报格式
第 36 章 TCP/IP协议基础
4. IP数据报格式
IP数据报的格式如下(这里只讨论IPv4)(该图出自[TCPIP]):
图 36.8. IP数据报格式
IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。
对于IPv4,4位版本字段是4。
4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节,也就是不带任何选项的IP首部,4位能表示的最大值是15,也就是说首部长度最大是60字节。
8位TOS字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。
总长度是整个数据报(包括IP首部和IP层payload)的字节数。
每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。
3位标志和13位片偏移用于分片。
TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。
协议字段指示上层协议是TCP、UDP、ICMP还是IGMP。
然后是校验和,只校验IP首部,数据的校验由更高层协议负责。
IPv4的IP地址长度为32位。
选项字段的解释从略。
想一想,前面讲了以太网帧中的最小数据长度为46字节,不足46字节的要用填充字节补上,那么如何界定这46字节里前多少个字节是IP、ARP或RARP 数据报而后面是填充字节?。
tcp、udp、ip、icmp报文格式分析
tcp、udp、ip、icmp报⽂格式分析TCP 、UDP 、IP、 ICMP协议报⽂格式分析Tcp报⽂格式:Wireshark抓包如图:源端⼝/⽬的端⼝(16bit):在TCP报⽂中包涵了源端⼝/⽬的端⼝,源端⼝标识了发送进程,⽬的端⼝标识了接收⽅进程。
由上图可以看出在此报⽂中我们的源端⼝号是54160, ⽬的端⼝是cichlid(1377)。
序列号(32bit):Sequence Number这个是发送序列号,⽤来标识从源端向⽬的端发送的数据字节流,它表⽰在这个报⽂端中的第⼀个数据字节的顺序号,序列号是32位的⽆符号类型,序列号表达达到2^32 - 1后⼜从0开始,当建⽴⼀个新的连接时,SYN标志为1,系列号将由主机随机选择⼀个顺序号ISN(Initial Sequence Number)。
此报⽂中的序列号是0x37e3d3a9如下图:确认号(32bit):Acknowledgment Number它包涵了发送确认⼀端所期望收到的下⼀个顺序号。
因此确认序列号应当是上次成功接收到数据的顺序号加1。
只有ACK标志为1时确认序号字段才有效。
TCP为应⽤层提供全双⼯服务,这意味着数据能在两个⽅向上独⽴的进⾏传输,因此连接的两断必须要保证每个⽅向上的传输数据顺序。
由图可以看出此报⽂的确认号为0xaa09ab7b。
偏移(4bit):这⾥的偏移实际指的是TCP⾸部的长度,它⽤来表明TCP⾸部中32bit字的数⽬,通过它可以知道⼀个TCP包它的⽤户数据从哪⾥开始,这个字段占4bit,若此字段的值为1000,则说明TCP⾸部的长度是8 * 4 = 32字节,所以TCP⾸部的最⼤长度是该字段的值为1111 = 15, 15 * 4 =60字节。
此报⽂我们的偏移量在0x50中,⼜因它占4bit,0x50等于⼆进制的0101 0000 所以我们的偏移量是 0101=5,所以我们的TCP报⽂⾸部长度为5* 4 = 20字节。
TCP协议及TCP数据报格式
TCP协议及TCP数据报格式TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输控制协议,用于在计算机网络中传输数据。
它提供了一种全双工通信方式,确保数据的可靠传输,在传输过程中处理丢包、乱序、重复等问题,并且具有流量控制和拥塞控制的功能。
1.面向连接:在数据交换之前,发送端和接收端需要建立连接,通过三次握手协商通信参数。
2.可靠传输:通过序号、确认和超时重传机制,确保数据的可靠传输,避免数据丢失、乱序、重复等问题。
3.拥塞控制:根据网络情况调整发送速率,避免网络拥塞。
4.全双工通信:发送端和接收端可以同时发送和接收数据。
5.基于字节流:TCP将数据分割为字节流进行传输,不保留数据的边界。
TCP数据报格式包含以下字段:1.源端口号(16位):指定发送端口。
2.目标端口号(16位):指定接收端口。
3.序号(32位):发送方发送的数据段的第一个字节的序号。
4.确认序号(32位):接收方期望收到的下一个字节的序号。
5.TCP数据偏移(4位):指示TCP段中数据部分开始位置距离TCP段的开始位置的偏移量。
6.保留字段(6位):用于将来使用,目前保留为0。
7.控制位(6位):包括URG、ACK、PSH、RST、SYN和FIN等标志位,用于控制TCP连接的建立、维护和关闭。
8.窗口大小(16位):接收方期望从发送方接收的数据的字节数。
9.校验和(16位):用于检测TCP段是否有错误。
10.紧急数据指针(16位):指示紧急数据的位置。
11.选项(变长):包括最大段长度、时间戳、选择确认和窗口扩大因子等选项。
TCP使用字节流传输数据,将数据分割为TCP段进行传输,其中每个TCP段由TCP首部和数据部分组成。
TCP首部的长度是20字节,可以通过选项字段扩展。
综上所述,TCP协议是一种面向连接的、可靠的传输控制协议,它通过序号、确认和超时重传机制确保数据的可靠传输,并具备流量控制和拥塞控制的功能。
TCPIP几种协议数据报格式简介
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,以十进制数表示。
tcpip数据格式
IP数据报格式IP数据报(datagram)的头部格式如下:Example Internet Datagram HeaderVersion:4 bits版本字段标明建立数据报的IP版本,目前的IP版本是IPv4,IPv6正在发展中。
IPv4:0100。
IHL:4 bitsIP数据报头部长度(Internet Header Length),其度量单位为4 Bytes(32 bits),因此IHL始终是4 Bytes(32 bits)的整数倍,最长可达15 * 4 = 60个字节。
IHL最小值为5(即20 Bytes),为不含填充字段和选项字段的最常见的IP数据报头格式。
Type of Service:8 bits服务类型,有3 bits的Precedence、1 bit的Delay、1 bit的Throughout、1 bit的Relibility和2 bits的Reserved组成。
其值一般为0x00,表示Routine+Normal Delay+NormalThroughout+Normal Relibility。
Total Length:16 bits总长度字段是指整个IP数据报的长度,以字节为单位。
理论上,IP数据报最长可达2^16-1=65535 Bytes(64KB)。
IP数据长度由该字段值减去IHL值计算得到。
Identification:16 bits标识符是发送者为了接收者重组数据报的依据。
当一个IP数据报比较大时,可能会被切分成多个数据包(fragments)分多次发送(此时Flags的第二位将置0,第三位置1),接收端依据该字段进行组包。
Flags:3 bitsThe internet modules use fields in the internet headerto fragment and reassemble internet datagrams when necessary fortransmission through "small packet" networks.该字段用于分段控制。
(转)TCPIP数据包头格式-jiangnii-博客园
(转)TCPIP数据包头格式-jiangnii-博客园(转)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 FORMatTCP 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协议的数据,不是完整的网络通讯数据。
以太网帧,IP,TCP,UDP首部结构
以太网帧,IP,TCP,UDP首部结构1.以太网帧的格式以太网封装格式2.IP报头格式IP是TCP/IP协议簇中最为重要的协议。
所有的TCP,UDP, ICMP 和IGMP数据都以IP数据报格式传输。
IP提供的是不可靠、无连接的协议。
普通的IP首部长为20个字节,除非含有选项字段。
4位版本:目前协议版本号是4,因此IP有时也称作IPV4.4位首部长度:首部长度指的是首部占32bit字的数目,包括任何选项。
由于它是一个4比特字段,因此首部长度最长为60个字节。
服务类型(TOS):服务类型字段包括一个3bit的优先权字段(现在已经被忽略),4bit的TOS子字段和1bit未用位必须置0。
4bit的TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小费用。
4bit中只能置其中1比特。
如果所有4bit均为0,那么就意味着是一般服务。
总长度:总长度字段是指整个IP数据报的长度,以字节为单位。
利用首部长度和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。
由于该字段长16bit,所以IP数据报最长可达65535字节。
当数据报被分片时,该字段的值也随着变化。
标识字段:标识字段唯一地标识主机发送的每一份数据报。
通常每发送一份报文它的值就会加1。
生存时间:T T L(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。
它指定了数据报的生存时间。
T T L的初始值由源主机设置(通常为 3 2或6 4),一旦经过一个处理它的路由器,它的值就减去 1。
当该字段的值为 0时,数据报就被丢弃,并发送 I C M P报文通知源主机。
首部检验和:首部检验和字段是根据 I P首部计算的检验和码。
它不对首部后面的数据进行计算。
I C M P、I G M P、U D P和T C P在它们各自的首部中均含有同时覆盖首部和数据检验和码。
3.TCP首部格式尽管T C P和U D P都使用相同的网络层( I P),T C P却向应用层提供与U D P完全不同的服务。
tcpip协议报文格式
1、IP报文格式IP协议是TCP/IP协议族中最为核心的协议。
它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。
在局域网环境,IP协议往往被封装在以太网帧(见本章 1.3节)中传送。
而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。
如图2-3所示:图2-3 TCP/IP报文封装图2-4是IP头部(报头)格式:(RFC 791 )。
7强地卵H标m址町选项图2-4 IP头部格式其中:•版本(Version )字段:占4比特。
用来表明IP协议实现的版本号,当前一般为IPv4,即0100。
•报头长度(In ternet Header Len gth ,IHL )字段:占4比特。
是头部占32比特的数字,包括可选项。
普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。
此字段最大值为60字节。
•服务类型(Type of Service ,TOS )字段:占8比特。
其中前3比特为优先权子字段(Precede nee,现已被忽略)。
第8比特保留未用。
第4至第7比特分别代表延迟、吞吐量、可靠性和花费。
当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。
这4比特的服务类型中只能置其中1比特为1。
可以全为0,若全为0则表示一般服务。
服务类型字段声明了数据报被网络系统传输时可以被怎样处理。
例如:TELNET 协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP (Network News Transfer Protocol ,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。
实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF (Open Shortest Path First Protocol )、IS-IS (I ntermediate System to In termediate System Protocol )可以根据这些字段的值进行路由决策。
TCP-IP包格式详解
可以用arp命令来检查ARP高速缓存。参数 -a的意思是显示高速缓存中所有的内容。
ARP Utility
五、RARP的分组格式
RARP分组的格式与ARP分组基本一致。 它们之间主要的差别是RARP请求或回答的 帧类型代码为0x8035,而且RARP请求的操 作代码为3,回答操作代码为4。
对应于ARP,RARP请求以广播方式传送, 而RARP回答一般是单播(unicast)传送的。
Stn. B ROUTER
Stn. C
Stn. D
MAC R1 NET N1
MAC R2 NET N2
Station B wants to send a frame to Station D
One Way – Using Router with Proxy ARP Station B Arp’s for Station D Router Proxy ARP responds with MAC address of R1 Station B transmits frame with SourceMAC=MB, SourceNetwork=N1B, DestinationMAC=R1, DestinationNetwork=N2D Router forwards frame with SourceMAC=R2, SourceNetwork=N1B, DestinationMAC=MD, DestinationNetwork=N2D Second Way – Station knows R1 is the designated Router for N2
分片实例
7、协议类型,可能是tcp,或者udp或者其他. 8、头部校验和,当数据到达时,头部所有的16 位累加起来,再取结果的补码,其结果应该为0. 9、32位的源地址和32位的目标地址, 10、选项 选项长度可变,提供某些场合下需要的控 制功能,IP首部的长度必须是4个字节的整数 倍,如果选项长度不是4的整数倍,必须填充 数据0。
TCP协议及TCP数据报格式
20 字节
固定
首部
序号字段——占 4 字节。TCP 连接中传送的数据流 中的每一个字节都编上一个序号。序号字段的值则指 的是本报文段所发送的数据的第一个字节的序号。
序号:分段的序列号,给出该分段数据的
第一个字节的顺序号,长度为32位,表示 该分段在发送方的数据流中的位置。例如, 若某一个分段的顺序号值为“1301”,而其 所携带的数据长度为500字节,则相当于该 分段数据的第一个字节的顺序号为1301, 最后一个字节的顺序号值为1800,并且该 数据流下一个分段的顺序号字段值应该为 “1801”。
比特 0
8
16
24
31
TCP 首部
数据 偏移
源端口
目的端口
序号
确认号
保留
U AP RSF R CS SY I G KH T NN
检验和
窗口 紧急指针
选 项 (长 度 可 变)
填充
20 字节
固定
首部
检验和 —— 占 2 字节。检验和字段检验的范围包括 首部和数据这两部分。
5.2. TCP协议
5.2.1.TCP协议概述 TCP,即传输控制协议,它提供面向连接
的、可靠的(没有数据重复或丢失)、全双工 的数据流传输服务。
TCP的协议数据单元被称为段(Segment)
数据段分为两部分,即段头和数据
段头一般长20字节(如有选项部分另加),是 TCP 为了实现端到端可靠传输所加上的控制信 息。
比特 0
8
16
24
31
TCP 首部
数据 偏移
源端口
目的端口
序号
确认号
保留
U AP RSF R CS SY I G KH T NN
路由交换技术-TCP报文格式
又称注册端口号 范围是1024到49151 没有明确的定义服务对象
又称临时端口号 范围是49152到65535 系统分配给应用程序使用
使用完成后释放这个端口
端口号与协议的对应关系
服务类型 ftp-data
ftp ssh telnet smtp dns tftp http pop3 snmp https
端口号 20 21 22 23 25 53 69 80 110 161 443
传输层协议 tcp/udp tcp tcp/udp tcp/udp tcp tcp/udp udp tcp tcp udp tcp
内容 文件传输协议 文件传输协议 SSH远程登录协议 远程登录协议 简单邮件传输协议
域名系统 小型文件传输协议 超文本传输协议
1. TCP报文格式
bit0
bit31
源端口(16)
目目标标端端口((1166))
序列号(Sequence Number,32)
确认号(Acknowledgement Number,32)
UA P R S F 数据偏移 保留字段 R C S S Y I
GK H T NN
窗口大小(16位)Fra bibliotek校验和(16)
GK H T NN
窗口大小(16位)
校验和(16)
紧急指针(16)
可选项
填充
数据
3
序列号
占用32位 不同的数据段 按序列号把数据段重新排列
8
1. TCP报文格式
bit0
bit31
源端口(16)
目标端口(16)
序列号(Sequence Number,32)
确认确号认(号A(cAkcnkonowwleleddggemmeennttNNumumbebr,er3,2)32)
IP数据报格式详解
IP数据报格式详解IP协议提供不可靠无连接的数据报传输服务,IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。
IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据区包括高层协议需要传输的数据。
IP数据报的格式如下:注意,上图表示的数据,最高位在左边,记为0位;最低位在右边,记为31位。
在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位。
由于TCP/IP协议头部中所有的二进制数在网络中传输时都要求以这种顺序进行,因此把它称为网络字节顺序。
在实际编程中,以其他形式存储的二进制数必须在传输数据前使用网络编程API相应的函数把头部转换成网络字节顺序。
IP数据报各字段功能如下:1)版本号:占用4位二进制数,表示该IP数据报使用的IP协议版本。
目前Internet中使用的主要是TCP/IP协议族中版本号为4的IP协议。
2)头长度:占用4位二进制位,此域指出整个报头的长度(包括选项),该长度是以32位二进制数为一个计数单位的,接收端通过此域可以计算出报头在何处结束及从何处开始读数据。
普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。
3)服务类型(TOS、type of service):占用8位二进制位,用于规定本数据报的处理方式。
服务类型字段的8位分成了5个子域:(1)—优先权(0-7)数越大,表示该数据报优先权越高。
网络中路由器可以使用优先权进行拥塞控制,如当网络发生拥塞时可以根据数据报的优先权来决定数据报的取舍。
(2)—短延迟位D(Delay):该位置1时,数据报请求以短延迟信道传输,0表示正常延时。
(3)—高吞吐量位T(Throughput):该位置1时,数据报请求以高吞吐量信道传输,0表示普通。
(4)—高可靠位R(Reliability):该位置1时,数据报请求以高可靠性信道传输,0表示普通。
TCPIP包格式..
TCPIP包格式..以太网帧格式以下是各种封装:1.以太网II封装:以太网技术的基础是以太网帧,也作标准以太网帧,也称为ARPA,即以太网II帧(最初的以太网II标准也称为DIX,由Digital,Intel和Xerox三家发起公司的首字母拼合而成)。
帧格式如下:8Bytes6Bytes6Bytes2Bs46~1500Bytes4Bytes Preamble Sou-MACDes-MAC Type Payload FCS图1:以太网II报文格式下面解释以太网II帧中的各个字段:Preamble—也作“Syncword”,用来同步。
(在这里为10101010)Des-MAC—此目的地址可以是广播地址0xFFFFFFFFFFFF;可以是基于目的节点MAC地址的特定的48比特的单播地址;或者多播地址。
此MAC地址可以从协议同步期间消息的源地址字段中找到。
Sou-MAC—此源地址是发送方的48比特的MAC地址。
Type—即“以太网类型”,此字段用于识别上层协议。
(详见下文)Payload—负载,即数据,包含了封装的数据(如:IP分组)。
以太网II的数据有效长度范围是46~1500字节。
FCS —此字段包含32比特的循环冗余校验(Cyclic RedundancyCheck ,CRC )值,用来校验损坏的帧。
最初的以太网II 帧格式有一些缺陷。
为了允许冲突检测,10Mbits/s 以太网要求分组大小最小为64字节。
这就意味着如果帧长达不到标准就必须用0来填充短帧。
因此,上层协议需要包含一个“长度”字段来将实际数据与填充值区分开来。
幸运的是,为“以太网类型”字段所分配的值—0x0600XNS (施乐)、0x0800IP (Internet 协议)和0x6003DECNET —总是大于十进制值1500(0x05DC )这一最大帧长度。
所以IEEE 的802委员会对这一任务的解决方案提供了一个标准,即802.3。
TCPIP等协议报文格式
TCP/IP等协议报文格式以太网数据报文封装格式TCPIPETH8字节前导用于帧同步,CRC用于帧校验,此2类数据可由网卡芯片自动添加。
目的地址和源地址是指网卡的物理地址,即MAC地址,多数情况下具有唯一性。
帧类型或协议类型——0X0806为ARP协议,0X0800为IP协议。
ARP/RARP (地址解析/反向地址解析)报文格式协议类型——发送者所提供/请求的高级协议地址类型(IP协议=0x0800)操作——ARP请求=1,ARP响应=2,RARP请求=3,RARP响应=4IP数据报头格式如下表1、Version——版本(4位)——IPV4=4;2、HeaderLength——包长度(4位)——例1111B,包长度=15*4=60(IP包头长度最大=60)3、Type Of Service——服务类型(8位)D0~D2 ——NCD3 ——最小延时(Telnet服务使用)D4 ——吞吐量(FTP服务使用)D5 ——可靠性(SNMP服务使用)D6 ——最小代价D7 ——NC4、Total Length——总长度(16位),最大IP数据包长度为655355、Identification——标识号(16位),十进制表示6、Flags——标志(3位)D0 ——NCD1 ——分片标志位,1有效D2 ——为1,表示还有更多的片7、Fragment Offset——偏移(13位)8、Time To Live——生存时间(8位)9、protocol——协议类型(8位)——TCP=6, UDP=17, ICMP=110、Header Checksum——包头校验(16位)11、Source Address——源IP地址(32位)12、Destination Address——目标IP地址(32位)13、No Option——当需要路由时,使用该项ICMP(网间网控制报文协议)——如ping命令*1 类型0位回应应答报文,类型8为回应请求报文,整个数据包均参与校验*2 ICMP封装在IP数据包内传送UDPTCP1、Source Port——源端口(16位),发起连接的计算机源端口号2、Destination Port——目的端口(16位),要登录的目的端口号3、Initial Sequence Number——序列号(32位),初始连接的请求号,即SEQ4、Next Expected SEQ Number——确认号(32位),对方返回的ACK值5、DataOffset——数据偏移(4位),数据偏移的大小6、Reserved Bites——保留位(6位)7、Flags——URG——紧急数据标志,1有效,表示应立即进行传递ACK——确认标志位,1表示此数据包为应答数据包PSH——PUSH标志位,为1表示此数据包应立即传递RST——复位标志位,如果收到不属于本机的数据包,则返回一个RSTSYN——连接请求标志位,为1表示为发起连接的请求数据包。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IP数据报格式
图1.IP数据报格式
版本字段长度为4,用来表明建立数据报的IP版本,目前的IP版本是IPv4,IPv6正在发展中。
IPv4的字段为0100 。
首部长度(报头长度)指的是首部占32 bit字的数目,包括任何选项。
由于它是一个4比特字段,因此首部最长为60个字节。
15x32/8=60字节.IP首部始终是32 bit的整数倍.IP数据报报头的最小长度为20个字(不含填充字段和IP选项字段的IP报头是最常见的IP报头,为20个字节)
服务类型TOS(Type Of Service)总长度字段是指整个I P数据报的长度,以字节为单位.由于该字段长16比特,所以I P数据报最长可达6 5 5 3 5字节(64KB).总长度字段是I P首部中必要的内容。
数据长度=总长-报头长度。
标识符长16比特。
标志位长度为3比特,用于分段控制:第0位为预留位,第1位表示可否分段。
当该位的值为0时,表示数据报不可分段,值为1时,表示数据报可被分段。
第2位为段是否结束位,当该位的值为0时,表示该段是原数据报的最后一段,值为1时,表示后面不有更多的分段。
当网络设备要发送的数据报长度比所在网络的最大传输单元(MTU,Max Transfer United)大,并且标志位的第1位设置为不能分段(0)时,网络设备会向发送方返回一个因特网控制消息协议ICMP错误消息,并丢弃该数据报。
除了最后一个分段外,其余分段的第2位均设置为1。
段偏移13比特长度,用于指定分段在原始数据报中的位置,以8个字节为单位.
生存时间TTL长度为8比特,用于指定数据报允许保留在网络上的时间。
协议字段长度为8比特,用于指定数据报数据区中携带的消息是由哪种高级协议建立的。
ICMP为1,TCP为6,UDP为17。
协议号分配RFC790.
报头校验和16比特,仅用于IP报头校验和。
源IP地址及目的IP地址。
选项,填充字段用于确保将选项字段填充为最少32个比特位,以保证IP报头以32位结束。
分段:分段是将一个大的IP数据报分解成几个较小的数据报段的过程。
当IP模块需要通过一个具有较小MTU的网络传送较大的数据包时,就必须将其分段。
//定义ip报头数据结构
typedef struct_iphdr
{
byte ver_len; //版本4位,头长度4位,报头长度以32位为一个单位
byte type; //类型8位
byte length[2]; //总长度,16位,指出报文的以字节为单位的总长度
//报文长度不能超过65536个字节,否则认为报文遭到破坏
byte id[2]; //报文标示,用于多于一个报文16位
byte flag_offset[2];//标志,3位数据块偏移13位
byte time; //生存时间,8位
byte protocol; //协议,8位
byte crc_val[2]; //头校验和,16位
byte src_addr[4]; //源地址,32位
byte tar_addr[4]; //目标地址,32位
byte options[4]; //选项和填充,32位
}IP_HEADER;
TCP报文格式
传输控制协议(TCP)向上与用户应用程序进程接口,向下与网络层协议IP接口。
用户应用程序采用首先调用TCP(或UDP),然后将应用程序数据递交给TCP这一方式,在IP网络上传送数据。
TCP将这些数据打包分段并调用IP模块向目的主机传送每个数据段。
接收方的TCP将段中的数据放入接收缓冲器,然后将段重装为应用程序数据,再将这些数据发送到目的的应用程序进程。
尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。
TCP提供一种面向连接的、可靠的字节流服务。
图2.TCP数据报格式
源端口号(16位),标识主机上发起传送的应用程序;目的端口(16位)标识主机上传送要到达的应用程序。
源端和目的端的端口号,用于寻找发端和收端应用进程。
这两个值加上I P 首部中的源端I P地址和目的端I P地址唯一确定一个T C P连接。
一个I P地址和一个端口号有时也称为一个插口(socket),插口对(socket pair)(包含客户I P地址、客户端口号、服务器 I P地址和服务器端口号的四元组 )可唯一确定互联网络中每个T C P连接的双方。
IP+TCP 端口唯一确定一个TCP连接。
TCP协议通过使用"端口"来标识源端和目标端的应用进程。
端口号可以使用0到65535之间的任何数字。
在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。
在服务器端,每种服务在"众所周知的端口"(Well-Know Port)为用户提供服务。
●顺序号字段:占32比特。
用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
●确认号字段:占32比特。
只有ACK标志为1时,确认号字段才有效。
它包含目标端所期望收到源端的下一个数据字节。
●头部长度字段:占4比特。
给出头部占32比特的数目。
没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。
预留:由跟在数据偏移字段后的6位构成,预留位通常为0.
●标志位字段(U、A、P、R、S、F):占6比特。
各比特的含义如下:
◆URG:紧急指针(urgent pointer)有效。
◆ACK:确认序号有效。
◆PSH:接收方应该尽快将这个报文段交给应用层。
◆RST:重建连接。
◆SYN:发起一个连接。
◆FIN:释放一个连接。
●窗口大小字段:占16比特。
此字段用来进行流量控制。
单位为字节数,这个值是本机期望一次接收的字节数。
●TCP校验和字段:占16比特。
对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。
●紧急指针字段:占16比特。
它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
●选项字段:占32比特。
可能包括"窗口扩大因子"、"时间戳"等选项。
//定义TCP报头
typedef struct_tcphdr
{
byte source_port[2]; //发送端端口号,16位
byte dest_port[2]; //接收端端口号,16位
byte sequence_no[4]; //32位,标示消息端的数据位于全体数据块的某一字节的数字
byte ack_no[4]; //32位,确认号,标示接收端对于发送端接收到数据块数值
byte offset_reser_con[2];//数据偏移4位,预留6位,控制位6为
byte window[2]; //窗口16位
byte checksum[2]; //校验码,16位
byte urgen_pointer[2]; //16位,紧急数据指针
byte options[3]; //选祥和填充,32位
}TCP_HEADER;。