跳到主要内容

TCP和UDP

UDP:

  • 用户数据报文协议(UDP,User Datagram Protocol)
  • UDP 是⼀个面向报文(报文可以理解为⼀段段的数据)的协议。意思就是UDP 只是报⽂的搬运工,不会对报文进行任何拆分和拼接操作

具体来说:

  • 在发送端,应⽤层将数据传递给传输层的 UDP 协议, UDP 只会给数据增加⼀个 UDP 头标识下是 UDP 协议,然后就传递给⽹络层了 在接收端,⽹络层将数据传递给传输层, UDP 只去除 IP 报⽂头就传递给应⽤层,不会 任何拼接操作

TCP:

  • TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议
  • TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包

区别:​

连接性:

  • UDP 是⽆连接的,也就是说通信不需要建⽴和断开连接。
    • UDP只提供端到端的数据传递,不做可靠性校验,因此不需要连接去确认
    • 因此UDP的缺点不可靠,不稳定。
  • TCP是面向连接,也就是说客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据
    • TCP协议需要保证数据传输可靠,那么我们通过连接(三次握手)这个过程确定,双方都可以收发数据。如果连接都连接不上,那么就可以确定双方的通信不可达,建立连接失败,没办法可靠的传输。

可靠性:

  • TCP是可靠,UDP不可靠

报文:

  • TCP面向字节流,UDP面向报文

效率:

  • TCP传输效率低,UDP传输效率高
  • 因为UDP支持一对一,一对多,多对一和多对多交互通信,而TCP连接只能一对一通信
  • .TCP为了可靠性保证,增加了3次握手4次挥手,复杂的拥塞控制,以及流量控制,让网络传输的延迟进一步增加。
  • TCP头部的大小比UDP复杂,也会影响传输的数据量

场景​

  • UDP 应用场景:
    • 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用 UDP。
      • 语音、视频
  • TCP的应用场景:
    • 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方
      • 文件传输、浏览器的HTTP协议

WebSocket 使用的是 TCP 还是 UDP 协议​

  • websSocket是基于TCP的协议的,不可能是UDP协议,UDP 是⽆连接的,也就是UDP说通信不需要建立和断开连接。而webSocket是客户端和服务器之间的连接

为什么说TCP是字节流协议​

TCP是面向字节流的协议,意味着它把数据看成一个字节流

  • 【为了方便传输】TCP会把数据划分成若干个数据包,并将这些数据包逐一发送出去。数据包的大小是不固定的
  • 接收方在接收数据时把所有接收到的数据包组装起来,然后提供给应用层
    • 应用层协议是在应用程序之间进行通信所使用的协议

当你在浏览网页时,你的电脑【客户端】就是接收方,它会接收到服务器发送的数据;而服务器则是发送方,它会向你的电脑【客户端】发送数据。当你的客户端收到数据后,它会将数据交给浏览器,由浏览器负责渲染网页。这里的浏览器就是应用层。