zoukankan      html  css  js  c++  java
  • 面试!TCP的三次握手和四次挥手的过程

    最近面试被问道TCP的三次握手和四次挥手,没准备好,回答的不流畅,趁着空闲时间,赶紧再梳理一下。

    三次握手

    文字描述

    1.由客户端发起链接请求,TCP数据包的SYN标识位等于1,代表要建立链接。

    2.服务端接收到消息后,向客户端发送TCP数据包,ACK位等于1,服务端准备好了。SNY位等于1,请求与客户端建立链接。

    3.客户端收到消息后,向服务端发送数据ACK=1,代表收到了服务端的消息,并可以建立链接了。

    为什么需要三次?

    因为client发起建立连接后,server可以收到消息。但是server不确定client能不能收到server发出的消息,所以需要第二次确定。

    等client确认可以收到消息后,才真正建立链接。

    系统中的一些防御策略可以决定一个端口的发送和接收的规则,有些端口是只能发送不能接收,所以需要二次确定再建立链接,才能保证链接的可靠性。

    流程图

    四次挥手

    文字描述

    1.由client发起断开请求,此时FIN标志位等于1,代表客户端要断开链接

    2.server接收到请求后,会立刻回复ACK=1,代表server准备断开链接

    但是这个时候,server可能还存在没有传输完的数据,所以server并不会直接发送断开标识,而是发送一个ACT的数据包来告诉client收到了断开请求。

    3.等数据传输完成后,由server向client发送FIN=1的数据包,代表server数据传输完成,可以断开了

    4.接收到server的FIN数据包后,client会发送ACK=1,表示自己收到了断开通知,链接断开。

    为什么要四次?

    因为再客户端发起断开请求后,服务端可能还没有传输完成,所以要等服务端数据传输完成后,再向客户端发起断开请求。

    流程图

  • 相关阅读:
    基于PowerShell的Lync Server管理 使用C#
    现在不使用ZeroClipboard我们也能实现复制功能(转)
    手机购物车添加动画
    jq获取元素到底部的距离
    LocalStorage 本地存储
    replace()替换文字扑获组做法
    js原生removeclass方法
    现代浏览器原生js获取id号方法
    手机版浏览器禁止滚动条与释放实例
    wamp设置实现本机IP或者局域网访问 (转)
  • 原文地址:https://www.cnblogs.com/inkyi/p/14940475.html
Copyright © 2011-2022 走看看