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。
- 语音、视频
- 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用 UDP。
- TCP的应用场景:
- 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方
- 文件传输、浏览器的HTTP协议
- 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方
WebSocket 使用的是 TCP 还是 UDP 协议
- websSocket是基于TCP的协议的,不可能是UDP协议,UDP 是⽆连接的,也就是UDP说通信不需要建立和断开连接。而webSocket是客户端和服务器之间的连接
为什么说TCP是字节流协议
TCP是面向字节流的协议,意味着它把数据看成一个字节流
- 【为了方便传输】TCP会把数据划分成若干个数据包,并将这些数据包逐一发送出去。数据包的大小是不固定的
- 接收方在接收数据时把所有接收到的数据包组装起来,然后提供给应用层
- 应用层协议是在应用程序之间进行通信所使用的协议
当你在浏览网页时,你的电脑【客户端】就是接收方,它会接收到服务器发送的数据;而服务器则是发送方,它会向你的电脑【客户端】发送数据。当你的客户端收到数据后,它会将数据交给浏览器,由浏览器负责渲染网页。这里的浏览器就是应用层。