IP首部、TCP首部、UDP首部

本文详细介绍了IP、TCP和UDP首部的结构与关键字段,包括IP首部的版本、首部长度、TTL、协议等;TCP首部的序号、确认号、窗口大小、各种标志位;以及UDP首部的长度、检验和。TCP提供全双工服务,有超时重传机制,而UDP则没有。

                                                                    IP首部


版本:L3协议版本号,IPv4或IPv6

首部长度:单位为4字节

协议:L4协议类型

TTL生存时间字段设置了数据报可以经过的最多路由器数。一旦经过一个处理它的路由器,它的值就减1。当该字段值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。



源端口号、目的端口号,用于寻找发送端和接收端应用进程。

32位序号:用于标识从TCP发端向TCP收端发送的数据字节流,表示在这个报文段中的第一个数据字节。

确认号包含发送确认的一端所期望收到的下一个包的序列号,只有ACK标志为1时,确认号字段才有效。

一旦一上连接建立起来,ACK标志总是被设置为1。

16位窗口大小:最大值为2^16-1(MTU:最大传输单元,以太网最大传输单元为1518字节,但以太网可以传送一个长达65535字节(2^16-1)的IP数据包,链路层会对其进行分片)。

4位首部长度:单位为32bit,包含选项字段。

TCP为应用层提供全双工服务,这意味着连接的每一端必须保持每个方向上的传输数据序列号和确认号。

URG:紧急

### IP 数据报首部结构 IP 首部用于封装传输层的数据包,确保其在网络中的正确路由。IPv4 的固定部分长度为 20 字节,可选字段使得整个头部最大可达 60 字节。 | 版本 | 头长 | 差分服务 | 总长度 | |------|------|----------|--------| | 4位 | 4位 | 8位 | 16位 | - **版本(Version)**:指明使用的 IP 协议版本号。 - **头长(IHL, Internet Header Length)**:表示 IP 报文头部的长度,单位是 32 比特字(即每增加 1 表示有额外的 4 字节),最小值为 5(代表无选项的标准 IPv4 头)[^1]。 | 标识符 | 标志 | 偏移量 | 生存时间(TTL) | 协议 | 源地址 | 目标地址 | |--------|------|--------|---------------|------|-----------------|-----------------| | 16位 | 3位 | 13位 | 8位 | 8位 | 32位 | 32位 | - **生存时间(Time To Live, TTL)**:限制数据包在网络上的转发次数,防止无限循环。 - **协议(Protocol)**:指出上层协议类型,比如 TCP 或者 UDP 对应不同的数值。 - **源/目标地址(Source/Destination Address)**:发送方和接收方的逻辑网络接口标识。 ### TCP首部结构 TCP 是一种面向连接、可靠的传输控制协议,提供全双工通信信道。TCP首部至少含有如下字段: #### 固定部分 (20 bytes) ```plaintext ┌─────────────┬───────────┐ │ Source Port │ Dest Port │ ├─────────────┼───────────┤ │ Sequence No │ Ack Number│ └─────────────┴───────────┘ ``` - **端口号(Ports)**:分别指定应用进程之间的对话端口。 - **序列号(Sequence Number)**:用来跟踪每个字节流的位置以便按序重组消息。 - **确认号(Acknowledgment Number)**:告知对方下一个期望收到的数据位置,在建立连接后的所有报文中有效[^3]。 ```plaintext ┌───────────────────────────────────────────────────────────────────────┐ │ Data Offset | Reserved | Flags | Window Size | Checksum | Urgent Pointer | └───────────────────────────────────────────────────────────────────────┘ ``` - **偏移(Data Offset)**:指示实际数据起始处距离段开头的距离;同时也隐含说明了选项区的存在与否及其大小。 - **标志位(Flags)**:URG, ACK, PSH, RST, SYN 和 FIN 等操作指令标记。 - **窗口尺寸(Window Size)**:通知对方向自己发送的最大允许未被确认的数据量。 - **校验和(Checksum)**:覆盖伪头部以及真实负载计算得出的一个检验码来验证完整性。 - **紧急指针(Urgent Pointer)**:指向当前缓冲区内最后一个优先处理的数据单元之后的第一个正常顺序的数据单元。 对于更复杂的场景下,还可以存在多个变长选项字段跟随于上述基本格式之后,这些通常涉及性能优化特性或是安全增强机制等特殊用途[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值