荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: everlove.bbs@bbs.shuoshuo.net (我是如此厌倦), 信区: Linux
标  题: unp第二十四章学习体会
发信站: 寂寞森林 (Mon Sep 23 10:56:21 2002)
转信站: SZUBBS!news2.happynet.org!news.happynet.org!LonelyWood


发信人: clown (梧桐叶), 信区: UNP
标  题: unp第二十四章学习体会
发信站: UNIX编程 (2001年10月30日15:48:14 星期二), 站内信件

本章介绍的是IP选项,其实早就看完了,但是测试程序一直不能
通过,另外又要忙字符设备驱动程序,以至于一拖再拖,到现在
测试程序也没有通过。:(

IPv4定义了10种不同的选项:
1. NOP(为后续选项填充,从而对准4字节的边界)
2. EOL(选项结束后,填充为4字节的整数倍)
3. LSRR(loose source and record route)
4. SSRR(strict source and record route)
5. Timestamp
6. Record route
7. Basic security
8. Extended security
9. Stream identifier(已过时)
10. Route alert(新增)

要设置IP选项,通过
setsockopt(socket_fd, IPPROTO_IP, IP_OPTIONS, buffer, buffer_length);
设置,其中buffer为一个不超过44字节的缓冲区,里面保存了选项的内容,最后
一个参数是该缓冲区的大小。

要得到IP选项,通过
getsockopt(socket_fd, IPPROTO_IP, IP_OPTIONS, buffer, &buffer_length);
获取,其中buffer为接收该IP选项的缓冲区,buffer_length为一个值-结果参数,
输入时表示缓冲区的大小,输出时表示所得到的IP选项的大小,如果为0,则表示
没有IP选项。

由上面的介绍科知,要处理IP选项,最重要的是知道该选项的格式,然后填充一个
缓冲区,或者对接收到的缓冲区进行处理。

下面对IPv4的源路径选项,即LSRR, SSRR进行介绍。

传送格式:
            NOP code len ptr route1 route2 ...... route9 dest_IP
长度(Byte)  1B   1B  1B  1B   4B     4B             4B     4B

该缓冲区总共可以有44字节,因为route1在IP数据报离开主机时会从选项中挪出,
因此实际传送的还是40字节。
其中code表示选项的类型,len表示选项的长度(不包含NOP),ptr指示选项中
第一个要处理的IP地址的偏移。

接受格式:
  route1  NOP code len ptr route2 route3 ...... route9 dest_IP
    4B    1B   1B  1B  1B   4B     4B             4B     4B

但是在其他资料上,我看到的发送格式与此并不完全相同,例如TCP/IP
Illustrated volume 1中,Page77就不一样,少了一个NOP,觉得此格式
应该是错误的。另外,在谢希仁的“计算机网络”version 2中,其NOP放
在ptr之后,

我在程序中使用所有的这些格式进行了测试,结果服务器端总是接受不到任何数据,
我使用tcpdump进行监听,发现客户端发送了到第一个route的SYN包,但是没有受到
任何回应,难道源路径选项的实现与路由器有关?



--
易朽的是生命,似那转瞬即谢的花朵;然而永存的,是对未来的渴望,
是那生生世世传递下来的,不朽的,生的激情。每一朵勇敢开放的花,
都是一个死亡唇边的微笑。
※ 修改:·clown 於 10月30日15:55:31 修改本文·[FROM: 211.69.205.23]
※ 来源:·UNIX编程 apue.dhs.org·[FROM: 211.69.205.23]


--
我站在夜的尽头
窗外的雨悄悄坠落





※ 来源:.寂寞森林 http://bbs.shuoshuo.net  ◆ FROM: 211.161.158.231


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店