一、TCP报文封装格式:
源端口:数据发送方的端口 目的端口:数据接收方的端口 序号:用来标识从TCP发送端向TCP接受端发送的数据流 确认号:希望收到下一个数据报文中的第一个字节的序号 首部长度:由于选项的存在TCP报文最大首部长度为60字节(即15x4 字节)【1111 = 15 , 4个字节:32个比特位】,最小首部长度为20字节。 保留:顾名思义,保留给以后用 紧急比特URG:本位置为1的时候表示此次报文中需要紧急处理 确认比特ACK:置为1时表示确认号有效,0表示确认号无效 推动比特PSH:置为1时提示接收端应用程序应立即从TCP缓存区读取数据,为后续接受的数据腾出空间 重置比特RST:置为1时表示此次TCP连接出现严重错误,需要重新连接 同步比特SYN:置为1时表示这是一个请求连接或者连接接受的报文 终止比特FIN:置为1时表示数据已经发送完毕,需要释放连接 窗口大小:接收方根据缓存空间大小来确定一个接受窗口的大小,限制发送的窗口上限 检验和:对TCP头部和数据部分正确性的检验 紧急指针:URG被置为1时,紧急指针被置为一个正偏移量,该偏移量与序号字段相加,得出紧急数据的最后一个字节的序号。
二、UDP报文封装格式:
源端口:数据发送方的端口目的端口:数据接收方的端口 UDP长度:UDP报文的字节长度(包括UDP首部和数据部分) UDP检验和:检验UDP首部和数据的正确性
三、IP报文封装格式:
版本:IP协议的版本(0100为IPV4,0110为IPV6)首部长度:ip报文的首部长度(同样是20-60字节)服务类型:
---------------------------------------------- 优先级用来区别优先级别不同的IP报文(PPP) D表示要求有更低的时延 T表示要求有更高的吞吐量 R表示要求有更高的可靠性 C标识要求有更小的费用 -------------------------------------------- 总长度:报文的长度(最大65535字节) 标识:数据报长度超过MTU(最大传输单元),就要进行分片,这个标识字段的值被复制到所有数据包分片的标识字段中,使得这些分片在达到最终目的地的时候可以按照标识字段的内容重新组成原来的完整数据报。 标志:最低位MF,MF==1时,表示后面还有分片,中间位为DF,DF==1时,表示不能分片。 片偏移:本分片在原先数据报文中相对于首位的偏移位。 生存时间:表示数据报在网络中存活的时间,所允许通过的路由器最大数量。每通过一个路由器,则TTL值减少1,当其值为0时,路由器就可以把该数据包丢弃 协议:标识上层所使用的协议。常用的协议号有以下几个: ICMP 1 IGMP 2 TCP 6 UDP 17 IGRP 88 OSPF 89 首部校验和:对IP头部做正确性检测,不包含数据部分 校验方法:在发送端,将IP数据报首部划分为多个16位的二进制序列,并将首部校验和字段置为0,用反码运算将所有16位序列对位相加后,将得到多的和的反码写入首部校验和字段。接收端接收到数据报后,将数据报首部的所有字段组织成多个16位的二进制序列,再使用反码运算相加一次,将得到的结果取反。如果结果为0代表没出错,否则出错。 原地址和目的地址:标识了IP包的起源和目的地址。除非使用NAT,否则传输过程这两个值不变 可选项:由起源设备根据需要添加改写。 填充(padding):IP报头长度部分的单位为32bit,所以其长度必须为32bit的整数倍,若没达到,则会填充若干个0,达到32比特。
|
| 本文出处: http://www.toutiao.com/a6394368163651797250/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|