zoukankan      html  css  js  c++  java
  • TCP 的三次握手和四次挥手

    三次握手:
    
    客户端和服务器之间的通话要创建TCP来当作数据请求和返回的一种通道。三次握手就是客户端和服务器通过TCP进行的正常数据交互之前的三次报文交换,只有这三次报文交换成功了,才能正确开始客户端与服务器的数据交互。
    
    第一次握手,客户端向服务器发送一次请求报文:“你好,很高兴认识你,可以聊聊吗?”
    第二次握手,服务器返回客户端一次响应报文:“你好,很高兴认识你,那我们聊聊吧!”
    第三次握手,客户端向服务器发送一次请求报文:“太好了,那我们开始正式聊天吧!”
    四次挥手:
    
    所谓四次挥手就是TCP连接的释放和解除。连接的释放必须是一方主动释放,另一方被动释放。
    
    第一次挥手,客户端向服务器发送一次请求释放报文,并且客户端处于半关闭阶段,停止向服务器传送数据,但可以接受服务器返回的数据。
    第二次挥手,服务器收到报文后,进入半关闭阶段,并且返回给客户端报文,告诉客户端已经收到请求。
    (前"两次挥手"既让服务器端知道了客户端想要释放连接,也让客户端知道了服务器端了解了自己想要释放连接的请求。于是,可以确认关闭客户端到服务器端方向上的连接了)
    第三次挥手,服务器发送完第二个报文后,进行连接的释放和解除准备,准备好以后,会继续给客户端发送报文,告诉客户端,这边已经准备好了。
    第四次挥手,客户端接收到服务器“准备好释放解除”的报文后,自己也进入释放解除的准备阶段,并向服务启发送这边已经准备好的报文。发送过后,等待2MSL后(确保服务器已经解除释放完成),客户端正式关闭TCP连接。
    为什么握手三次,挥手四次:
    
    因为在释放解除的时候,服务器属于被动方,突然接收到释放解除请求,需要缓冲,需要给服务器一些时间去处理数据,保证连接的正常释放解除。
  • 相关阅读:
    swift中? ! weak unowned以及动态时语言理解
    线程状态---Day24
    线程安全---Day23
    线程---Day22
    异常---Day21(写得有错请指出,感谢)
    Java之路---Day18(List集合)
    Java之路---Day17(数据结构)
    Java之路---Day16(泛型)
    Hoeffding不等式证明
    事件绑定之.bind()
  • 原文地址:https://www.cnblogs.com/panic404/p/13568673.html
Copyright © 2011-2022 走看看