• TCP为什么是三次握手


    TCP:Transmission Controll Protocol:传输控制协议面向连接、可靠的、基于字节流的传输层协议

    ​        面向连接:客户端和服务端进行连接的协议

    ​        可靠性:保证信息能够从发送端到达接收端;这是由TCP每次都记录消息发送状态、主动控制发送失败的消息重新发送来完成的

    TCP的三次握手:

    ​        最开始时客户端和服务端都处于 CLOSED 状态,然后服务端先主动监听某个端口,此时服务器端就变成了 LISTEN(监听)状态;

    ​        然后客户端主动发起连接,发送 SYN(同步序列编号),此时客户端就变成了 SYN-SENT 状态;

    ​        服务端接收到信息之后返回 SYN 和 ACK 至客户端,此时服务器端就变成了 SYN-REVD 状态;

    ​        客户端接收到消息之后,再发送 ACK 至服务器端,此时客户端就变成了 ESTABLISHED(已确认)状态,服务端收到 ACK 之后,也变成了 ESTABLISHED 状态,此时连接工作就执行完了

    为什么要三次握手:

    ​        防止重复连接:出现网络问题时,client发送了SYN(seq=90),但是网络拥堵下被阻塞了,然后client又发了一个SYN(seq=100),server首先会接收到旧的SYN,并返回ack = seq + 1 = 90 + 1 ,客户端就会终止这次连接;直到server返回SYN = 100 + 1才返回ack

    若是两次握手,则无法阻止历史连接

    ​        同步双方的初始序列号:client发送一个序列号,server会返回一个ack和一个序列化,client在返回一个ack,保证初始序列号的同步;序列号能够判断哪些数据已经接收

  • 相关阅读:
    Ubuntu修改静态IP、网关和DNS的方法总结
    第一章 计算机系统概述 六、操作系统的体系结构
    编写TypeScript的库
    低成本、低门槛、易部署,4800+万户中小企业数字化转型新选择
    手写call
    wsl不能启动 - 参考的对象类型不支持尝试的操作。
    JAVA 反射学习
    Docker换国内源和简单操作
    01-promise的初体验
    C语言的语句与程序的基本结构
  • 原文地址:https://blog.csdn.net/ggggggzzzzz/article/details/133352150