unix 网络编程--UDP

本文详细介绍了UDP(User Datagram Protocol)协议的工作原理及其特点。UDP是一种无连接的传输层协议,不保证数据可靠传输,适用于实时应用。文章还解释了UDP数据包如何被封装成IP数据包并发送,以及UDP在应用层和服务层之间的传输过程。

UDP : User Datagram Protocol

程序发送数据给 UDP socket,数据先被封装成 UDP数据包,然后又被封装成IP数据包,然后被发送到目标方。数据是否被正确传输无任何保证(是否到达目标方,是否按正确顺序到达,是否目标方只收到一份数据)。

每个UDP数据包都有长度,这个长度包含在数据包中发送给目标方。

UDP提供无连接的服务,UDP的client和serve不用保持一个长时间的连接。一个UDP client可以建立一个socket发一个数据包到一个server,然后马上可以用同一个socket发数据给另一个server。同样一个UDP server可以用同一个socket接收多个数据包,每一个都来自不同的client。

Output

application----------------------------------------------->UDP--------------------------------------------------->IP--------------------------------------------->datalink

application buffer( any size )-------------------->UDP datagram------------------------------>MTU-sized IPv4/IPv6 packets-------->

UDP没有send buffer,通过SO_SNDBUF option 可以设置UDP可写到socket的数据包的最大尺寸。如要数据大于这个限制,EMSGSIZE返回。

TCP按照规将send buffer的数据发送出去。peer TCP必须确认数据,并且在没有收到确认前必须存在数据的一个copy。

UDP发送前加上8字节的头,然后发送给IP。IP加上IP头,查找路由表,发送数据到datalink。每个datalink都有一个传输队列,如果己满,一个错误产生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值