客户端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在等待一段时间后,也会自动断开连接。

# 和三次握手区别就是 接到关闭请求后不能像建立连接那样立马进行关闭,需要等待确认我这边数据都发完了之后,才会开始关闭。

最新文章

  1. java Http编程小结
  2. 转:深入浅出UML类图(具体到代码层次)
  3. 【转】PowerShell入门(四):如何高效地使用交互式运行环境?
  4. 微信支付接口 H5
  5. 探秘空值位图掩码(NULL bitmap mask)
  6. Android 手机号码格式验证
  7. JAVA fundamentals of exception handling mechanism
  8. 【Qt】命令行编译Qt程序(nmake)【转】
  9. [C#]Thread Safe Dictionary in .NET 2.0
  10. 《UNIX网络编程》之点对点通信
  11. Sublime Text 2 - There are no packages available for installation
  12. Delphi编程之爬取贴吧多页帖子图片
  13. thinkPHP框架5.0 类图下载
  14. C++ template一些体悟(2)
  15. Bullet物理引擎的安装与使用
  16. git解决 remote: Permission to wuheng1991/site-manager.git denied to XXX
  17. Python 简说 list,tuple,dict,set
  18. angular指令的compile,prelink 和 postlink以及controller
  19. ecplise里的run as里只有run configurations是怎么回事?
  20. SpringCloud学习资料

热门文章

  1. excel表格数据导入导出
  2. 获取控件的xy坐标
  3. 用JS改变embed标签的src属性
  4. C++面试常见问题——08const关键字
  5. 一百零八、SAP的OO-ALV之二,创建屏幕Screen
  6. 164-PHP 文本替换函数str_replace(五)
  7. (HN)AHOI2018 转盘
  8. 深度解析Critical Thinking的四个阶段
  9. 逆向-PE导入表
  10. python类、super函数