首页 > 其他分享 >4.5 TCP 报文段的首部格式

4.5 TCP 报文段的首部格式

时间:2024-12-04 21:58:41浏览次数:9  
标签:4.5 窗口 字节 首部 报文 TCP 序号

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!

文章目录


前言

本篇文章详细分析了 TCP 报文段首部的结构,并介绍其各字段的作用与相关选项,进一步理解 TCP 如何在不可靠的网络环境中实现可靠的数据传输。

1 TCP 报文段的基本结构

TCP(传输控制协议)是现代计算机网络中重要的协议之一,主要负责在网络中提供可靠的字节流传输。尽管 TCP 本身是面向字节流的,但它通过报文段的方式进行数据的封装与传输。TCP 的所有控制和功能机制都体现在报文段的首部字段中。

TCP 报文段的首部由固定部分可选部分组成。固定部分的长度为 20 字节,可选部分的长度可以变化,最大可达到 40 字节。
在这里插入图片描述

最小的 TCP 报文段首部长度为 20 字节,包含了实现数据传输所需的所有基本字段。

2 固定部分

2.1 源端口与目的端口

每个端口字段占 2 字节。端口号用于实现应用层协议和传输层协议之间的复用和分用。

  • 源端口:发送端的端口号。
  • 目的端口:接收端的端口号。
    在这里插入图片描述

2.2 序号

序号占 4 字节。每个 TCP 连接中传输的数据字节都有一个唯一的序号。

在这里插入图片描述
序号字段表示当前报文段中数据部分的第一个字节的序号。在连接的初始阶段,序号从 1 开始递增。通过序号,接收方能够按序接收数据并确保数据完整性。

【示例】
在这里插入图片描述

2.3 确认号

确认号占 4 字节。当 ACK 控制位被设置为 1 时,确认号字段才有效。
确认号字段指示接收方期望收到的下一个字节的序号。
在这里插入图片描述

如果确认号为 N,则说明接收方已经正确收到序号为 N-1 之前的所有字节。

2.4 数据偏移

数据偏移占 4 位。该字段指示 TCP 报文段中数据部分的起始位置,单位是 32 位字(即 4 字节)。
在这里插入图片描述
数据偏移字段告诉接收方,首部有多少字节,并指示数据部分的起始位置。

2.5 保留字段

保留字段占 6 位。该字段目前保留为 0,供将来使用。
在这里插入图片描述

TCP 报文段中的其他控制位没有对应字段时,保留字段可用于扩展。

2.6 控制位

控制位用于指示不同的连接控制操作和报文段的状态。
在这里插入图片描述
TCP 报文段有六个控制位,其中每个位的意义如下:

  • URG(紧急):占 1 位。当 URG = 1 时,表示当前报文段包含紧急数据,系统应尽快处理该数据,具有较高优先级。
  • ACK(确认):占 1 位。只有当 ACK = 1 时,确认号字段才有效。用于确认数据的接收。
  • PSH(推送):占 1 位。当 PSH = 1 时,接收方会立即将接收到的数据交付给应用程序,而不是等到缓存满了再处理。
  • RST(复位):占 1 位。当 RST = 1 时,表示连接发生错误或出现异常,需要复位连接。
  • SYN(同步):占 1 位。同步 SYN = 1 表示这是一个连接请求或连接接受报文。;当 SYN = 1,ACK = 0 时,表明这是一个连接请求报文段;当 SYN = 1,ACK = 1 时,表明这是一个连接接受报文段。
  • FIN(终止):占 1 位。当 FIN = 1 时,表示发送端已经完成数据传输,并要求释放连接。

2.7 窗口

窗口占2 字节。窗口字段指示接收方当前能接受的字节数。
在这里插入图片描述

接收方的窗口大小会随接收缓冲区的空闲情况动态调整,以告知发送方可以继续发送的数据量。窗口值的大小直接影响了 TCP 的吞吐量。

2.8 检验和

检验和占 2 字节。检验和字段用于检测 TCP 报文段中的数据是否发生错误。
在这里插入图片描述

检验和的计算不仅包括 TCP 报文段的内容,还包括一个临时的“伪首部”,该伪首部包含源 IP 地址、目的 IP 地址、协议类型等信息,用来确保数据的完整性。
在这里插入图片描述

2.9 紧急指针

紧急指针占 2 字节。当 URG = 1 时,紧急指针字段有效。该字段指示紧急数据的最后一个字节相对于报文段起始位置的偏移量。
在这里插入图片描述

紧急指针用于标识数据流中哪些部分应优先处理。

3 可变部分

3.1 选项

选项字段长度可变,最长可达 40 字节。
在这里插入图片描述
选项用于扩展 TCP 协议的功能,常见的选项包括:

  • 最大报文段长度(MSS):TCP 协议中用于控制每个报文段数据字段最大长度的选项,计算方式为TCP 报文段长度 - TCP 首部长度
  • 窗口扩大因子(Window Scale):在标准 TCP 协议中,窗口字段为 16 位,窗口大小最大为 64KB,窗口扩大因子选项允许增加窗口大小,最多支持到 1GB。
  • 时间戳(Timestamp):占 10 字节,包含时间戳值和时间戳回送字段,可用于计算往返时间 RTT以及防止序号重复。

3.2 填充

TCP 报文段的头部长度必须是 4 字节的整数倍。因此,如果选项字段长度不足 4 字节的倍数,填充字段会被添加到报文段的末尾。
在这里插入图片描述

标签:4.5,窗口,字节,首部,报文,TCP,序号
From: https://blog.csdn.net/2302_80253507/article/details/144201971

相关文章

  • 初识TCP(编写回显服务器)
    目录初识TCP(编写回显服务器)TCP相关的API服务器代码实现客户端代码实现部分代码解释注意事项效果展示初识TCP(编写回显服务器)TCP相关的APIServerSocket:这是socket类,对应到网卡,但是这个类只能给服务器进行使用socket:对应到网卡,既可以给服务器使用,又可以给客户端......
  • [Linux网络]TCP和UDP协议的底层理论
    目录一、TCP和UDP协议的简单认识1.传输层协议2.五元组二、UDP协议1.UDP协议格式2.UDP协议的特点3.面向数据报4.UDP传输报文在内核中的管理5.基于UDP协议的应用层协议(部分)三、TCP协议1.发送和接收数据示意图2.TCP协议格式3.确认应答机制和超时重传机制4.发......
  • TCP/IP 和 UDP
    一、TCP/IP(传输控制协议)TCP/IP是一个协议族,它是互联网的基础协议,为网络通信提供了标准化的方法。TCP/IP分为四个层次,每一层都有特定的功能:应用层:这是最接近用户的层,包含了所有高级协议,如HTTP(网页浏览)、FTP(文件传输)、SMTP(邮件传输)等。应用层负责应用程序之间的交互,确保数......
  • NetCore3.1 TCP服务之BeetleX
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、安装包 2、server端usingBeetleX;usingBeetleX.EventArgs;usingSystem;namespaceBTcp{classProgram:BeetleX.ServerHandlerBase{staticintNumber=0;privatestaticBeetle......
  • Seed Lab实验:Attacks on the TCP Protocol
    一、docker使用docker换源:vim/etc/docker/daemon.json{"registry-mirrors":["https://docker.1panel.live"]}docker创建:docker-composebuilddocker开启:docker-composeupctrl+shift+T新建一个终端查询docker状态:dockps切换docker中的主机,例如:docker......
  • Chrome浏览器允许的一次性最大TCP并发链接
    Chrome浏览器允许的单次最大TCP并发连接数通常是6个到同一个域名。这指的是从浏览器的一个标签页或渲染进程到特定服务器的连接数。需要注意以下几点:每个域名限制:这个限制是每个域名的,而不是每个标签页或浏览器的全局限制。这意味着你可以同时与多个不同域名建立超过......
  • 4.5 将关系字段添加到模型
    在Odoo模型中添加关系字段的全面解析在Odoo开发中,模型之间的关系处理至关重要。关系字段能够有效地建立起不同模型之间的联系,使数据的组织和交互更加合理、高效。今天,我们就深入探讨如何在Odoo模型中添加关系字段。一、关系字段类型概述Odoo模型中的关系字段主要有三种类......
  • Wireshark网络协议抓包解析(二)分析TCP HTTP协议
    实验分析前准备通过curl-I baidu.com 分析TCP HTTP协议在http捕捉中找到目的ipip.addr==110.242.68.66(换成对应目的ip)过滤以下是对每个步骤的详细解释:TCP三次握手建立连接:数据包25:源IP 192.168.76.18 向目标IP 110.242.68.66 发送一个TCPSYN包,请求建......
  • 请描述处TCP的三次握手和四次挥手
    TCP的三次握手和四次挥手是前端面试中经常被问到的网络基础知识。它们保证了可靠的连接建立和断开。下面我分别描述一下这两个过程:三次握手(Three-wayhandshake)三次握手的目的是同步连接双方的序列号和确认号,并交换TCP窗口大小信息。SYN(Synchronize):客户端发送一个S......
  • TCP/IP网络协议栈
    TCP/IP网络协议栈是一个分层的网络模型,用于在互联网和其他网络中传输数据。它由几个关键的协议层组成,每一层负责特定的功能。以下是对TCP/IP协议栈的简要介绍:TCP/IP协议模型的分层1.应用层(ApplicationLayer):这是用户与网络交互的地方。常见的协议包括HTTP(用于网页浏览)、......