TCP和UDP区别

2020/02/10

前言

传输层协议顶流,非UDP和TCP模式莫属。基于它们不同特点,他们都有很广泛的应用场景,虽然大家都骂骂咧咧的,因为现在来看它们有很大的不足(最近我才知道谷歌正在狂推QUIC,了解一下?),但是他们依然是网络中的砥柱。

image-20210320181043558

TCP

TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

  1. TCP的报头字段非常多,除了源端口和目的端口,还有保证有序的序列号、确认号,还有窗口大小等提供可靠性的部分
  2. TCP是基于连接的,需要使用TCP发送消息,必须建立连接,也就是大家常说的三次握手,后续会写一篇我对三次握手的理解。
  3. TCP还提供可靠的传输,其中有确认应答机制、超时重传机制、拥塞控制机制、流量控制机制
  4. TCP是基于字节流传输的,也就是TCP把数据切分封装成报头,可以只要连接不断可以不限制文件大小,并且它还有缓冲区可以保证收发质量

UDP

UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。

  1. UDP不需要连接,所以它的连接非常快,只需要对方ip和源端口就可以发包(前提防火墙不拦截)
  2. UDP尽最大努力交付,即不保证可靠交付,丢包了就丢了,它也不管
  3. UDP支持一对一,一对多,多对多
  4. DUP传输面向数据报,应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并,有大小限制。

TCP和UDP异同

TCP UDP面向无连接的,尽最大努力的数据传输服务,不保证数据传输的可靠性
TCP面向字节流 UDP面向报文
应用进程交给 UDP 多长的报文 UDP 就照样发送,一次发送一个报文
TCP面向连接的,可靠的数据传输服务 UDP面向无连接的,尽最大努力的数据传输服务,不保证数据传输的可靠性
TCP数据传输慢 UDP数据传输快
TCP有拥塞控制 UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有效,如直播,实时视频会议等)
TCP 只能是一对一的通信(TCP连接的端点是套接字socket) 而 UDP 支持一对一、一对多、多对一和多对多的通信
TCP 的首部开销大,有 20 个字节 UDP 的 是8 个字节
TCP提供可靠全双工的通信服务 UDP是半双工,只能单向传播并且不可靠

(转载本站文章请注明作者和出处 没有气的汽水



┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐
├ 文章已经完啦, 想要第一时间收到文章更新可以关注↓ ┤
└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘

Post Directory






下面是评论区,欢迎大家留言探讨或者指出错误哈