zoukankan      html  css  js  c++  java
  • TCP三次握手和四次握手最直接的理解

    网上有非常多文章讲TCP为什么建立连接时须要三次握手,关闭连接时须要四次握手。讲了非常多原理。反而让非常多人难以理解。


    事实上仅仅有一句话:TCP连接是两个端点之间的事。因为TCP连接是可靠连接,所以无论是建立连接还是关闭连接,须要两个端点都要发送请求和收到确认


    其次要理解TCP的通道是全双工的。是能够读和写数据的,理解这个之后就明确了为什么关闭连接时须要四次握手。


    首先讲三次握手。建立连接时不涉及到读写通道,仅仅是两个端点的请求和确认。要记住是两个端点之间的,两个端点是平等的关系。

    从client的角度来说,它仅仅须要发送一个请求syn,然后收到ack就能知道连接是能够建立的

    从server端的角度。它也仅仅须要发送一个请求syn,然后收到ack就能知道连接是能够建立的


    所以建立连接时最少仅仅须要三次握手就可以,即server端收到clientsyn,之后向client发送ack的同一时候携带上自己的syn。这样就仅仅须要三次握手就能使两方都发生syn和都收到ack.

    当然你自己设计的时候也能够使用4次或者很多其它的握手,可是最少3次就可以




    关闭连接时也还是两个端点都要发送请求和收到确认。可是关闭连接时涉及到两个端点的读写通道的事。

    从client的角度来说,它发送一个关闭请求FIn,然后收到ack就知道能够关闭连接的

    从server的角度来说。它发送一个关闭请求Fin,然后收到ack就知道能够关闭连接的


    可是因为是读和写通道,所以server端在收到client的关闭Fin时,可能还在往client发送消息,所以仅仅能先发送ack确认client客户关闭写通道,这时候服务端不能使用通过一消息发送它的关闭Fin。仅仅能过会等它自己写完了,才干又一次发送一个关闭请求的Fin。

    所以比建立连接时多了一次握手,关闭连接时最少须要4次握手。理解了为什么须要4次握手之后。就不难理解TCP半关闭的概念。






  • 相关阅读:
    文件系统操作与磁盘管理
    文件打包与解压缩
    环境变量与文件查找
    Linux目录结构及文件基本操作
    vim3
    vim2
    vim1
    用户管理
    初识
    第一章
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5063228.html
Copyright © 2011-2022 走看看