IP、TCP、UDP、HTTP头部信息

article/2025/4/25 23:07:53

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字段添加该服务器的信息,然后再进行转发。

http://chatgpt.dhexx.cn/article/g6v3lUxO.shtml

相关文章

为什么TCP头部没有数据长度信息而UDP有

先让我们看看IP,TCP,UDP的头部结构 1. IPv4 头部 2. TCP和UDP头部 可以看到IP的头部包换数据的长度,TCP的头部不包含数据长度,UDP的头部则包含。 从信息冗余的角度来看,UDP的长度信息是不需要的。 因为IPv4的头部…

TCP头部格式和封装

文章目录 12.3 TCP头部和封装12.3.1 端口号12.3.2 序列号12.3.3 头部长度12.3.4 相关控制位12.3.5 窗口大小12.3.6 校验和12.3.7 选项字段 12.3 TCP头部和封装 ​ 下图显示了TCP在IP数据报中的封装: ​ TCP头部紧跟着IP头部或者IPv6扩展头部,经常是20字…

封装与解封装(TCP头部格式)

封装和解封装: 应用层---HTTP --超文本传输协议--- TCP 80 HTTPS --- TCP 443 FTP ---文件传输协议---TCP 20/21 ITFTP ---简单文件传输协议--- UDP 69 TELNET---远程控制协议---TCP23 SSH ---TCP 22 DNS---域名解析协议---UDP和TCP 53 HDCP---动态主机配置…

TCP头部信息与UDP头部信息

TCP头部信息 源端口号以及目的端口号: 各占2个字节,端口是传输层和应用层的服务接口,用于寻找发送端和接收端的进程,通过这两个端口号和IP头部的ip发送和接收号,可以唯一的确定一个连接。    一般来讲,通…

TCP协议--TCP头部

《Linux高性能服务器编程》阅读笔记: 1. TCP协议的概念 TCP和UDP是传输层的两个主要协议。TCP相对于UDP来说,是面向连接、字节流和可靠传输。 (1) 面向连接   使用TCP通信的双方必须先建立起连接,然后才能开始数据的读写。建立连接后双方…

#TCP/IP# TCP头部选项功能详解

简单回顾下TCP报文格式 1)TCP报文:由 TCP首部 和 TCP数据 组成。2)TCP首部:由 20字节的固定长度 和 可变长字段(选项和填充)组成。3)TCP首部总长度:由TCP头中的“数据偏移”字段决定…

TCP头部格式的了解

tcp头部格式如下图所示: 1.源端口号,16位,发送方的端口号。 2.目标端口号,16位,发送方的目标端口号。 3. 32为序列号,sequence number,保证网络传输数据的顺序性。 4. 32位确认号,acknowledgment num…

TCP头部结构信息

TCP 头部结构信息 tcp头部信息出现在每个tcp报文段中,用于指定通信的源端端口,目的端口,管理tcp连接等。tcp头部结构如下图所示: tcp头部结构 1、16位端口号:告知主机该报文段来自哪里(源端口)以及传给…

计算机网络—IP头部结构,TCP头部结构,UDP头部结构

文章目录 IP头部结构TCP头部结构UDP头部结构TCP和UDP的区别MAC地址、IP地址、端口号数据传输过程图解 IP头部结构 IP头部结构图如下 注意:一行32bit为4字节,扩展的时候总是一行一行的拓展,也就是4个字节4个字节的扩展 版本号(Ve…

TCP的头部格式,详细信息都在这

重要的TCP头部格式来啦: 序列号:在建立连接时,由计算机生成的随机数作为初始值,通过SYN包传给接收方主机,每发送一次数据,就会累加一次这个数据字节数的大小,用来解决网络包乱序问题。确认应答号…

tcp 头部格式是怎样的?都有哪些字段?TCP 与 UDP 的区别

传输控制协议(Transmission Control Protocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40 字节的可选数据字段组成 1…

【网络】TCP报文头部

目录 源端口、目的端口 序号()Seq 确认号 数据偏移(头部长度) URG ACK PSH RST SYN FIN 窗口大小 校验和 紧急指针 选项部分 最大报文段长度 MSS 窗口扩大 时间戳 最大报文段长度(MSS) 窗口…

TCP头部结构详解

tcp头部信息出现在每个tcp报文段中,用于指定通信的源端端口,目的端口,管理tcp连接等。tcp头部结构如下图所示: tcp头部结构 1、16位端口号:告知主机该报文段来自哪里(源端口)以及传给哪个上层协议或应用程…

TCP头部详解

1. TCP的定义 TCP提供一种面向连接的、可靠的字节流服务。 面向连接: 两个使用TCP的应用(通常是一个客户和一个服务)在彼此交换数据之前必须建立一个TCP连接。 TCP提供可靠性的方式: 1)应用数据被分割成TCP认为最适合发送的数据块; 2)当…

TCP协议详解(一):TCP头部结构

TCP字节流服务 网络传输层中,TCP是面向连接、可靠的、字节流传输。 TCP协议通信双方必须先建立连接,通信双方必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP是全双工的,即双方的数据读写可通过一个连接…

Python 变量的命名规范

引言 混乱或错误的命名不仅让我们对代码难以理解,更糟糕的是,会误导我们的思维,导致对代码的理解完全错误。相反,良好的命名,则可以让我们的代码非常容易读懂,也能向读者正确表达事物以及逻辑的本质&#x…

matlab中变量命名规则,Matlab变量及命名规则

Matlab变量及命名规则 Matlab变量及命名规则 Matlab中所有的变量都是用矩阵形式来表示的,即所有的变量都表示一个矩阵或者一个向量。其命名规则如下: (1)变量名对大小写敏感; (2)变量名的第一个字符必须为英文字母,其长度不能超过…

matlab变量名的命名规则

简述Java中变量的命名的规则? 首字母只能是字母下划线‘_’‘$’符号(变量名首字母不能是数字!!!) 其余部分任意多的:数字字母下划线‘_’‘$’符号 Java命名规则 局部变量和成员变量 我说我知道的约定俗成&#xff1a…

vb变量名的命名规则

求十分详细的的java变量命名规范 您好,提问者: 在java编程中命名规范是统一的,而且老外发明的东西是没有中文的,严格区分大小写。 规范:以字母、下划线、$符号组成,不能以数字开头,声明类跟变量…

python变量名有哪些_python变量名命名规则

原博文 2020-03-21 11:07 − 一.python变量名命名规则: 1.变量名通常由字母,数字,下划线组成; 2.数字不能作为变量名开头; 3.不能以python中的关键字命名; 4.变量名要有意义; 5.不要用汉字和拼音去命名; 6.变量名要区分大小写; 7.推荐使用驼峰型(GuessAge或guessAge)和…