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

[网络][tcp协议]:tcp报头

tcp(传输控制协议)是一种面向字节流的传输层协议,相较于udp协议,tcp能保证传输数据的可靠性与准确性,tcp也是目前最常见的传输层协议

本文主要介绍tcp报头各个字段的含义与用途

注:保留6位和6位标记位是目前最普遍的写法,在我查资料时,发现有一些拓展情况,会在后文细说

最简单的两个字段,

  • 16位源端口号                                                                                                          即自身进程绑定的端口号
  • 16位目的端口号                                                                                                       即通信目标绑定的端口号

  两个与长度有关的

  • 四位首部长度                                                                                                           代表tcp报头长度,因为有选项的存在,tcp报头长度1不是固定的,1的首部长度代表4字节(1:4),4位首部长度最多是16,也就是说,tcp报头最多是64字节 
  • 16位窗口大小                                                                                                           代表接收方缓存区的大小,因为tcp的读写使用了文件流,当传输大量数据时,可能会把对方的文件缓冲区打满导致传输失败,tcp的解决方案是,双方在通信时提前告知对方自己的缓冲区大小,让对方选择适合的大小进行传递

两个序号

  • 32位序号                                                                                                                    tcp给每次发送的字节流的起的一个独一无二的序号,在实际情况中,tcp进行通信时会把大型文件拆成多个小字节包,每次发几个小包,这时序号就起到了一个保证可靠性和排序的作用,实际通信时,这个序号就是小字节包在大型文件的相对下标或者小文件包对应的指针
  • 32位应答序号                                                                                                             上一次收到的序号+1;tcp为了保证传输可靠性,会在每一次收到请求后先返回一个应答,表示我收到了。应答报头会把请求报头的序号+1作为自己的应答序号;相当于告诉请求方,我收到了应答序号之前的数据

tcp为了减轻网络负担,有时会应答和请求一块发

保留六位+六位标记位

  • 六位标记位代表                                                                                                             当前报头的具体类型,以下是ai生成的具体六位
    • URG(Urgent):紧急位,当URG=1时,表示该报文段包含紧急数据,需要优先处理。紧急指针字段在此标志位为1时才有效。
    • ACK(Acknowledgement):确认位,当ACK=1时,表示确认号字段有效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
    • PSH(Push):推送位,当PSH=1时,提示接收端应用程序立刻从TCP缓冲区把数据读走,而不是等到缓冲区满了再向上层传递。
    • RST(Reset):重置连接位,当RST=1时,表示TCP连接出现了严重错误,必须释放连接,然后再重新建立连接。
    • SYN(Synchronize):同步位,用于建立连接。
    • FIN(Finish):结束位,标记数据是否发送完毕。当FIN=1时,表示数据已经发送完成,可以释放连接
  • 保留6位                                                                                                                          可以理解为当初指定协议时,制作者认为6位标记位可能不够,未来可能会有一些新的,如今已经有3位在部分时候被使用
    • 扩展控制标志:随着网络通信的复杂性增加,可能需要引入新的控制标志来支持额外的协议行为。例如,某些实验性协议可能会利用这些保留位来实现新的连接管理机制。

    • 协议扩展:保留位可以用于支持TCP协议的扩展,例如在某些特殊场景下,用于标记报文段的优先级或特殊处理需求。

    • 未来协议兼容性:保留位的存在为未来协议的扩展提供了灵活性,使得TCP能够在不完全重新设计协议的情况下引入新特性。

  • 4位首部长度                                                                                                                 代表整个报头长度,1代表有4字节,tcp报头最长为64字节,4位首部长度最小为5

  • 16位窗口大小                                                                                                               代表我方网络可接受的一个适宜的文件大小

  • 16位校验和                                                                                                                   用于检测数据是否有误(不需要关心)

  • 16位紧急指针                                                                                                               用于描述当前文件的紧急行(不需要关心)


http://www.kler.cn/a/590531.html

相关文章:

  • UI设计公司:数据大屏设计提升用户体验的方法
  • 【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分
  • OpenGL ES 入门指南:从基础到实战
  • golang-struct结构体
  • C# 使用Markdown2Pdf把md文件转换为pdf文件
  • centos 安装pip时报错 Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
  • SQLMesh系列教程:利用date_spine宏构建日期序列实践指南
  • hbuiderx的sass编译器报dart-sass等错误的解决方法
  • 美团AI面试总结
  • 密码学研究热点
  • obeaver 连接oracle 库 模式乱码
  • 基于 GEE 利用 Sentinel-1 双极化数据计算 SDWI 指数实现逐月提取水域面积
  • 漏洞预警 | Apache OFBiz 服务端模板注入漏洞(CVE-2025-26865)
  • ChatGPT and Claude国内使用站点
  • 汽车PKE无钥匙进入系统一键启动系统定义与原理
  • 动作捕捉手套如何让虚拟现实人机交互 “触手可及”?
  • 【GPT入门】第24课 langfuse介绍
  • Django 集成 Redis 数据库指南
  • PySide(PyQt),QGraphicsItem的坐标映射转换函数
  • 【Unity3D】Addressables使用流程