前端面试笔记1:TCP 和 UDP(三次握手和四次挥手)

TCP 和 UDP

文章目录

  • TCP 和 UDP
    • TCP协议和UDP协议的工作原理
      • TCP 协议的工作原理
        • 三次握手
        • 四次挥手
      • UDP 协议的工作原理
    • TCP 和 UDP 的主要区别

对于 TCP协议和 UDP协议大家肯定都有所耳闻,我们浏览网页、收看视频和软件聊天都是通过这两种协议来进行数据传输的。那么它们是如何工作的,这两种协议又有什么区别呢?

TCP协议和UDP协议的工作原理

TCP 协议和 UDP 协议都工作在传输层,它们的目标都是在程序之间传输数据。数据可以是文本文件、可以是视频也可以是图片,对于这两种协议来说都是一堆二进制数。那么它们之间的区别在哪里呢?

TCPUDP 协议的最大的区别是一个基于连接一个基于非连接

基于连接和基于非连接的区别在于能否得到及时的反馈,并且知道对方是否接收到了信息。

TCP 协议的工作原理

三次握手

三次握手是建立连接的过程。

当客户端向服务端发起连接时,会向服务端先发一包连接请求数据,过去询问一下,能否与你建立连接,这包数据我们称为 SYN 包。如果对端同意连接,则回复一包 SYN + ACK 包,客户端收到之后回复一包 ACK 包,连接建立。

因为这个过程中互相发送了三包数据,所以称为三次握手

为什么是三次握手而不是两次握手就建立连接?

就是为了解决网络信道不可靠的问题,为了在不可靠的信道上建立可靠的连接。

举个形象的例子:

三次握手:

A:是B吗?我要跟你通信,听的到我说话吗?

B:可以听到,你听的到我说话吗?

A:我也听的到。连接建立。

四次挥手

处于连接状态的客户端和服务端都可以发起关闭连接状态的请求。此时需要四次挥手来进行连接关闭。

假设客户端主动发起关闭连接请求,它需要向服务端发起一包 FIN 包。表示要关闭连接,自己进入终止等待1状态。这是第一次挥手

服务端收到 FIN 包,回复一包 ACK 包,表示自己进入了关闭等待状态。客户端进入终止等待2状态。这是第二次挥手

服务端此时还可以发送未发送的数据,而客户端还可以接收数据。

待服务端发送完数据之后,发送一包 FIN 包,进入最后确认状态。这是第三次挥手

客户端收到之后,回复 ACK 包,进入超时等待状态。经过超时时间后关闭连接。而服务端收到 ACK 包后立即关闭连接。这是第四次挥手

客户端需要进入超时等待时间是为了保证服务端能收到 ACK 包。

同样举个形象的例子:

四次挥手:

A:困了,在干嘛?

B:在刷视频。

B:你要睡了吗?

A:对,晚安。(看到消息安心入睡)

UDP 协议的工作原理

UDP 协议是非连接的,发送数据就是简单的把数据包封装一下,然后从网卡发出去就可以了。数据包之间并没有状态上的联系。

正因为 UDP 这种简单的处理方式,导致其性能损耗非常少。对于 CPU 内存资源的占用也远小于 TCP 。但是对于网络传输过程中产生的丢包,UDP 协议并不能保证。所以 UDP传输稳定性上要弱于 TCP

TCP 和 UDP 的主要区别

TCP 传输数据稳定可靠,适用于对网络通讯质量要求较高的场景。

UDP优点是速度快。但是可能产生丢包,所以适用于对实时性要求较高,但是对少量丢包并没有太大要求的场景。比如语音通话,视频直播等。

UDP 还有一个应用场景就是隧道网络。比如我们常用的 VPN 就是隧道网络。

你可能感兴趣的:(面试,udp,tcp/ip,前端)