54 UDP协议

协议端格式

在这里插入图片描述
udp协议采用定长报头,前8字节的端口号是发送的一方填写的,16为udp长度表示整个报文的长度,这样就可以将数据和报头分离,报文和报文之间有明显的界限划分。校验和验证数据的正确性,如果失败,直接丢弃,不通知不保证可靠性

特点

无连接:知道对端的ip和端口号就直接传输,不需要建立连接
不可靠:没有确认机制,没有重传机制,如果因为网络故障无法发送过去,也不会给应用层返回任何错误信息
假如发送有顺序,收到的可能是乱序的,如果写满了,再收到直接丢弃,不通告
面向数据报:不能灵活的控制读写数据的次数和数量

面向数据报

应用层交给udp多长的报文,原样发送,不会拆分,也不会合并
如果发送端调用一次sendto,发送100个字节,那么接收端也必须调用一次recfrom,接收100个字节,而不能循环调用10次recvfrom,每次接收10个字节

缓冲区

没有真正意义的发送缓冲区,sendto直接交给内核,传输层直接向下网络层交付
有接收缓冲区,但是不能保证收到的和发送的顺序一致,如果满了,再到达的数据就会丢弃
udp的socket能读也能写,叫做全双工

注意事项

首部有一个16位的最大长度,能传输的数据最大长度是64k(包含udp首部)
如果传输数据超过64k,需要再应用层手动分包,多次发送,并在接收端手动拼装

udp的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

还有其他个人写的udp协议

管理

udp的报头在os内部本质就是一个结构体,里面定义了诸如端口号,长度等数据格式。填充报头就是给这些数据赋值,将需要发送的数据和报文封装在缓冲区内,就形成了报文
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在同一时间有很多客户端通信,所以需要将这些管理起来,提供一个sk_buff的结构管理这段缓冲区,开头,报文位置,结束位置等,同时也可以保存下一个缓冲区的位置,这样,就可以统一起来

在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值