本文旨在帮助大家了解目前常用的传输层协议:UDP协议,TCP协议;并简单对比两者的特点;欢迎看官老爷留言。
UDP协议
UDP协议,全称是 User Datagram Protocol,用户数据报协议。
我们首先了解一下该协议的格式,如下图所示:
-
Source Port : 源端口,16位
-
Destination Port : 目标端口,16位
-
Length:消息体长度,16位
-
Checksum:检验为,16位
-
Data octets:一个字节一个字节的数据。Octet是8位
首先不要感到惊讶,这就是大名鼎鼎的UDP协议,它的格式就是这么简单清晰。
它的特点是:
-
协议简洁
-
快,传输过程不需要握手
-
非面向连接
-
不保证可靠传输
-
无序
-
适合广播
你可能直观的可以感觉到格式是挺简洁的,但是你说的 可靠性差,无序,适合广播又是哪里体现出来的呢?
别着急,我们在对比看看TCP协议的格式,对比一下你就会有深入的理解了。
TCP协议
TCP 协议,全称是 Transmission Control Protocol 传输控制协议。
同样的我们先了解一下报文格式:
-
Source Port : 源端口,16位
-
Destination Port : 目标端口,16位
-
Sequence Number: 序列码,32位
-
Acknowledgment Number:应答码,32位
-
Data Offset:偏移量,4位;指头的大小
-
Reserver: 保留位,6位
-
标志位,6位;URG,ACK,PSH,RST,SYN,FIN
-
Window: 窗口,16位
-
Checksum : 校验位,16位
-
Urgent Pointer: 紧急指针,16位
-
Options:选项,长度不定,但必须是整字节,所以会有Padding补齐
-
Data:数据域
看过这么复杂的结构,瞬间感觉UDP“真香呀”,不过TCP协议的强大能力也得益于其精巧的报文设计。
它具备如下这些特点:
-
面向连接,TCP建立连接的时候需要三次握手,具体了解该过程,可以移步笔者的聊聊TCP协议的三次握手和四次挥手
-
传输有序性,我们可以看到报文结构中有一对收发的序列号,TCP正式通过它来保证顺序性的。
-
流量控制,TCP协议的发送方通过接收方反馈的窗口大小可以达到流量控制的目的
-
不适广播场景,同样的因为TCP在建立连接的过程中需要三次握手,如果用于广播场景会消耗相对较多的流量,所以不适合用于广播场景
-
拥塞控制
经过这样的一对比,才发现还真是“高级呀”。
对比
- 本文链接: https://www.sunce.wang/archives/传输层协议浅析
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!