1.IP报文
各字段解释如下:
a)版本:版本号,4位,指IP协议的版本。0100表示IPV4,0110表示IPV6。
b)首部长度:4位,数值为n表示IP报文有4*n个自己。所以IP数据包的最大长度为60字节。首部固定长度为20字节,可变长度为0~40字节
c)服务类型,8位
过程字段:3位,设置数据包重要性,取值越大数据越重要0(正常)~7(网络控制)//当网络发生拥塞时,可让具备高优先级的IP报文优先被转发,类似于在拥塞的道路上,保证如救护车一类车辆优先通行的实例
延迟字段:1位,取值 0(正常) 1(期待低的延迟)
流量字段: 1位,取值0(正常) 1(期待高的流量)
可靠性字段:1位 取值0(正常)1(期待高的可靠性)
成本字段:1位 取值0(正常)1(期待最小成本)
//中间的四位,即3,4,5,6位用来表示这个IP报文期望得到的一种高质量的传输服务,也就是说表明了这个IP包的服务类型(Type Of Service)。它用了四个参数来实现高质量服务:低延迟、高吞吐量、高可靠性,低成本。
保留字段:1位,未使用
d)总长度
长度为16位,表示整个IP报文能携带的最大字节数,包括“IP报头”和“传递数据”长度的总和。一个IP报文的最大长度为65535个字节(IP报文通常也叫做IP数据包,工作在“网络层”,由IP报文和传递数据组成)
e)标识符:16位,为IP数据包分配一个唯一的数字标识,保证数据被分段后,区别。类似于将标有红色物品混入其它不同颜色的物品中,而此时将红色物品分离出来就是一件很容易的事情。
网络中其它的IP数据分段,然后可以被正确组合。因为在某一个IP数据被分段的同时可能存在多个不同IP数据的分段
f)标志:3比特结合标识和片偏移字段来管理IP报文的分段。
第一位:不用
第二位:DF :表示1:不能对该IP数据包执行分段处理
第三位:MF:表示1:该IP数据分段的后面还有紧跟的数据分段,直到MF为0
片偏移:长度为13比特,表示分段数据起始点相对于报头起始点的偏移位置。目的在于让目标接受方可按照分段顺序重新组织报文
(总长度标识标志片偏移可以理解为:看所有标识一样的数据分段放一起,按照片偏移从小到大顺序,每次根据当前片偏移和总长度计算和查找下一个片偏移对应的数据分段,直到MF为0)
g)生存时间
长度为8位,表明当前报文能在网络上的最大存活时间。每经过一个路由(网管),TTL自动减1,当为0时丢弃该报文
h)协议 8位用于标识OSI上层所携带的具体协议,通常是一个传输层或网络层协议如UDP TCP ICMP等。
11:UDP
06:TCP
01:ICMP
i)首部检验和 16位,只在IP报文的首部上进行计算,提供一种基于传输的基本差错控制
j)源IP地址 32位 记录源IP地址
k)目的IP地址 记录目标主机IP地址
2.TCP报文
a)源端口号 16位,指明源端口号
b)目的端口号 16位,指明目的端口号
注意TCP报文中的源端口号、目的端口号同IP数据报中的源IP地址和目的IP地址唯一确定一条TCP连接
c)序号 32位
用来标识TCP发送端向TCP接收端发送的数据字节流
d)确认序号 32位
SYN报文,ACK为0的情况下没有确认号。
ACK报文,ACK为1的情况下确认序号才有效
一旦连接建立,该值将始终发送,同ACK标志
e)首部长度:4位,报文头部长度 设首部长度值为n,则头部长度为4*n个字节。TCP报头中任选字段长度可变
报头最小20字节,最大60字节
f)标志位
URG:紧急比特,紧急指针有效。告诉系统此报文中有紧急数据应尽快传送
ACK:确认比特 ACK=1时确认号字段有效
PSH:推送比特。接收方收到推送比特置1的报文段,就尽快地交付给应用程序不等缓存填满
RST:复位比特 RST=1表示TCP连接中出现严重差错必须释放连接,然后再重新建立运输连接
SYN:同步比特SYN=1表示这是一个连接请求或连接接受报文
FIN:终止比特 FIN=1表示此报文的发送端的数据已发送完毕,并要求释放运输连接。
g)窗口大小 16位,TCP流量控制通过连接的每一端声明窗口大小进行控制。窗口最大值为65535
h)检验和 16位:检验和覆盖整个TCP报文段。强制字段。由发送端计算存储接收端进行验证。
i)紧急指针当Urgent标志位为1时,紧急指针有效
3.HTTP
请求报文
一个HTTP协议请求报文由:请求行 请求头部 空行 请求数据组成
a)请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,用空格分隔。例如GET /index.html HTTP/1.1
请求头部
请求头部由关键字/值对组成,每行一对。关键字和值用英文“:”分隔。请求头部通知服务器有关客户端请求的信息。
c)请求数据
请求数据不在get方法中使用,而在POST方法中使用。POST方法适合需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
HTTP相应报文
HTTP响应报文也由三个部分组成:状态行、消息报头、响应正文