IP UDP TCP报文格式
IP数据报![IP <wbr>UDP <wbr>TCP报文格式 IP <wbr>UDP <wbr>TCP报文格式](http://static15.photo.sina.com.cn/orignal/5544469d41f517bba070e)
版本:V4
报头长度:它是以32比特为单位的。最常见的是5(不含IP选项,20B),也有为6的(含IP选项,24B)。
TOS(业务类型):IP协议是一个不保证质量的协议。它通过 TOS来弥补一下其QOS的不足。其8个比特的含义如下:
三个比特的优先级指明本数据报的优先级,允许发送方表示数据报的重要程度。优先级从0到7,其中“0”表示普通用户优先级,“7”表示网络控制优先级。
D、T、R表示本数据报希望的传输类型。D=1表示低时延,T=1表示高吞吐量,R=1表示高可靠性。注意,优先级对网络没有强制性,目前大多数网络对此一般不作处理,但为技术的进一步的提供了手段。
总长度:指明IP数据报的长度,以字节为单位。数据报最长为216=64k字节
标识符、标志和分片偏移量:它们用于分片和重组,下面一同介绍。
分片和重组的具体过程:
在将数据报分片时,先将原数据报的报头复制到每个数据报片中,然后填入“标志”域,它一共有3个比特,第一个比特指明是否要对数据报分片,为‘1’表明这是一个分片数据报;第二个比特指明该分片是否是这个数据报的最后一个分片,‘1’表示不是最后一个分片,也就是说分片未完;第三个比特未用。其中的标识符指明了它原来属于哪一个数据报。然后填入“偏移量”域,它指明该分片的数据在原来数据只能中从数据头开始的字节偏移量,第一个分片的偏移量为0,这样可以确定数据片在原数据中的位置,以便到终端进行重组。它还要填入“总长度”域,它指明分片的长度。
当各分片通过各种路径到达接收机的时候,通过“标志”域的第一位可以知道这是一个分片,并且由“标识符”知道它属于哪一个数据报;由第二位知道是否收到了最后一个分片,如果收到了最后一个分片,由该分片中的“偏移量”和所有属于该数据报的数据总长度就可以知道是否收到了所有的分片,从而可以进行重组。重组好数据报后就可以交给IP层去处理。
TTL(Time To Live,生存期):它用来处理时延。它以秒为单位,指明了数据报在网络中的最长有效时间。路由器处理报头时,从TTL中减1;若数据报在路由器中排队而被延迟;则要从TTL中减去等待时间;若TTL=0则将它从网络中删除。
协议:它指明数据区中的数据格式,说明在IP的上一层(传输层)所采用的协议,如(TCP、UDP)。当IP数据报到达对端以后,将按照“协议”来将数据报交给传输层进行相应处理。
头部校验和:对报头的CRC。
IP选项:包括时间戳、源站路由、记录路由,IP数据报中可以没有这些选项。
ping程序为我们提供了查看IP记录路由(RR)选项的机会。大多数不同版本的ping程序都提供-R选项,以提供记录路由的功能。它使得ping程序在发送出去的IP数据报中设置IPRR选项(该IP数据报包含ICMP回显请求报文)。这样,每个处理该数据报的路由器都把它的IP地址放入选项字段中。当数据报到达目的端时,IP地址清单应该复制到ICMP回显应答中,这样返回途中所经过的路由器地址也被加入清单中。当ping程序收到回显应答时,它就打印出这份IP地址清单。但由于IP选项长度有限,利用这种方式查看路由,只能查到9跳
TCP报文
![IP <wbr>UDP <wbr>TCP报文格式 IP <wbr>UDP <wbr>TCP报文格式](http://static1.photo.sina.com.cn/orignal/5544469d63183f4c1e470)
序号:指出段中数据在发送端数据流中的位置。
确认号:指出本机希望下一个接收的字节的序号。
头长:指出以32比特为单位的段头长度。它是针对便长的“选项”域设计的。
码位:有些报文段是用于传输数据的,但有些报文段仅仅携带了确认信息,另一些报文段携带的是建立和关闭连接的请求。它使用“码位”来指出段的目的与内容。这6个比特各位的意义如图:
0 URG,紧急指针字段可用
1 ACK,确认字段可用
2 PSH,本报文段请求急迫(PUSH)操作
3 RST,连接复位
4 SYN,序号同步,用于建立连接中的同步
5 FIN,发送方字节流结束
由于有时发送方希望终止操作,不想接收方接收完所有的比特。如远程主机上的程序错误时就需要这种信号。TCP将数据指定为“紧急”型,接收方收到这种数据后,会不必排队而尽快通知应用程序。URG比特为1时,表明它是紧急的,其中的“紧急指针”指出了紧急数据在报文段中的结束位置。
当所有的紧急数据消失之后,TCP软件会告诉应用程序恢复正常的操作状态。PUSH位提供了数据强迫传输机制,以强迫传输当前流中的数据,而不必等待缓冲区满。远程登录中,终端的击键信号就是用PUSH操作来提供的。
窗口(滑动窗口):用于通知接收端接收缓冲区的大小。
理解TCP的面向连接特性:
一条TCP连接是一条虚电路,它通过主机IP地址和端口号来标识一条连接。如(192.168.2.37,21;192.168.2.30,21)就标识了一条TCP连接。所以两个程序可以共享主机上的同一端口,因为连接不同。
连接的建立和拆除需要得到对方的认可,而UDP中,一方发送数据是不需要得到对方的认可的。
连接能保持状态并实现可靠性,而无连接不能保持状态。一般来说,控制信息是通过TCP来传递的。
它是在无连接的协议,IP协议之上来实现面向连接的。
UDP报文
![IP <wbr>UDP <wbr>TCP报文格式 IP <wbr>UDP <wbr>TCP报文格式](http://static4.photo.sina.com.cn/orignal/5544469d349f7fabcb0e3)
UDP信宿端口:一个UDP端口是一个可读写的软件结构,内部有一个接收报文缓冲区。接收数据时,UDP软件要判断此信宿端口是否与当前使用的端口匹配,如是,则将数据报放入相应的接收队列,否则,抛弃该数据并向信源端口发送“端口不可达”的差错消息报文。
长度:以字节计的整个报文长度,最小为8,只有报头。
校验和:它是一个可选项,以提高效率。
在利用IP传送语音和视频的时候,要利用UDP协议。
协议:它指明数据区中的数据格式,说明在IP的上一层(传输层)所采用的协议,如(TCP、UDP)。当IP数据报到达对端以后,将按照“协议”来将数据报交给传输层进行相应处理。
头部校验和:对报头的CRC。
IP选项:包括时间戳、源站路由、记录路由,IP数据报中可以没有这些选项。
ping程序为我们提供了查看IP记录路由(RR)选项的机会。大多数不同版本的ping程序都提供-R选项,以提供记录路由的功能。它使得ping程序在发送出去的IP数据报中设置IPRR选项(该IP数据报包含ICMP回显请求报文)。这样,每个处理该数据报的路由器都把它的IP地址放入选项字段中。当数据报到达目的端时,IP地址清单应该复制到ICMP回显应答中,这样返回途中所经过的路由器地址也被加入清单中。当ping程序收到回显应答时,它就打印出这份IP地址清单。但由于IP选项长度有限,利用这种方式查看路由,只能查到9跳
TCP报文
序号:指出段中数据在发送端数据流中的位置。
确认号:指出本机希望下一个接收的字节的序号。
头长:指出以32比特为单位的段头长度。它是针对便长的“选项”域设计的。
码位:有些报文段是用于传输数据的,但有些报文段仅仅携带了确认信息,另一些报文段携带的是建立和关闭连接的请求。它使用“码位”来指出段的目的与内容。这6个比特各位的意义如图:
0 URG,紧急指针字段可用
1 ACK,确认字段可用
2 PSH,本报文段请求急迫(PUSH)操作
3 RST,连接复位
4 SYN,序号同步,用于建立连接中的同步
5 FIN,发送方字节流结束
由于有时发送方希望终止操作,不想接收方接收完所有的比特。如远程主机上的程序错误时就需要这种信号。TCP将数据指定为“紧急”型,接收方收到这种数据后,会不必排队而尽快通知应用程序。URG比特为1时,表明它是紧急的,其中的“紧急指针”指出了紧急数据在报文段中的结束位置。
当所有的紧急数据消失之后,TCP软件会告诉应用程序恢复正常的操作状态。PUSH位提供了数据强迫传输机制,以强迫传输当前流中的数据,而不必等待缓冲区满。远程登录中,终端的击键信号就是用PUSH操作来提供的。
窗口(滑动窗口):用于通知接收端接收缓冲区的大小。
理解TCP的面向连接特性:
一条TCP连接是一条虚电路,它通过主机IP地址和端口号来标识一条连接。如(192.168.2.37,21;192.168.2.30,21)就标识了一条TCP连接。所以两个程序可以共享主机上的同一端口,因为连接不同。
连接的建立和拆除需要得到对方的认可,而UDP中,一方发送数据是不需要得到对方的认可的。
连接能保持状态并实现可靠性,而无连接不能保持状态。一般来说,控制信息是通过TCP来传递的。
它是在无连接的协议,IP协议之上来实现面向连接的。
UDP报文
UDP信宿端口:一个UDP端口是一个可读写的软件结构,内部有一个接收报文缓冲区。接收数据时,UDP软件要判断此信宿端口是否与当前使用的端口匹配,如是,则将数据报放入相应的接收队列,否则,抛弃该数据并向信源端口发送“端口不可达”的差错消息报文。
长度:以字节计的整个报文长度,最小为8,只有报头。
校验和:它是一个可选项,以提高效率。
在利用IP传送语音和视频的时候,要利用UDP协议。