3.用户数据报(UDP):进程到进程的通信

UDP首部(8个字节的固定首部):

  • 源端口号:2个字节。如果是源主机是客户端,那么大多数情况下,该端口为短暂端口号,它由该主机上的UDP软件进行选择。如果源主机为服务器端,那么大多数情况下,该端口为熟知端口号。
  • 目的端口号:2个字节。如果是源主机是客户端,那么大多数情况下,该端口为短暂端口号,它由该主机上的UDP软件进行选择。如果源主机为服务器端,那么大多数情况下,该端口为熟知端口号。
  • 长度:2个字节。定义了UDP的整个长度,首部加上数据。数据的长度可以从0到65 507(65 535-8-20)字节(20字节的IP首部和8字节的UDP首部)。因为IP软件将UDP数据报交付给UDP层时已经去掉IP首部,所以这个变量是必须的。虽然IP首部里有整个IP数据报的长度和IP数据报的首部长度,根据这两个可以计算出UDP数据报的长度。
  • 检验和:2个字节。检验整个UDP(首部+数据)出现的差错。

  1. **无连接服务:**UDP每发出的一个用户数据报都是独立的,它们不进行编号。每个用户数据报可以走不同的路径。使用UDP的进程不能向UDP发送数据流。UDP不会将数据流分为许多相关联的用户数据报。数据必须足够小,使其能装入到用户数据报中,只有那些发送短报文的进程才使用UDP。
  2. 差错控制和流控制:检验和
  3. 封装和拆装:
    (1)封装:进程将数据,数据的长度和插口地址传给UDP—>UDP给数据加上UDP首部,然后将UDP数据报和插口地址传给IP—>IP给UDP数据报加上IP首部,IP首部协议字段设为17,将IP数据报传给链路层,链路层给IP数据报加上帧首部和尾部,成为帧。
    (2)拆装:链路层对每一帧进行检验,如果没错,去掉首部和尾部,将IP数据报传给IP层—>IP软件对其进行检查,如果没错,去掉IP首部,将UDP数据报传给UDP—>UDP使用检验和对其进行检验,如果没错,去掉UDP首部,将数据和发送端端口传给接收进程。
  4. 队列:进程申请端口号成功时,该端口会创建入队列和出队列与该进程绑定,有时只创建入队列。用户数据报到时,如果该数据报的目的端口号没有入队列或入队列发生溢出,则通过ICMP协议向服务器发送不可达报文。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值