TCP Flags标志位介绍-程序员宅基地

技术标签: TCP  OpenSSL/HTTP/Socket  

      传输控制协议(Transmission Control Protocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40 字节的可选数据字段组成。如下图所示:来自于https://www.geeksforgeeks.org  注:下图中的RST和PSH位置是错误的,应互换

     

      1.源端口号(Source Port):16bits,该字段标识发送方应用程序的端口号。

      2.目标端口号(Destination Port):16bits,该字段标识接收方应用程序的端口号。

      3.序列号(Sequence Number):32bits,在连接建立(三次握手)后,该字段包含一个32位随机初始序列号/起始数据位,随后增加传输的字节数。

      4.确认应答号(Acknowledgement Number):32bits,接收方使用这个32位参数来请求下一个TCP段。它是下一个预测的TCP段的序列号。

      5.报头长度(Header Length):4bits,该字段表示TCP报头的大小,但是是按比例缩小的版本。

      6.保留位(Reserved):6bits,该字段的位设置为零。这些位保留供以后使用。

      7.标志位(Flags bits):6bits,一组六个字段,每个字段长一位。TCP标志用于指示TCP会话期间的特定状态,可用于故障排除或控制特定连接的处理方式。每个标志位值为1,表示特定标志为”设置”。如下图所示:

       TCP标志是TCP报头中存在的各种类型的标志位,它们每个都有自己的意义,它们启动连接、携带数据并断开连接。

      SYN和ACK标志用于TCP三次握手以建立连接。在TCP连接建立过程中,TCP发送了一个设置了SYN标志的TCP段。ACK标志始终设置,除了TCP连接建立的第一段。只有SYN标志被设置,表示这是新的TCP连接的第一个段。

      TCP使用次握手来建立可靠的连接。连接是全双工的(full-duplex),双方相互同步(SYN)和确认(ACK)。三次握手分三个步骤进行:SYN、SYN, ACK、ACK,如下图所示:

       四次挥手分四个步骤进行:FIN, ACK、ACK、FIN, ACK、ACK。四次挥手,就是在关闭连接的时候双方一共要操作四次。

      URG和PSH标志在数据传输期间使用

      (1).URG(Urgent,紧急标志):当设置此位值时,数据优先于其它数据。表示数据包所携带的数据应立即由TCP堆栈处理。表明发送端向另一端使用紧急方式发送数据,包中有需要紧急处理的数据。

      (2).ACK(Acknowledgment,确认标志):应答响应,这个位字段在连接建立(次握手)和数据传输期间使用。用于确认数据包已经收到,也用于确认发起请求和拆除请求。TCP规定除了最初建立连接时的SYN包之外该位必须设置为1。

      (3).PSH(Push,推送标志):这个位字段告诉应用程序立即发送数据。表示传入的数据应该直接传递给应用程序,而不是被缓存。PSH为0,也就是普通情况下,则不需要立即传,而是先进行缓存。

      (4).RST(Reset,重置标志):这个位字段设置是为了重置TCP连接。表示连接已关闭,或者服务可能不接受请求。表示TCP连接中出现异常必须强制断开连接。RST标志用于中止连接,经常用它解决网络连接问题

      (5).SYN(Synchronization,同步标志):这个位标志用于发起一个连接,建立连接并设置初始序列号。

      (6).FIN(Finish,完成标志):这个位字段表示TCP连接的结束,表示正在断开连接或关闭连接。发送方和接收方都发送FIN包以终止连接。表示发送方完成任务,今后不会有数据发送,希望断开连接。当通信结束希望断开连接,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。FIN标志用于终止TCP连接

      8.窗口大小(Window Size):16bits,该参数表示接收端的缓存容量。窗口的大小用于管理数据流。

      9.校验和(Checksum):16bits,发送方计算循环冗余校验(Cyclic Redundancy Check,CRC)校验和,并在数据传输前将其添加到该字段中,以防止数据错误。接收设备可以使用校验和来检查接收到的报头和载荷(payload)中的缺陷。

      10.紧急指针(Urgent Pointer):16bits,指向段中紧急数据的结尾。但是,仅当设置了URG标志时才会出现此字段。

      11.选项/可选数据(Options/optional data):0--40字节,该字段包含可选的信息,例如最大段大小、时间戳、窗口大小扩展、填充等。

      以上内容主要来自于网络整理。

      GitHubhttps://github.com/fengbingchun/OpenSSL_Test

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fengbingchun/article/details/124084677

智能推荐

pta基础编程题目集,c语言实现_pta编程题-程序员宅基地

文章浏览阅读657次,点赞6次,收藏6次。由于考研复试的机试需要指定c语言完成,很长时间没有写过c语言的代码,故而用c语言刷了pta上的基础编程题目集,后续会继续更新c语言实现的数据结构。_pta编程题

yolov5 检测一类物体_怎么让yolov5只检测单一物体-程序员宅基地

文章浏览阅读8.2k次,点赞15次,收藏99次。yolov5的官方框架可较好的对共80种类进行目标检测,本文介绍一种直接修改源代码来只检测一类物体的方法以及通用的方法。_怎么让yolov5只检测单一物体

configmap中json或者yaml内容格式问题_不符合yaml1.2的json-程序员宅基地

文章浏览阅读2.2k次。configmap中json或者yaml内容格式问题,是什么原因?怎么排查问题呢?_不符合yaml1.2的json

系统函数-文件操作-truncate()_truncate的返回值-程序员宅基地

文章浏览阅读1k次。文件截断或填充truncate#include int truncate(const char * path, off_t length);int ftruncate(int fd, off_t length);函数说明:truncate()会将参数path 指定的文件大小改为参数length 指定的大小. 如果原来的文件大小比参数length 大, 则超过的部分会被删去.返_truncate的返回值

java:打印三角形的星星(附完整源码)_java打印三角形星星-程序员宅基地

文章浏览阅读534次。java:打印三角形的星星(附完整源码)_java打印三角形星星

技术博客汇总-程序员宅基地

文章浏览阅读4.1k次。Android中文WikiAndroidStudio-NDK开发-移动开发团队谦虚的天下 - 博客园gundumw100博客 - android进阶分类文章列表 - ITeye技术网站CSDN博文精选:Android系列开发博客资源汇总 - CSDN.NET - CSDN资讯Android笔记本——半年来的研究笔记,导航。 - 思想实践地 - 程序员宅基地【魏祝林】Android中

随便推点

架构师强推学习Java虚拟机和垃圾回收基础知识:Java代码执行过程-程序员宅基地

文章浏览阅读835次,点赞5次,收藏8次。Java代码是如何被执行的?要回答这个问题并不容易。一般来说,代码的执行有两种模式:解释执行和编译执行。解释执行指的是解释器读取源代码,逐行解释代码,生成目标机器代码并执行;编译执行指的是编译器首先把源代码编译成目标机器代码,然后链接成可执行文件,最后由OS负责执行可执行文件。Java代码的执行过程更为复杂。Java代码在执行之前首先编译成字节码(ByteCode,简称BC,是一种中间语言表示),然后由JVM执行字节码。

光通量发光强度照度亮度关系_单位面积光功率和照度,光强,亮度,光通量怎么换算?...-程序员宅基地

文章浏览阅读3.1k次。功率  概述功率是指物体在单位时间内所做的功,即功率是描述做功快慢的物理量。功的数量一定,时间越短,功率值就越大。求功率的公式为功率=功/时间求功率的公式也为P=W/t =UI=I²R=U²/RP表示功率,单位是“瓦特”,简称“瓦”,符号是“w”。W表示功,单位是“焦耳”,简称“焦”,符号是“J”。t表示时间,单位是“秒”,符号是“s”。因为W=F(f 力)*s(s位移)(功的定义式),所以求功率..._功率转化为亮度的公式

oracle 左连接(left join) 排序问题_left join改变结果顺序-程序员宅基地

文章浏览阅读7.1k次。项目环境:linux、tomcat8.5、SSM框架、oracle11g项目中一个列表查询,使用了左连接(left join),类似这样:select * from A left join B on A.xx=B.xx(A是个视图,视图内是有order by的)在PL/SQL中查询的结果集排序同A表,但项目部署到服务器后,排序却乱了,确认A表使用了order by,排序无问题,那么可能问..._left join改变结果顺序

菜鸟小万的每天一道ccf题Day12(201612-01中间数)-程序员宅基地

文章浏览阅读104次。欢迎大家留言一起探讨更好的解法,有什么错误也欢迎指正呀。呜呜呜呜,dbq,连上21天课我要废了,时间只能让我完成第一题了。忙完这周必然开始第二题(flag)。标题已经加了题号了,方便查找。201612-01中间数问题描述  在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。  给定一个整数序列,请找出这个整数序列的中间数的值。输入格式  输入的第一行包含了一个整

机器之心|网易云信神经网络音频降噪算法:提升瞬态噪声抑制效果,适合移动端设备...-程序员宅基地

文章浏览阅读825次。机器之心专栏网易云信音频实验室网易云信音频实验室自主研发了一个针对瞬态噪声的轻量级网络音频降噪算法(网易云信 AI 音频降噪),对于 Non-stationary Noise 和 Tran..._神经网络语音降噪困境

tf.expand_dims()-程序员宅基地

文章浏览阅读168次。链接: link.