推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

Linux下对UDP包的重组和转发实现说明

更新时间:2019-10-24 22:32:53 大小:130K 上传用户:xuzhen1查看TA发布的资源 标签:linuxudp 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

1整体描述

本程序主要实现在数据链路层抓发往本机的数据包,再对其做分析和处理,最后进行转发。分析过程主要是对抓来的包进行判定是否是一个完整的包、是否有分片。如果完整就转发;有分片就重组,组完之后再转发。

为了便于测试,本程序只分析处理抓到某一源IP发来的UDP数据,并使用UDF协议进行转发。

实现的难点在于重组过程和处理的效率问题。

2IP分片的原因

链路层具有最大传输单元MTL这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用netstat-i命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

3UDP协议包在整个网络传输过程中分片与重组的原理


部分文件列表

文件名 大小
Linux下对UDP包的重组和转发实现说明.pdf 130K

部分页面预览

(完整内容请下载后查看)
Linux 下对 UDP包的重组和转发实现说明  
1 整体描述  
本程序主要实现在数据链路层抓发往本机的数据包,再对其做分析和处理,  
最后进行转发析过程主要是对抓来的包进行判定是否是一个完整的包、 是否  
有分片。如果完整就转发;有分片就重组,组完之后再转发。  
为了便于测试,本程序只分析处理抓到某一源  
UDP协议进行转发。  
IP 发来的 UDP数据,并使用  
实现的难点在于重组过程和处理的效率问题。  
2 IP 分片的原因  
链路层具有最大传输单元 MTU这个特性限制了数据帧的最大长度, 不同  
的网络类型都有一个上限值。以太网的 MTU1500,你可以用 netstat -i 命  
令查看这个值。如果 IP 层有数据包要传,而且数据包的长度超过了  
MTU,那么  
IP 层就要对数据包进行分片( fragmentation )操作,使每一片的长度都小于或  
等于 MTU。我们假设要传输一个 UDP数据包,以太网的 MTU1500 字节,一般  
IP 首部为 20 字节UDP首部为 8 字节,数据的净荷( payload )部分预留是  
1500-20-8=1472 字节。如果数据部分大于 1472字节,就会出现分片现象。  
3 UDP协议包在整个网络传输过程中分片与重组的原理  
首先看一下 IP 头的三个重要部分:  
IP 标识符、标志、偏移量 3 个字段在 IP 报头中的位置如下图 1 所示:  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载