UDP(User Data Protocol)
- UDP是位于传输层中的协议
- UDP是一个无连接的协议,也就意味着UDP是不可靠的
- UDP不考虑错误控制,流控制
UDP Header
UDP的头部固定只有8字节
- 源端口和目标端口都是2字节的长度
- length表示了UDP报文的长度,包括头部以及数据部分
- checksum是可选的,如果不计算的话,则在该位存放0
UDP的应用
- 当数据较小,并且不关心流控制以及错误控制时,适合使用UDP协议,例如一些简单的响应
- UDP用于一些路由更新协议例如RIP(Routing Information Protocol)
- UDP被广泛应用于实时多媒体应用,例如RTP(Real-time transport protocol)协议
- RPC(Remote Procedure Call)也是基于UDP协议
- 下面这些协议都是基于UDP协议
- NTP (Network Time Protocol)
- DNS (Domain Name Service)
- BOOTP, DHCP.
- NNP (Network News Protocol)
TCP(Transmission Control Protocol)
- TCP是位于传输层中的协议
- TCP提供了一种面向连接的、可靠的字节流服务
- TCP提供重传,流控制以及错误控制等功能
- TCP连接是全双工的,并且是点到点的,因此TCP不支持多播以及广播
TCP Header
name | length | explain |
---|---|---|
source port | 16 bits | 源端口 |
destination port | 16 bits | 目标端口 |
sequence number | 32 bits | 序列号,用来标识每个数据字节 |
acknowledgement number | 32 bits | 确认号,用来表示下一个期望收到的字节 |
data offset | 4 bits | 表示TCP头部的长度,单位为32bits,也就是4字节。data offset也就是TCP数据(除去头部)的起始位置 |
Reserved | 6 bits | 暂未使用,必须设置为0 |
URG | 1 bit | 若urgent pointer被使用,则标识为1 |
ACK | 1 bit | 若acknowledgement number有效,则标识为1 |
PSH | 1 bit | 若标识为1,则接收方在收到数据后应立即将数据提交给应用层,而不是缓存起来 |
RST | 1 bit | 若标识为1,则重置连接 |
SYN | 1 bit | 若标识为1,则表示这是一个连接请求(connect request)或者连接接受(connect accept). SYN=1,ACK=0 表示连接请求,SYN=1,ACK=1,表示连接接受 |
Window | 16 bits | 从被确认的字节算起还可以发送多少个字节,若为0,表示接收方已经达到瓶颈,发送方可以暂缓发送数据 |
checksum | 16 bits | 校验和 |
urgent pointer | 16 bits | 用来标识紧急数据在当前数据段中的位置,它是相对于当前序列号的字节偏移值 |
TCP的应用
- 当要求可靠性时,使用TCP协议
- 下列协议都是基于TCP
- SMTP
- HTTP
- FTP
TCP与UDP的区别
- TCP协议在传送数据段的时候要给段标号;UDP协议不
- TCP协议可靠;UDP协议不可靠
- TCP协议是面向连接;UDP协议采用无连接
- TCP协议负载较高,采用虚电路;UDP采用无连接
- TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
- TCP协议采用窗口技术和流控制