网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
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协议栈(其实移植困难也很大,因为系统是我们团队自己实现的嵌入式最简系统),完整的协议栈很多部分对我们的这次应用来说是多余的。
4R7?4M"j#X)k9P$t.S/W9k4NTechWeb-技术社区现在我已经编写好底层的网卡驱动。接下去应该怎么做呢?我们只想能够解开IP包,然后将数据部分进行加密,再打包发送出去。要做到这点都需要注意些什么?请赐教!谢谢

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









发表于 2008-8-20 14:47
没有跑操作系统吗?裸奔的?程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛/J-^.i1^4M3Z5O%F
,P*C+g"g#D.z3w!t6l.|
建议可以到一些开源网站找一些相应资料。TechWeb-技术社区"?(G+i#B!G9|'u#b0J4z%e

-W3L6b/h4q8d根据以前同事做这个时候的经历,你得先做好啃硬骨头,撞南墙的准备。
"{ l#A;Z;q8R9Q程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
,g"w6K ^%j:r1t即便不准备做完整的TCP/IP协议,你还是需要详细了解完整协议,IP包的传输解析不是简单的一句话能实现的。不了解详细协议,你就不知道哪些是需要实现,哪些不需要实现。

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









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

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









发表于 2008-8-20 14:47
无论如何,作这个层次的软件想不去全面了解TCP/IP协议栈的实现是不行的,等你去了解了,就会发现移植TCP/IP协议栈难度并非那么大,呵呵~
a;^*T!U/d;}2XTechWeb-技术社区建议看看lwIP,这个实现适合潜入式系统,可移植性也很好。

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









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

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









发表于 2008-8-20 14:48
你的ARP平台要和其他的PC或者一些通用的网络设备通信吗? 如果通信, 就一定要满足TCP/IP协议的标准,
;P$s2H3Z3M9`%`#L(也就是说, 协议格式, 帧格式, 数据包, 分组头等结构要一样);
3R:n0c;a N)_.u7p(B9j如果不需要, 就可以自己定义类似IP的协议, 至于封装和解封装其实和windows下的NDIS
(x5h7\1f X;K'R;l(网络设备接口规范)驱动程序一样, 就是一种包分析程序;tech.techweb.com.cn5x {7l2N1f3@%C9O!u.Y
至于网卡如何获取到数据包, 那是应该是硬件驱动程序所要做的

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









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

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









发表于 2008-8-20 14:48
TCP/IP LEAN
6[:C!o;t2@"H-Htech.techweb.com.cn    搜索了下这本书,看上去很不错,可惜各大网上书店都已经缺货。
-q(F;j2E3I1B5x    我之前已经做了部分的移植工作,移植的是瑞士科技大学的lwIP,可是由于之前没有做过类似的移植,tech.techweb.com.cn,T'x+w&L9^
所以遇到了一个棘手的问题后,搁置了,于是才想到自己写一个协议栈的想法。
;H;z-N0t5K0\程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛    现在看来,自己写一个似乎难度更大啊。于是又重新转回移植之路。tech.techweb.com.cn.|$J4X%?7M(Y$u
lwIP移植性不错,可是由于移植的系统是我们自己写的最简系统,所以难度颇大。到前天为止,系统级的移植已经基本完成,7H,R7f'|"d S7p#a7p
可是硬件级的问题暴露出来了:发送正常,可是接收不正常!研究之后发现是中断函数根本没有起作用,0u5^8J)~7t,B!c.g
于是不断测试中断程序。我用的是双实科技的ARM9试验箱,s3c2440的芯片,系统购买时赠送了一些硬件驱动,可是,*h-e a*r u K8z9d
我拿赠送的网卡驱动以及演示程序进行实验室,同样发现中断函数无法被调用。TechWeb-技术社区9B#_+O%R#_8P
    顺便说一下,我的测试方法是这样的,高手看下是否有问题:在Linux底下写了一个UDP程序,用一个简单的while循环不断地往网卡发送数据。tech.techweb.com.cn+Y m-{%d4A:b"|4d
这样我认为开发箱的网卡应该是能收到数据的,事实上,我也看到开发箱上网卡的数据接收灯闪烁了。可是按道理说,+i;w.|!R"r)[5F0b,{:p
一次闪烁就应该调用一次中断函数啊?不是吗?可是中断函数一次也没有被调用!-s7P7J4c*M#a3|%O0W2a
    一次狂怒之下,我猛按开发箱上所有能够按动的东西,以发泄,却无意中发现当我按下部分开发箱上的键盘按键时,
-S'H t&X0|'@3`2@网卡的中断函数被调用了!这是怎么回事?居然有这么诡异的事情?
0G7c-e'o-r9_*H0S    大家看下我的情况,能不能帮帮我,指点一下也非常感谢了!

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









发表于 2008-8-20 14:48
先用个网络抓包软件,看看你的主机发送的包是否已经出来了,是否正确。
)X.w7O;b;m"h+G;GTechWeb-技术社区你不停的发送UDP包,会把机器(ARM)直接搞死了,这也有可能是问题的原因。/l(N&S$\/|4N0o*T8O
再要测试,你改成查询方式。看能否收到包。

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









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

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





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

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

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