📄 105.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>123</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="54.htm">上一层</a>][<a href="106.htm">下一篇</a>]
<hr><p align="left"><small>发信人: clown (梧桐叶), 信区: UNP <br>
标 题: unp第二十四章学习体会 <br>
发信站: UNIX编程 (2001年10月30日15:48:14 星期二), 站内信件 <br>
<br>
本章介绍的是IP选项,其实早就看完了,但是测试程序一直不能 <br>
通过,另外又要忙字符设备驱动程序,以至于一拖再拖,到现在 <br>
测试程序也没有通过。:( <br>
<br>
IPv4定义了10种不同的选项: <br>
1. NOP(为后续选项填充,从而对准4字节的边界) <br>
2. EOL(选项结束后,填充为4字节的整数倍) <br>
3. LSRR(loose source and record route) <br>
4. SSRR(strict source and record route) <br>
5. Timestamp <br>
6. Record route <br>
7. Basic security <br>
8. Extended security <br>
9. Stream identifier(已过时) <br>
10. Route alert(新增) <br>
<br>
要设置IP选项,通过 <br>
setsockopt(socket_fd, IPPROTO_IP, IP_OPTIONS, buffer, buffer_length); <br>
设置,其中buffer为一个不超过44字节的缓冲区,里面保存了选项的内容,最后 <br>
一个参数是该缓冲区的大小。 <br>
<br>
要得到IP选项,通过 <br>
getsockopt(socket_fd, IPPROTO_IP, IP_OPTIONS, buffer, &buffer_length); <br>
获取,其中buffer为接收该IP选项的缓冲区,buffer_length为一个值-结果参数, <br>
输入时表示缓冲区的大小,输出时表示所得到的IP选项的大小,如果为0,则表示 <br>
没有IP选项。 <br>
<br>
由上面的介绍科知,要处理IP选项,最重要的是知道该选项的格式,然后填充一个 <br>
缓冲区,或者对接收到的缓冲区进行处理。 <br>
<br>
下面对IPv4的源路径选项,即LSRR, SSRR进行介绍。 <br>
<br>
传送格式: <br>
NOP code len ptr route1 route2 ...... route9 dest_IP <br>
长度(Byte) 1B 1B 1B 1B 4B 4B 4B 4B <br>
<br>
该缓冲区总共可以有44字节,因为route1在IP数据报离开主机时会从选项中挪出, <br>
因此实际传送的还是40字节。 <br>
其中code表示选项的类型,len表示选项的长度(不包含NOP),ptr指示选项中 <br>
第一个要处理的IP地址的偏移。 <br>
<br>
<br>
接受格式: <br>
route1 NOP code len ptr route2 route3 ...... route9 dest_IP <br>
4B 1B 1B 1B 1B 4B 4B 4B 4B <br>
<br>
但是在其他资料上,我看到的发送格式与此并不完全相同,例如TCP/IP <br>
Illustrated volume 1中,Page77就不一样,少了一个NOP,觉得此格式 <br>
应该是错误的。另外,在谢希仁的“计算机网络”version 2中,其NOP放 <br>
在ptr之后, <br>
<br>
我在程序中使用所有的这些格式进行了测试,结果服务器端总是接受不到任何数据, <br>
我使用tcpdump进行监听,发现客户端发送了到第一个route的SYN包,但是没有受到 <br>
任何回应,难道源路径选项的实现与路由器有关? <br>
<br>
<br>
<br>
-- <br>
易朽的是生命,似那转瞬即谢的花朵;然而永存的,是对未来的渴望, <br>
是那生生世世传递下来的,不朽的,生的激情。每一朵勇敢开放的花, <br>
都是一个死亡唇边的微笑。 <br>
※ 修改:·clown 於 10月30日15:55:31 修改本文·[FROM: 211.69.205.23] <br>
※ 来源:·UNIX编程 apue.dhs.org·[FROM: 211.69.205.23] <br>
发信人: scz (小四), 信区: UNP <br>
标 题: Re: unp第二十四章学习体会 <br>
发信站: UNIX编程 (2001年10月30日16:54:52 星期二), 站内信件 <br>
<br>
> 难道源路径选项的实现与路由器有关 <br>
<br>
是的,几乎所有现代路由器都允许配置是否支持这个源路由选项。 <br>
很遗憾,很多现代路由器缺省配置都不支持。 <br>
<br>
<br>
【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: 本章介绍的是IP选项,其实早就看完了,但是测试程序一直不能 <br>
: 通过,另外又要忙字符设备驱动程序,以至于一拖再拖,到现在 <br>
: 测试程序也没有通过。:( <br>
: IPv4定义了10种不同的选项: <br>
: 1. NOP(为后续选项填充,从而对准4字节的边界) <br>
: 2. EOL(选项结束后,填充为4字节的整数倍) <br>
: 3. LSRR(loose source and record route) <br>
: 4. SSRR(strict source and record route) <br>
: 5. Timestamp <br>
: 6. Record route <br>
: .................(以下省略) <br>
<br>
<br>
-- <br>
<br>
也许有一天,他再从海上蓬蓬的雨点中升起, <br>
飞向西来,再形成一道江流,再冲倒两旁的石壁, <br>
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生...... <br>
※ 来源:·UNIX编程 apue.dhs.org·[FROM: 211.96.233.1] 发信人: clown (梧桐叶), 信 <br>
区: UNP <br>
标 题: Re: unp第二十四章学习体会 <br>
发信站: UNIX编程 (2001年10月30日17:50:06 星期二), 站内信件 <br>
<br>
非常感谢,这个问题一直困扰了很久! <br>
今天晚上温习一下《Linux设备驱动程序》的最后一部分,就又可以 <br>
继续unp学习了。:) <br>
<br>
【 在 scz (小四) 的大作中提到: 】 <br>
: > 难道源路径选项的实现与路由器有关 <br>
: 是的,几乎所有现代路由器都允许配置是否支持这个源路由选项。 <br>
: 很遗憾,很多现代路由器缺省配置都不支持。 <br>
: 【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: : 本章介绍的是IP选项,其实早就看完了,但是测试程序一直不能 <br>
: : 通过,另外又要忙字符设备驱动程序,以至于一拖再拖,到现在 <br>
: : 测试程序也没有通过。:( <br>
: : IPv4定义了10种不同的选项: <br>
: : 1. NOP(为后续选项填充,从而对准4字节的边界) <br>
: : 2. EOL(选项结束后,填充为4字节的整数倍) <br>
: .................(以下省略) <br>
<br>
-- <br>
易朽的是生命,似那转瞬即谢的花朵;然而永存的,是对未来的渴望, <br>
是那生生世世传递下来的,不朽的,生的激情。每一朵勇敢开放的花, <br>
都是一个死亡唇边的微笑。 <br>
※ 来源:·UNIX编程 apue.dhs.org·[FROM: 202.114.1.61] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="54.htm">上一层</a>][<a href="106.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -