网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
TechWeb-技术社区


标题: [讨论] 编写简单的IP协议栈
OKBEN
TW金牌会员
Rank: 6Rank: 6



UID 138713
精华 37
积分 1469
帖子 584
阅读权限 70
注册 2008-7-29
状态 离线
发表于 2008-8-20 14:47 资料 短消息 加为好友 添加 OKBEN 为MSN好友 通过MSN和 OKBEN 交谈
编写简单的IP协议栈

最近要在ARM平台上实现一个网络IP数据包加密的程序,但是现有的系统没有网络协议栈,而我有不想移植一个完整的TCP/IP协议栈(其实移植困难也很大,因为系统是我们团队自己实现的嵌入式最简系统),完整的协议栈很多部分对我们的这次应用来说是多余的。 (P%M$_5K%t3j!e
现在我已经编写好底层的网卡驱动。接下去应该怎么做呢?我们只想能够解开IP包,然后将数据部分进行加密,再打包发送出去。要做到这点都需要注意些什么?请赐教!谢谢

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:47
没有跑操作系统吗?裸奔的?
8w$N6R0V*\
"C4m2R"S$c9p,\8V程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛建议可以到一些开源网站找一些相应资料。
5M8[.K8j5K$I-n:b:X程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
4E1Z!I8~+w+mtech.techweb.com.cn根据以前同事做这个时候的经历,你得先做好啃硬骨头,撞南墙的准备。
1B6? B0{ R:j$h9e:l-_&c,O1g*X'f1G+A#I
即便不准备做完整的TCP/IP协议,你还是需要详细了解完整协议,IP包的传输解析不是简单的一句话能实现的。不了解详细协议,你就不知道哪些是需要实现,哪些不需要实现。

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:47
做加密机的时候,是从主机获取发送的ip包,然后不解析路由什么的,只是将IP包中数据部分加密后再将IP包发送出去,IP的头部不做任何更改,这样的实现难吗?请赐教,可能我们对问题的难度估计不足。谢谢!

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:47
无论如何,作这个层次的软件想不去全面了解TCP/IP协议栈的实现是不行的,等你去了解了,就会发现移植TCP/IP协议栈难度并非那么大,呵呵~
-u6_2i1r4`%d7t7Ktech.techweb.com.cn建议看看lwIP,这个实现适合潜入式系统,可移植性也很好。

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:48
建议楼主搜索下 TCP/IP LEAN  ,这本书是针对嵌入式TCP/IP的,里面讲解很消息,也很简单,我就是照这本书自己弄了个TCP/IP协议程序

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:48
你的ARP平台要和其他的PC或者一些通用的网络设备通信吗? 如果通信, 就一定要满足TCP/IP协议的标准,
9\ j!X9d6h7e5U(C(也就是说, 协议格式, 帧格式, 数据包, 分组头等结构要一样);tech.techweb.com.cn!G-\%D,}#K
如果不需要, 就可以自己定义类似IP的协议, 至于封装和解封装其实和windows下的NDIS7f(x/y#\;h
(网络设备接口规范)驱动程序一样, 就是一种包分析程序;
1}$y1Y8a!]#p/{!?tech.techweb.com.cn至于网卡如何获取到数据包, 那是应该是硬件驱动程序所要做的

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:48
谢谢楼主 学习了 讲解很好

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:48
TCP/IP LEANTechWeb-技术社区9i5F*`(k(]6E#L
    搜索了下这本书,看上去很不错,可惜各大网上书店都已经缺货。
,D6v-N$x$C;`"L:?    我之前已经做了部分的移植工作,移植的是瑞士科技大学的lwIP,可是由于之前没有做过类似的移植,
$`6@.[!N#H3J2N所以遇到了一个棘手的问题后,搁置了,于是才想到自己写一个协议栈的想法。
;x"l9b)c!`8C5H    现在看来,自己写一个似乎难度更大啊。于是又重新转回移植之路。程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛3z;X0E l'R.X h
lwIP移植性不错,可是由于移植的系统是我们自己写的最简系统,所以难度颇大。到前天为止,系统级的移植已经基本完成,
#M,O j-b!o3}8hTechWeb-技术社区可是硬件级的问题暴露出来了:发送正常,可是接收不正常!研究之后发现是中断函数根本没有起作用,
8p3A+_ X)a7Q;q%n程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛于是不断测试中断程序。我用的是双实科技的ARM9试验箱,s3c2440的芯片,系统购买时赠送了一些硬件驱动,可是,TechWeb-技术社区#E5\:q(D'^9p1{
我拿赠送的网卡驱动以及演示程序进行实验室,同样发现中断函数无法被调用。"J.v#J#E(I;F(g
    顺便说一下,我的测试方法是这样的,高手看下是否有问题:在Linux底下写了一个UDP程序,用一个简单的while循环不断地往网卡发送数据。tech.techweb.com.cn-M N8F0u'm2Y"w)[8f/],x&n
这样我认为开发箱的网卡应该是能收到数据的,事实上,我也看到开发箱上网卡的数据接收灯闪烁了。可是按道理说,
7C"p1].c9q-p6G0J2i4k1D程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛一次闪烁就应该调用一次中断函数啊?不是吗?可是中断函数一次也没有被调用!程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛%O'U-P2A,I y"Q)B
    一次狂怒之下,我猛按开发箱上所有能够按动的东西,以发泄,却无意中发现当我按下部分开发箱上的键盘按键时,
3q%t;@&z*^)d1c'} y"P3{网卡的中断函数被调用了!这是怎么回事?居然有这么诡异的事情?程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛'X,l7p'd9e/Z9]"]$Y&s,}
    大家看下我的情况,能不能帮帮我,指点一下也非常感谢了!

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:48
先用个网络抓包软件,看看你的主机发送的包是否已经出来了,是否正确。
;I1i#u!k(~'L程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛你不停的发送UDP包,会把机器(ARM)直接搞死了,这也有可能是问题的原因。tech.techweb.com.cn#W6}8w'}7?$}6L4b I
再要测试,你改成查询方式。看能否收到包。

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 14:48
只是加密转发包么。不通信的话用不着完整的TCP/IP协议。做好网卡驱动的话就好多了,我做过RTL8019的驱动,在网上捕获数据包。我想应该跟这个差不多,需要了解一些协议的格式。从数据链路层网上是IP协议、ARP、RARP,再往上是TCP、UDP、ICMP、IGMP协议。按照格式解包就能得到要传的数据了,加密之后,一些协议的字段可能会改变,比如校验和、长度,所以还得修改包头。

引用 回复 顶部
查看积分策略说明快速回复主题
选项 标题 Smilies
禁用 URL 识别
禁用 Smilies
禁用 Discuz!代码
使用匿名发帖
使用个人签名
接收新回复邮件通知
内容





当前时区 GMT+8, 现在时间是 2008-11-23 05:28
京ICP证060517号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2008 Comsenz Inc.
Processed in 0.025806 second(s), 7 queries

清除 Cookies - 联系我们 - TechWeb.com.cn - Archiver - WAP