免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1569 | 回复: 0

【用TCP/IP进行网际互联-卷二】IP软件结构 [复制链接]

论坛徽章:
0
发表于 2009-06-13 11:28 |显示全部楼层
1.IP软件的设计思想
1)统一的输入队列及统一的选路过程:IP过程对必须由它所处理的所有数据采用相同的输入队列形式,与这些数据是来自于网络还是由本机产生无关。
2)独立的IP进程:IP软件作为一个独立的自包含的进程执行。
3)本地主机接口:为避免将发往本机的情况作为特例对待,为本地传送创建了一个伪网络接口,当本地接口收到一份数据报时,它利用PROTO字段来决定由本机上的哪个协议软件模块来接收此数据报。这样,IP认为所有选择路由的过程是统一而且对称的。

2.IP软件结构和数据报流程
1)选择传入数据报的策略
ipgetp:实现循环法选择的策略
为了公平合理,避免出现‘饥饿’状态,对所有网络接口采用循环法的策略。
在ipgetp中包括一种微妙的优化思想,即当所有输入队列都为空时,ip进程在调用ipgetp时被阻塞,一旦有一个数据到达,ip进程恢复执行并检查已有数据报到达的端口。
ipproc:ip进程
通过ipgetp获取数据报
验证校验和
如果校验正确,则通过rtget计算获取路由,如果路由不存在发送ICMP“目的不可达”报文
生成ip报文
(ipdbc处理定向广播)

2)定向广播定向广播包括了目的网络的网关和主机,如果一个网关接收到的数据报的目的地址是直接与这个网关相连的某个网络的定向广播地址,那么这个网关必须做两件事:
a)为本机的协议软件复制一份数据报
b)在指定的网络上广播该数据报

3)IP首部的字节顺序
在发送一个数据前,主机必须将所有的整型值从本机字节顺序转换成标准的网络字节顺序。而当接收到一个数据报后要做相反的转换。
数据的顺序是由cpu决定的,与操作系统无关。
如 Intel x86结构下,short型数0x1234表示为34 12,int型数0x12345678表示为78 56 34 12   
如IBM power PC结构下,short型数0x1234表示为12 34,int型数0x12345678表示为12 34 56 78由于这个原因不同的机器之间无法通信,所以要转换成一种约定的数序,也就是网络字节顺序,其实就是如同power pc那样的顺序。

4)向IP发送数据报
发送本地的数据报
ipsend:填写ip首部并将数据报放入本机接口队列中
发送传入的数据报
ip_in:当一个经由网络发送来的数据报到达时,网络接口层设备驱动通过这个函数将其放置在适当的IP队列中。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/74413/showart_1963467.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP