TCP三次握手和四次挥手相关
2024-09-07 05:22:43
客户端A 服务端B
SYN (建立连接位标识 1为建立联机) ACK (确认位标识 1为确认) seq (一个随机顺序码) ack(一个确认号码,通常为seq+1)
三次握手:
1.A 发起建立 连接 的请求。 发送 包含SYN = 1 , 以及seq = 123456的数据包到B ,B由SYN=1得知 A需要建立连接。 ## 此时A进入一个SYN_SEND状态。
2.B 收到A的请求后, 需要找A确认。 所以发送 包含 SYN=1 , ACK =1 ,ack = 123456+1, seq = 234567 的数据包到A。 ## 此时B进入一个SYN_RECV状态。
3.A收到请求后, 先检查 (2.ack == 1.seq+1) && (2.ACK ==1 ) ) 如果都正确, 再发送 一个包含ack = 2.seq+1 以及ACK = 1 的包给B, B收到后再次检查下ack 以及ACK, 如果都正确,则连接建立。 ## A和B 都进入ESTABLISHED状态
四次挥手原因:
1.A发一个FIN包表示想关闭连接了。
2.B收到FIN后发回一个ACK给A表示收到关闭请求,但是并不能确认我这没有数据发给你了,所以需要等待。
3.B确认没有数据发给A之后, 发送一个FIN给A。
4.A发送一个ACK给B,B断开连接。 A在等待一段时间后,也会自动断开连接。
# 和三次握手区别就是 接到关闭请求后不能像建立连接那样立马进行关闭,需要等待确认我这边数据都发完了之后,才会开始关闭。
最新文章
- java Http编程小结
- 转:深入浅出UML类图(具体到代码层次)
- 【转】PowerShell入门(四):如何高效地使用交互式运行环境?
- 微信支付接口 H5
- 探秘空值位图掩码(NULL bitmap mask)
- Android 手机号码格式验证
- JAVA fundamentals of exception handling mechanism
- 【Qt】命令行编译Qt程序(nmake)【转】
- [C#]Thread Safe Dictionary in .NET 2.0
- 《UNIX网络编程》之点对点通信
- Sublime Text 2 - There are no packages available for installation
- Delphi编程之爬取贴吧多页帖子图片
- thinkPHP框架5.0 类图下载
- C++ template一些体悟(2)
- Bullet物理引擎的安装与使用
- git解决 remote: Permission to wuheng1991/site-manager.git denied to XXX
- Python 简说 list,tuple,dict,set
- angular指令的compile,prelink 和 postlink以及controller
- ecplise里的run as里只有run configurations是怎么回事?
- SpringCloud学习资料