IP头部信息
ip报文段格式
版本:
占4位,表明IP协议实现的版本号,当前一般为IPv4,即0100。
报头长度 :
占4位,因为头部长度不固定(Option可选部分不固定),所以需要标识该分组的头部长度多少,取值范围:5-15即20-60字节。
服务类型:
占8位,其中前3位为优先权子字段(Precedence,现已被忽略)。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。第8比特保留未用。
总长度:
占16位,指明整个数据报的长度(以字节为单位)。最大长度为65535字节。
标识:
占16位。用来唯一标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。
标志:
占3位。标志一份数据报是否要求分段。
片偏移:
占13位。如果一份数据报要求分段,此字段指明该片偏移距原始数据报开始的位置。
生存时间:
占8位。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。
协议:
占8位。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。
头部校验和:
占16位。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。
源IP地址、目标IP地址:
各占32位。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。
可选项:
占32位。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。
TCP头部信息
tcp报文段格式
源端口号、目的端口号:
各占2字节,端口是传输层和应用层的服务接口,用于寻找发送端街接收端的进程。
序号:
占4字节,用来标识从TCP发送端向TCP接收端发送的数据字节流。
确认序号:
占4字节,上次成功接收到的TCP另一端序号+1
数据偏移:
占4位,最大为1111即15个数字,一个代表4个字节,用于指出TCP首部长度,若不存在选项,则这个值为20字节,数据偏移的最大值为60字节。
保留字段:
占6位,值是确定的,暂时可忽略,值全为0
标志位:
URG(紧急): 为1时表明紧急指针字段有效
ACK(确认):为1时表明确认号字段有效
PSH(推送):为1时接收方应尽快将这个报文段交给应用层
RST(复位):为1时表明TCP连接出现故障必须重建连接
SYN(同步):在连接建立时用来同步序号
FIN (终止): 为1时表明发送端数据发送完毕要求释放连接
接收窗口:
占2字节,用于流量控制和拥塞控制,表示当前接收缓冲区的大小。在计算机网络中,通常是用接收方的接收能力的大小来控制发送方的数据发送量,这样可以避免快主机致使较慢主机的缓冲区溢出。TCP连接的一端根据缓冲区大小确定自己的接收窗口值,告诉对方,使对方可以确定发送数据的字节数。
校验和:
占2字节,范围包括首部和数据两部分。检查当前的TCP包是否有问题,有没有损坏丢失
选项:
选项是可选的,默认情况是不选。
UDP头部信息
udp报文段格式
16位源端口号和16位目的端口号:
代表出发端口和目的地端口,这个可以类比TCP的源端口和目的端口。
16位UDP长度:
代表整个UDP的长度,包括UDP数据,最小的UDP长度就是8字节。
16位UDP校验和:
用于检验UDP数据包
IPv4中,校验和可以为0,意味着不使用校验和。IPv6要求必须进行校验
HTTP头部信息
http请求报文段格式
开始行:
方法有GET、HEAD、POST、PUT、DELETE。
URL:统一资源定位符
版本:表明HTTP协议实现的版本号
CRLF:回车换行
首部行:
在开始行之后,这是添加http头部的字段名,注:冒号后有空格。如果要结束首部信息的时候,要添加一个换行。所以最后一个首部行要有两个换行。
Accept:可通知服务器用户代理能够处理的媒体类型以及该媒体类型对应的优先级。
Accept-Encoding:告知服务器,客户端可支持的内容编码以及相应内容编码的优先级。
Accept-Language:告知服务器,客户端可处理的自然语言集,以及对应语言集的优先级。
Authorization:告知服务器用户端的认证信息。
If-Match 与If-None-Match:If-Match的请求是如果后方的字符串与ETag相等则服务器端进行请求,否则不进行处理。If-None-Match是If-Match的非操作,同样是匹配ETag, 如果Etag没有匹配成功就处理请求,否则不处理。
Referer:值是一个URI, 该URI就是发起请求的页面URI
User-Agent:请求方的浏览器和用户代理名称等信息。
Cookie:本地存储的Cookie信息(包括登陆状态等)。
实体主体:
一般只有上传才有实体主体,请求没有主体实体。
http响应报文段格式
开始行:
版本:表明HTTP协议实现的版本号
状态码 短语:1XX(信息响应):100 Continue:服务器通知浏览器之前一切正常,请客户端继续请求,如果请求结束,可忽略。2XX(成功响应):200 OK: 请求成功、201 Created: 常用于POST,PUT 请求,表明请求已经成功,并新建了一个资源。3XX(重定向消息):300 Multiple Choice: 返回多个响应,需要浏览器或者用户选择;4XX(客户端错误响应):400 Bad Request: 请求语法有问题,服务器无法识别。403 Forbidden: 服务器拒绝响应。权限不足。404 Not Found: URL无效或者URL有效但是没有资源。5XX(服务器错误响应):500 Internal Server Error: 服务器内部错误,未捕获。503 Service Unavailable: 无法服务。一般发生在因维护而停机或者服务过载。
CRLF:回车换行
首部行:
Accept-Ranges:告知客户端服务器那边是否支持范围请求。
Age:告知客户端,源服务器在多久前创建了该响应。
Etag:服务器当前请求的服务器资源(图片,HTML页面等)所对应的一个独有的字符串。
Server:表明了服务器端使用的服务器型号。
Vary :源服务器会向代理服务器传达关于本地缓存使用方法的命令。
WWW-Authenticate:在状态码401 Unauthorized中肯定带有此字段,该字段用来指定客户端的认证方案(Basic或者Digest)。
Set-Cookie:管理客户端所要设置的Cookie信息。
实体主体:
Content-Encoding:说明报文实体的编码方式。
Content-Language:表示报文实体使用的自然语言。
Content-Length:指定报文实体的字节长度。
Content-Type:定义响应数据的类型和编码。
通用首部行字段:
Cache-Control:用来操作缓存的工作机制。
Connection:控制不转发给代理服务器的首部字段以及管理持久连接。
Transfer-Encoding:表示报文在传输过程中采用的编码方式。
Via:追踪请求和响应报文测传输路径,报文经过代理或者网关是会在Via字段添加该服务器的信息,然后再进行转发。