当前位置: 首页 > news >正文

TCP协议的特点和首部格式

文章目录

  • TCP协议是什么?
  • TCP协议的主要特点
    • 1. 面向连接
    • 2. 可靠传输
    • 3. 流量控制
    • 4. 拥塞控制
  • TCP首部格式
    • 源端口和目标端口(各16位)
    • 序列号(32位)
    • 确认号(32位)
    • 数据偏移(4位)
    • 保留字段(6位)
    • 控制位(6位)
    • 窗口大小(16位)
    • 校验和(16位)
    • 紧急指针(16位)
    • 选项字段(可变长度)
  • 总结

TCP协议是什么?

TCP(传输控制协议)是Internet协议族中的核心协议之一,工作在传输层。它为应用层提供面向连接的、可靠的字节流服务。

TCP协议的主要特点

1. 面向连接

TCP在传输数据之前,必须先建立连接。

2. 可靠传输

TCP通过多种机制保证数据传输的可靠性:

确认应答机制
每发送一段数据,接收方都要回复一个ACK确认。

超时重传
如果发送方在规定时间内没收到ACK,就重新发送数据。

序列号机制
每个字节都有一个序列号,确保数据按正确顺序组装。

校验和
检测数据在传输过程中是否出错。

3. 流量控制

TCP会根据接收方的处理能力来调整发送速度,避免接收方被"撑爆"。

4. 拥塞控制

当网络拥堵时,TCP会主动降低发送速度,避免让网络更加拥堵。

TCP首部格式

源端口和目标端口(各16位)

这两个字段标识了通信的两端。端口号的范围是0-65535,其中:

  • 0-1023:知名端口(如HTTP的80,HTTPS的443)
  • 1024-49151:注册端口
  • 49152-65535:动态/私有端口

序列号(32位)

序列号用来标识每个字节的位置。TCP把数据流看作一个巨大的字节数组,每个字节都有一个序列号。

确认号(32位)

确认号表示期望收到的下一个字节的序列号。比如我收到了序列号1000-1499的数据,那么我会发送ACK=1500,表示"1500之前的数据我都收到了,请发送1500开始的数据"。

数据偏移(4位)

也叫首部长度,表示TCP首部有多少个32位字(4字节)。由于这个字段只有4位,所以TCP首部最长是15×4=60字节。

保留字段(6位)

目前全部设为0,为将来扩展使用。

控制位(6位)

这6个标志位控制TCP的行为:

URG(紧急):标识紧急数据
ACK(确认):标识确认号字段有效
PSH(推送):要求立即推送数据给应用程序
RST(复位):重置连接
SYN(同步):用于建立连接
FIN(结束):用于关闭连接

窗口大小(16位)

表示接收方还能接收多少字节的数据,用于流量控制。

校验和(16位)

用于检测TCP首部和数据在传输过程中是否出错。计算校验和时,不仅包括TCP首部和数据,还包括IP首部中的源IP地址、目标IP地址等信息。

紧急指针(16位)

当URG标志位设置时,这个字段指向紧急数据的结束位置。

选项字段(可变长度)

最常见的选项包括:

  • 最大段大小(MSS):TCP能接收的最大数据段长度
  • 窗口扩大:扩大窗口大小的表示范围
  • 时间戳:用于计算往返时间

总结

TCP协议的核心思想就是"可靠"二字,通过序列号、确认应答、超时重传等机制,确保数据能够准确、完整、有序地到达目的地。

http://www.dtcms.com/a/310360.html

相关文章:

  • 电力系统与变压器实验知识全总结 | 有功无功、同步发电机、短路空载实验、电压调整率、效率条件全讲透!
  • curl命令使用
  • 蒙特卡罗方法(Monte Carlo Method)_学习笔记
  • 【面板数据】全国31省名义、实际GDP及GDP平减指数数据(2000-2024年)
  • VR拍摄的流程与商业应用,实用的VR拍摄技巧
  • 汇川ITS7100E触摸屏交互界面开发(二)界面开发软件使用记录
  • python试卷01
  • Cesium性能优化
  • 代码随想录刷题Day22
  • 如何利用API接口与网页爬虫协同进行电商平台商品数据采集?
  • Java应用服务器选型指南:WebLogic vs. Tomcat、WebSphere、JBoss/Wildfly
  • 今日行情明日机会——20250801
  • Linux系统磁盘未分配的空间释放并分配给 / 根目录的详细操作【openEuler系统】
  • 电脑的时间同步电池坏掉了,每次开机都要调整时间
  • 【RocketMQ】鉴权机制
  • 网络协议之路由是怎么回事?
  • 电商项目_性能优化_数据同步
  • 18.若依框架中的xss过滤器
  • Java 24 新特性解析与代码示例
  • 牛客——取数游戏2
  • UE5 动态扫描波
  • 【C#学习Day15笔记】拆箱装箱、 Equals与== 、文件读取IO
  • iPhone查看App日志和系统崩溃日志的完整实用指南
  • 深入理解C语言指针:从回调函数到数组指针笔试题全解析(下)
  • 遥控器信号捕获
  • [CISCN 2022 初赛]online_crt
  • 基于react的YAPI实战指南
  • JavaWeb--Student2025项目:增删改查
  • 光纤网络FTTx(光接入网的应用类型)
  • 标准项目-----网页五子棋(4)-----游戏大厅+匹配+房间代码