UDP用户数据报协议

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生UDP数据报,并组装成一份等待几头的IP数据报.应用程序必须关心IP数据报的长度,如果它超过网络的MTU,哪么就要对数据报进行分片,并且不仅可能在发送端进行分片,在数据报经过的路由器也可以进行.

UDP数据报的首部

UDP数据报的首部由四个部分组成:源端口,目的端口,长度,检验和,共占8个字节.端口号表示发送进程和接收进程,检验和字段是可选的,数据报中并不一定要有检验和,它是一个可选项,在一些协议中它是默认的选项.

IP分片

物理网络层一般要限制每次发送数据桢的长度,任何时候IP层收到一份数据报,它都要判断向本地的哪一个接口发送数据,并查询应该接口以获得其MTU.IP把MTU与数据报长度进行比较,如果需要则进行分片,分片可以发生在发送端主机上,也可以发生在中间路由器上.IP分片后,只有到达目的主机后才进行组装.IP首部中的标识字段用来区分同一数据报的不同片,在分片时该标识字段被复制到每一片中,同时在标志字段中存在一个不可分片位,应该位置1表明不可以进行分片子,否则可以进行分片.标志字段中还有一个表示更多的片的数据位,应该位置1表示后面分片,只有最后一片该位为0.运输层的首部只存放在第一片中,其它片中只含有IP数据报的首部.如果设置了标志字段不分片标志位,哪么在运输过程中如果网络的MTU小于源端发送的数据报,哪么路由器就会返回一个ICMP不可达差错报文.

用Traceroute程序确定路径MTU

发送分组,设置"不分片"标志位.发送第一个分组的长度正好和发送端口MTU相等.每次收到ICMP不能分片差错时,就减少分组的长度.如果路由器发送的ICMP差错报文是新格式(报文中包含通过网络路径的最小MTU),哪么就按该MTU来发送,否则就用下一个最小的MTU值来发送.

最大数据报长度

理论上,UDP数据报长度是65535,但在实际中却受到很大的限制.原因:一是应用程序可能受到其程序接口的限制;二是其受制于TCP/IP内核的实现.路径信息协议总是发送每份数据报小于512字节的数据.

UDP服务器设计

1.客户IP地址及端口号:当一个应用程序接收到一份数据报时,操作系统告诉它是谁发送了这份数据报,也就是IP地址和端口号.

2.目的IP地址:应用程序要知道数据报是发给谁的,也就是要知道目的IP地址和端口号. 

3.UDP输入队列:通常程序所使用的UDP端口都与一个有限大小的输入队列相联系.这意味着差不多同时到达的客户请求将在UDP队列排队等候,接收到的数据报以其接收顺序发送给应用程序,这是一种先进先出队列.当输入队列缓冲区满的时候也会产生溢出导致内核中UDP模块丢弃数据报. 

4.限制本地IP地址:当服务器创建端点时,它可以把其中一个主机本地IP地址包括广播地址指定为端点的本地IP地址,也就是服务器使用一个接收端点时,要为其指定本地IP地址.只有当目的IP地址与指定的本地IP地址相匹配时,进入的数据报才能被送到这个端点.有可能是同一个端点上启动不同的服务器,但是每个服务器必须有不同的本地IP地址.

5.限制远端IP地址:如果远端IP地址和端口号为"*.*",意思是该端点接收来自任何IP地址和任何端口号的数据报,大多数系统允许对远端地址进行限制,也就是端点将接收特定IP地址和端口号的UDP数据报.

每个端口有多个接收者

尽管没有指明,但是大多数系统在某一时刻只允许一个程序端点与某个本地IP地址及端口号相关联.但是在一个支持多播的系统上,多个端点可以使用同一个IP地址和端口号.

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值