zoukankan      html  css  js  c++  java
  • tcp笔记

    三次握手

      1.客户端发送连接请求

      2.服务器收到请求后,告诉客户端可以建立连接

      3.客户端收到后继续返回说自己已经连接,可以发送数据了

      不能二次握手的原因:如果服务器二次握手就默认客户端已经连接了,开始发送数据,但此时的客户端并没有真正的连接,导致客户端会再次发起第一次握手请求,使服务器建立很多无效连接

    四次挥手

      1.客户端:我没有请求发给你了

      2.服务器:你的请求我已经收到了,但是我还没有准备好,你继续等待我的消息

      3.服务器:我已经准备好了,你可以关闭了

      4.客户端:我可以关闭了,你也可以关闭了  。。。。。等待2MSL,防止服务器没有接收到四次挥手,服务器会重新三次挥手

      

     (4)为什么连接的时候是三次握手,关闭的时候却是四次握手?

    答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

    参考

  • 相关阅读:
    ArrayList 和LinkedList
    Java集合复习
    Android 自定义View 例子一
    ant或perl混淆,打多渠道包,此jar包含证书链未验证的条目 无法签名的问题解决办法
    back键彻底关闭应用程序
    Android中View绘制流程
    XCode的快捷键
    Android系统的设计模式
    AsyncTask和Handler
    Android使用软引用和弱引用
  • 原文地址:https://www.cnblogs.com/zhz-8919/p/10236363.html
Copyright © 2011-2022 走看看