TCP与UDP协议

UDP(User Data Protocol)

  1. UDP是位于传输层中的协议
  2. UDP是一个无连接的协议,也就意味着UDP是不可靠的
  3. UDP不考虑错误控制,流控制

UDP Header

UDP的头部固定只有8字节

  1. 源端口和目标端口都是2字节的长度
  2. length表示了UDP报文的长度,包括头部以及数据部分
  3. 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)

  1. TCP是位于传输层中的协议
  2. TCP提供了一种面向连接的、可靠的字节流服务
  3. TCP提供重传,流控制以及错误控制等功能
  4. 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的区别

  1. TCP协议在传送数据段的时候要给段标号;UDP协议不
  2. TCP协议可靠;UDP协议不可靠
  3. TCP协议是面向连接;UDP协议采用无连接
  4. TCP协议负载较高,采用虚电路;UDP采用无连接
  5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
  6. TCP协议采用窗口技术和流控制

参考文献

  1. Computer Network | User Datagram Protocol (UDP)
  2. TCP Protocol

Reprint please specify: wbl TCP与UDP协议

Previous
TCP三次握手与连接释放 TCP三次握手与连接释放
TCP连接为什么需要三次握手TCP是一个可靠的通信协议,所谓的可靠是指接收方收到的数据是完整的,有序的,无差错的。为了实现这个目标,TCP的通信双方需要判断自己的数据是否已经被对方接收,如果没有,那么需要重发。为了实现这个需求,TCP引入了
Next
DHCP协议原理及实现流程 DHCP协议原理及实现流程
简介DHCP(Dynamic Host Configuration Protocol) 动态主机配置协议,简单来说,DHCP主要功能是为自动为每一个Host分配IP协议。DHCP协议是在DHCP客户端和DHCP服务端之间运行的,客户端请求I