共计 1070 个字符,预计需要花费 3 分钟才能阅读完成。
申明 :此文章仅是作者自学整顿的内容, 并非原创,因思否无奈设置转载多篇文章只能抉择原创。参考文章见文章开端,文章援用模式不谨严,敬请见谅。
1. TCP/IP 协定族
首先,TCP 和 UDP 同属于 TCP/IP 协定族,这个协定族内还包含其余诸如 HTTP, SMTP, FTP, IP, ICMP, IPX 等等协定。
作者之前整顿的另一篇文章《计算机网络分层构造演绎》中有提到过 TCP/IP 四层构造参考模型。这个模型也能够视为上述协定的总称,协定分成了四层。其中传输层就蕴含了两个重要的协定,TCP 和 UDP。
2. TCP 和 UDP 的区别
UDP
全称 User Data Protocal (用户数据报协定),是一种无连贯的协定。有不提供数据包分组、组装和重排序的特点。所以,无奈得悉 UDP 发送的包是否残缺达到。
面向无连贯
不须要像 TCP 一样进行三次握手,指搬运数据,不对数据做任何解决。
可单播、多播、播送
能够一对一、多对一、多对多
面向报文
对应用层 (这里指的是四层模型的应用层) 下放的数据报文,只增加首部就交给 IP 层,不做其余解决
不牢靠
不须要建设连贯;不关怀接管方是否收到;不解决数据,想发什么就发什么;不备份;不做拥塞管制,不管制传输速率
头部开销小
只有 8 个字节(1 字节 8 位),比 TCP 头部至多 20+ 字节开销小很多,见下图👇
TCP
全称 Transfer Control Protocal (传输控制协议),是面向连贯的、牢靠的、面向字节流的传输层通信协议。
依据 RFC 793 的『连贯』定义,用于保障传输牢靠和流量管制保护的状态信息,这些信息的组合,包含序列号、Socket、窗口大小,被称为连贯。因而,TCP 连贯即为满足上述定义的,包含用于确定起源和出处的 Socket(IP 和 port)、确定排序的序列号和确定流量管制的窗口大小等状态信息组成的连贯。下图👇能看出,TCP 头部的确蕴含了这些信息。
面向连贯
发送数据前必须进行的『三次握手』进行连贯确认
单播
只能进行端对端的连贯,不能实现播送
面向字节流
不保留报文边界,以字节流传输
牢靠
判断丢包、误码,依附序列号和确认号。超时重传
- 拥塞管制
- 全双工通信
小结
TCP | UDP | |
---|---|---|
是否连贯 | 连贯 | 无连贯 |
是否牢靠 | 牢靠,流量管制,拥塞管制 | 不牢靠,没有流量管制和拥塞管制 |
连贯对象数 | 单播 | 单播,多播,播送 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 8 字节 | 20-60 字节 |
应用场景 | 实时利用,视频等 | 对内容可信度要求高,文件传输等 |
参考文章
- 一文搞懂 TCP 与 UDP 的区别 – Fundebug – 博客园 (cnblogs.com)
- 硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题 (qq.com)