zoukankan      html  css  js  c++  java
  • TCP三次握手

    最近在看《图解HTTP》这本书,对于其中的一点我很疑惑,TCP为什么要握三次手,两次不行吗?两次不就可以建立连接了吗?

    介绍:

    TCP三次握手的流程就如上图所示:

    首先,我们明确下主动发送请求的就叫客户端,像浏览器、APP等,而响应请求的就叫服务端。

    客户端首先发送一个带有SYN(synchronize建立联机)标志的数据包给服务端。服务端接受到了后,返回一个带有SYN/ACK(acknowledgement确认)标志的数据包以示确认传达信息。最后,客户端再传回一个带有ACK标志的数据包,代表‘握手’结束。

    原因:

    接下来我们分析下为什么要‘握’三次手:

    第一次握手:

    可得:客户端的发送能力正常、服务端的接收能力正常。服务端此时可以得出自己的接收能力正常,客户端的发送能力正常,但是客户端并不知道,所以需要服务端给它一个爱的肯定,发送一个带有SYN/ACK标志的数据包给客服端。

    第二次握手:

    可得:客户端收到了服务端带有SYN/ACK标志的数据包,客户端可以得知自己的发送和接收数据包的能力正常,还有服务端的接收和发送都是正常的。但是,服务端并不清楚它的发送能力是正常的,服务端需要客户端给它来个爱的反馈。那还说什么呢,客户端赶紧得发送ACK数据包来帮助服务端确认自己的发送能力。

    第三次握手:

    服务端得到了客户端带有ACK标志的数据包,说明它的的发送和接收功能都是正常的。

    那么:你正常,我正常,TCP连接就正常,我们开始数据传输吧~

    问题少年来了:如果发送过程中断了呢?

    答:TCP协议会再次以相同的顺序发送相同的数据包。

  • 相关阅读:
    体检前注意事项
    SSO之CAS单点登录详细搭建教程
    如何通过session控制单点登录
    谈谈防止Ajax重复点击提交
    js判断是移动端还是pc端
    HttpClient通过GET和POST获取网页内容
    HttpClient 4.x 执行网站登录并抓取网页的代码
    360每日自动签到,领取积分 (java httpclient4.x)
    Java @override报错的解决方法
    无开发经验,初学python
  • 原文地址:https://www.cnblogs.com/caoshufang/p/12884828.html
Copyright © 2011-2022 走看看