博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP的状态(SYN,FIN等)
阅读量:6634 次
发布时间:2019-06-25

本文共 921 字,大约阅读时间需要 3 分钟。

TCP的标志位有SYN,FIN,RST,ACK,PSH,URG

SYN:建立连接。

FIN:关闭连接。

RST:连接重置。

ACK:响应。

PSH:有数据传输。

URG:urgent紧急。

ACK可以和其他的命令同时使用:比如SYN和ACK同时为1,代表建立连接之后立即相应,如果只有SYN为1,则代表只是建立了链接。

TCP的三次握手是通过ACK来体现的:

第一次:A主机发送位码为SYN=1,产生一个随机数seq number = 1234567的数据包到达主机B,主机B通过SYN=1就会知道,A要建立一个链接。

第二次:B主机收到连接请求后要确认联机信息,向A发送ack number = (seq+1),SYN=1,ACK=1,随机产生seq=7654321的包。

第三次:A主机收到后检查ack number是否正确,number=1234567+1,以及ACK=1,若正确,A发送ACK number=B的sql+1,主机B收到以检查正确number=7654321+1,切ACK=1则成功建立连接。

RST一般是在FIN之后才会有1的情况。出现RST的原因大概有以下几点:

1、服务器端口未打开。

去请求一个端口未打开的机器,会返回RST连接重置,这个取决于操作对于这种情况的处理,有点操作系统会返回,而有的操作系统,在这种情况下,不会返回任何数据。

2、异常终止一个连接。

终止一个连接的正确方式是发送FIN,这叫有序释放。只有在所有的排队的数据发送完成之后才会发送FIN,这样能保证没有任何数据丢失,但也有可能发送一个复位报文段而不是FIN来中途释放一个连接。这叫异常释放。

异常终止的好处:

1、丢弃任何待发数据,并立即发送复位报文段。

2、RST的接收方,会区分另一端是正常释放还是异常释放,应用程序使用的API必须提供产生异常关闭而不是正常关闭的手段。

RST报文不会导致另一端产生任何相应,另一端根本不进行确认。收到RST的一方将终止该连接,并通知应用层连接复位

转载于:https://www.cnblogs.com/Elliott-Su-Faith-change-our-life/p/7463951.html

你可能感兴趣的文章
Ftp的断点下载实现
查看>>
[转载] ubuntu Authentication failure
查看>>
Ring0 - 链表
查看>>
修改数组之----splice
查看>>
a版本冲刺第五天
查看>>
Arduino示例教程超声波测距实验
查看>>
Linux中chkconfig使用介绍
查看>>
二进制方式快速安装MySQL数据库
查看>>
查询指定库中所有表
查看>>
Flash AS3 Loader的一些总结
查看>>
js的逻辑 OR 运算符- ||
查看>>
[SQL Server]一次执行资料夹内的.sql 指令码
查看>>
【计算机视觉】粒子滤波跟踪
查看>>
hadoop集群扩展
查看>>
操作系统诊断
查看>>
[Compose] 19. Leapfrogging types with Traversable
查看>>
Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
查看>>
2015年度新增开源软件排名TOP100
查看>>
BZOJ 2456: mode(新生必做的水题)
查看>>
View State
查看>>