• 【计算机网络】TCP协议与UDP协议


    三次握手

    图形展示

    在这里插入图片描述

    形象的比喻

    在这里插入图片描述

    为啥需要三次?

    在这里插入图片描述
    成功建立连接通道之后,客户端就和服务器进行数据传输了。在数据传输的过程中,客户端与服务器都是通过数据包进行传送。通过数据包进行传送就会产生一些问题。比如说传输过程中出现数据包丢失或者发送的数据包的顺序与接收的数据包的顺序不一样。
    TCP/IP在数据传输过程中就起到了很不错的作用。
    当客户端与服务器建立连接之后,TCP/IP协议就会建立一个发送缓冲,为每个字节创建一个序列号(起初建立的时候序列号从0开始)

    • 发送的内容会占用发送缓冲里的字节序列,发送的报文包括起始序列号和数据内容长度以及数据内容本身;接收端则回复ACK=序列号+长度=下一包的起始序列号;这样对于连续的数据包接收端只需要回复一个ACK即可。
    • 因此有这样的技术,对于数据就可以切割分块进行发送了。接收端只需要对发送报文里的序列号和长度对接收到的数据包进行重组(这样就解决了数据包接收乱序问题)
    • 如果有丢失的数据包,接收端只需要向发送端回复ACK的内容(即丢失数据包的起始序列号)让发送端重发即可

    四次挥手

    在这里插入图片描述
    当客户端想要断开连接的时候,客户端就向服务端发送FIN包
    客户端发送完成后进入等待状态FIN-WAIT-1(第一次挥手)
    服务端接收到FIN包,就向客户端发送ACK包,服务端进入CLOSE-WAIT(第二次挥手)
    但是此时客户端和服务单还可以接收和发送数据包。待服务端
    发送完未发送的数据包给客户端后,再发送一个Fin包进入最后确认状态(第三次挥手)
    接收到服务端发送过来的FIN包,客户端回复ACK包确认关闭连接后,客户端
    进入延时等待关闭状态。而接收到客户端发过来ACK包的服务端时
    直接关闭服务端的连接
    为什么要延时等到关闭?
    如果服务端没有接收到客户端发送过来的ACK时,就会继续发一个FIN包
    此时客户端接收到FIN包后重新向服务端发送ACK包并刷新等待时间

    客户UDP协议就直接将数据包进行打包经过网卡传输

    TCP稳定可靠文件传输邮件传输网页浏览
    UDP速度快(实时性强)域名查询电话视频直播

    参考

    B站

  • 相关阅读:
    02.URL的基本知识和使用
    【蓝桥杯】第十四届模拟赛第一期及第二期填空汇总
    asp.net乒乓球场地管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    睡眠剥夺后皮层微结构的广泛变化
    基于Python的三甲医院网站的设计和实现
    RabbitMQ之Direct(直连)Exchange解读
    Educational Codeforces Round 138 (Rated for Div. 2)-赛后总结
    idea 配置maven项目
    day02 Nacos集群配置、Feign远程调用和统一网关Gateway
    vue3基础知识
  • 原文地址:https://blog.csdn.net/weixin_54438368/article/details/125882570