当前位置:首页 > 技术文章 > 正文内容

tcp协议的六个标识位(tcp协议号6)

zonemu3个月前 (07-14)技术文章44

6个标识位:

1.URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据。

2.ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

3.PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

4.RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误。

5.SYN 置1时用来发起一个连接。

6.FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。

其中URG不能和PSH标志位同时使用。

URG为紧急数据标志,如果URG为1,表示本数据包中包含紧急数据。此时紧急数据指针表示的值有效,它表示在紧急数据之后的第一个字节的偏移值(即紧急数据的总长度)。

ACK为确认标志位。如果ACK为1,表示数据包中的确认号有效。

PSH位,表示强迫数据传输。

RST标志位用来复位一条连接。当RST=1时,表示出现严重错误,必须释放连接,然后再重新建立。

SYN标志位用来建立连接,如果SYN=1而ACK=0,表明它是一个连接请求;如果SYN=1且ACK=1,则表示同意建立一个连接。

FIN为1时,表示数据已经发送完毕,希望释放连接。

不合法的标志位组合。

1、所有标志位都为0。

2、SYN和FIN同时被置1。

3、SYN和RST同时被置1。

4、FIN和RST同时被置1。

5、FIN位被置1,但ACK位没有被置1。

6、PSH位被置1,但ACK位没有被置1。

7、URG位被置1,但ACK位没有被置1。

了解到了TCP标志位的含义,就可以了解TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这 是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确 认数据包,这是第二次握手;最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接 建立,开始通讯。

相关文章

GitLab-合并请求(gitlab合并请求合并者还原图解)

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到...

K8s 的 Namespace 到底解决了什么问题?

在 Kubernetes 的世界里,资源调度、服务编排以及自动化运维构成了它强大的基础架构能力。但随着集群规模的扩大和团队协作复杂度的提升,仅靠原始的资源管理手段已经难以支撑多租户或大型项目的管理需求...

基于Docker构建安装Git/GitLab,以及制作springboot工程镜像

今天给大家分享的是《领先的开源自动化服务器Jenkins的应用实战》之基于Docker安装构建Git/GitLab版本控制与代码云存储的场所;使用Git管理项目,springboot工程制作镜像知识体...

数组、去重、排序、合并、过滤、删除

ES6数字去重 Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4])] //[1,2,3,4]2...

前端基础进阶(十):深入详解函数的柯里化

配图与本文无关柯里化是函数的一个高级应用,想要理解它并不简单。因此我一直在思考应该如何更加表达才能让大家理解起来更加容易。通过上一个章节的学习我们知道,接收函数作为参数的函数,都可以叫做高阶函数。我们...

问题:vue项目打包后,放到二级目录无法访问的解决方案

一、背景实现多个Vue子项目合并发布到同一个nginx每个子项目一个目录二、现象项目在开发环境中正常运行打包上传到nginx根目录的下一级,就会出现问题三、解决这个问题是由于Vue是从nginx的根目...