[书摘] Microsoft Windows Server 2003 TCP/IP 协议和服务技术参考 之 ARP (1)

你还能看见几颗星星 2004-10-12 12:26:30
前一段时间买了一本书,感觉非常不错,其中有很多我一直想知道但是又无处查找的资料,买书当天就想写一个书摘来和大家一起分享,给同样迷茫的朋友提供帮助,但是由于同事离职、工作重心调整等诸多因素,拖了很久到现在……

废话少说,介绍一下这本书

书名:Microsoft Windows Server 2003 TCP/IP 协议和服务技术参考
出版社:清华大学出版社
定价:68元

目录:
第1部分 网络接口层
第1章 局域网(LAN)技术
第2章 广域网技术
第3章 地址解析协议(ARP)
第4章 点对点协议(PPP)
第2部分 网络层协议
第5章 网络协议(IP)基础
第6章 IP地址分配
第7章 IP路由选择
第8章 网络控制消息协议(ICMP)
第9章 Internet组管理协议(IGMP)
第10章 Internet协议版本6(IPv6)
第3部分 传输层协议
第11章 用户数据报协议
第12章 传输控制协议基础
第13章 传输控制协议连接
第14章 传输控制协议数据流
第15章 传输控制协议的重传和超时
第四部分 应用层协议服务
第16章 动态主机配置协议服务器服务
第17章 域名系统
第18章 Windows Internet名称服务
第19章 文件和打印机共享
第20章 RADIUS和Internet验证服务
第21章 Internet信息服务和Internet协议
第22章 Internet协议的安全性
第23章 虚拟专用网

由于我对arp协议比较熟悉,所以先给大家摘录一些arp协议相关的东东。

1、关于arp缓存表项的生存期(有效时间)
在默认情况下,Windows Server 2003家族和Windows XP中,ARP缓存中的表项仅存储2分钟。如果一个ARP缓存表项在2分钟内被用到,则其期限再延长2分钟,直到最大生命期限10分钟为止。超过10分钟的最大期限后,ARP缓存表项将被移出,并且通过另外一个ARP请求——ARP回应交换来获得新的对应关系。ARP缓存表项的存放时间可以通过改变ArpCacheLife和ArpCacheMinReferencedLife的注册表值来重新设置。

ArpCacheLife
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Data Type: REG_DWORD
Valid range: 0-0xFFFFFFFF
Default value: 120
Present by default: No
ArpCacheLife设置了未被使用的ARP缓存表项可以被保持的时间。如果注册表中没有ArpCacheLife项,则ArpCacheLife的默认值是120秒(2分钟)。

ArpCacheMinReferencedLife
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Data Type: REG_DWORD
Valid range: 0-0xFFFFFFFF
Default value: 600
Present by default: No
ArpCacheMinReferencedLife设置被重复使用的表项可以在ARP缓存中存放的时间。ArpCacheMinReferencedLife的默认值是600秒(10分钟)。在注册表中ArpCacheMinReferencedLife和ArpCacheLife的值的使用方法如下:

如果ArpCacheLife比ArpCacheMinReferencedLife的值大或与之相等,则被使用和未被使用的ARP缓存表项可存储的时间都是ArpCacheLife。
如果ArpCacheLife比ArpCacheMinReferencedLife的值小,则未被使用的ARP缓存表项在ArpCacheLife秒的时间后就过期了,被使用的表项的生存期为ArpCacheMinReferencedLife秒。

2、无偿ARP和重复的IP地址检测
ARP可以被用来检测重复的IP地址,这是通过传送一种叫做无偿ARP的ARP请求来完成的。无偿ARP就是一个发往自己IP地址的ARP请求。在无偿ARP中,SPA(发送者协议地址)和TPA(目标协议地址)被设置成同一个IP地址。
如果节点发送一个发往自己IP地址的ARP请求,就不应收到任何一个ARP回应帧,这样节点就可以判断没有其他节点使用跟它相同的IP地址。如果节点发送一个发往自己IP地址的ARP请求,结果收到ARP回应,这样此节点就可以判断有另外一个节点使用同样的IP地址。

注册表中对ArpRetryCount的设置控制了无偿ARP的发送数量。

ArpRetryCount
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Data Type: REG_DWORD
Valid range: 0-3
Default value: 3
Present by default: No

ArpRetryCount设置了当初始化某个IP地址时,发送的无偿ARP的次数。如果发送了ArpRetryCount个无偿ARP后,都没有收到ARP回应,IP就假定此IP地址在此网络段中是唯一的。

提示:无偿ARP试图检测在同一个网络段中的IP地址重复。由于路由器并不转发ARP帧,无偿ARP并不能检测在不同网络段之间的IP地址冲突。

摘到这里,我插一句,描述一个现象以验证书上的论述:如果有台机器上的Windows正在启动,你可以在同网段中另外一台机器上sniffer到这台机器启动过程中发送的3个无偿ARP请求。



如果你对这本书上的内容感兴趣,留个言,我将继续为大家摘录精彩章节。

同时,欢迎到我的blog来讨论,相关blog地址是:
http://blog.haha567.com/blog.php?job=art&articleid=a_20041012_001904

最后,为想买这本书的朋友提供一些信息,给出当当网上这本书的介绍页面地址:
http://www.dangdang.com/product_detail/product_detail.asp?product_id=8880289
...全文
1132 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
horisly 2005-06-25
  • 打赏
  • 举报
回复
不错,我也在看这本书,昨天刚看完Arp这章,写的的确很好.
sxxny 2005-04-21
  • 打赏
  • 举报
回复
欢迎加盟C/C++/VC高级技术论坛:
http://www.3d-vr.com/LunTan/bmb/forums.php?forumid=4
(高手请进, 菜鸟随意, 初学者勿入)
gdy119 2004-11-19
  • 打赏
  • 举报
回复
Mark!
celerityok 2004-11-19
  • 打赏
  • 举报
回复
mark!
hikuers 2004-11-19
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
to keios(C->C++->java->C 循环中)

无偿ARP的确应该有一个超时时间问题,不过书上并没有提到这个问题。

我会一直关注这个问题答案的。
keios 2004-11-09
  • 打赏
  • 举报
回复
8错!
问一句,无偿ARP是否还有一个超时时间的问题?
PiggyXP 2004-11-09
  • 打赏
  • 举报
回复
帮顶一下,让更多的兄弟们看到这个好贴:)
20040216 2004-11-08
  • 打赏
  • 举报
回复
学习
oyljerry 2004-10-17
  • 打赏
  • 举报
回复
学习
whwjn 2004-10-17
  • 打赏
  • 举报
回复
up
celerityok 2004-10-17
  • 打赏
  • 举报
回复
mark!
yangming0423 2004-10-16
  • 打赏
  • 举报
回复
楼主真是个好人喔,关注!!!!!!!!!!!!!!!!!!!
dahai_2002 2004-10-15
  • 打赏
  • 举报
回复
还有呢? 接着讲啊.
Hotthing 2004-10-15
  • 打赏
  • 举报
回复
收藏,谢谢
loucai 2004-10-15
  • 打赏
  • 举报
回复
学习,谢谢。
mybname65319203 2004-10-15
  • 打赏
  • 举报
回复
收藏,谢谢
huaboy408 2004-10-15
  • 打赏
  • 举报
回复
MARK
shakira008 2004-10-15
  • 打赏
  • 举报
回复
接着讲啊
PiggyXP 2004-10-14
  • 打赏
  • 举报
回复
看得正过瘾呢,竟然就没了...-_-b

置顶先,然后收藏^_^
加载更多回复(6)
编辑推荐 “我在全国各地教授Cisc0联网课程.每本新的有名的数据通信的书我都听说了,因为我的学生们拿它们作为课程的参考书。Stevens的《TCP/IP详解卷1 协议》的到来如同一枚炸弹的爆炸……学生们被这本书所倾倒。我刚读完《TCP/IP详解卷2:实现》。如果说卷1像一枚炸弹,则卷2就是一枚重磅炸弹!” “在读完Stevens的《TCP/IP详解卷1协议》后,我认为很难再有另一本如此有用的书了,但卷2就是这样一本书。有些人可能会问,如果你不是一个专职的网络程序员,如何让这本书适合于你。因为在我最初使用UNIX的日子里,回答‘这到底是如何工作的?’的标准答案是‘看源代 码’。用这本书,你不仅能看源代码,还有一个最清晰的解释:它们是如何互相配合起来的。” 《TCP/IP详解》系列覆盖了TCP/IP的许多方面.提供了一个高效直观的方法来学习联网协议族。 《TCP/IP详解卷2:实现》详尽地说明了TCP/IP协议是如何实现的。目前还没有更多的 书——此卷是唯一一本书,本书全面讲解了来源于44BSD—Lite版本的事实上的标准实现.这个 实现是运行在世界上成千上万个系统上的TCP/IP实现的基础。 500个示例总共15000行代码都是真正正在使用的代码,《TCP/IP详解卷2:实现》使用一种举例说明的方法来帮助你精通TCP/IP的实现。你会掌握以下问题:插口API和协议族之间的关系,一个主机实现和一个路由器实现之间的区别等。另外本书覆盖了4.4BSD—Lite版本的最新特性,包括多播,长肥管道支持、窗口缩放、时间戳选项、防止序列号环绕及很多其他主题。 本书覆盖范围广,它基于一个当前正使用的标准,并且有详尽的示例,因此它是任何使用TCP/IP的人员一个不可缺少的资源。 内容简介 本书完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点。本书适用于希望理解TCP/IP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 作者简介 Gary R.Wright 研究TCP/IP多年。他是Connix公司的董事长,这个公司的基地在康涅狄格州,它提供Internet接入和咨询服务。 W.Richard Stevens(1951-1999)是一位非常受人尊敬的专家,除了《TCP/IP详解》三卷本外,他还有其他两部最为畅销的作品;《UNIX环境高级编程》和《UNIX网络编程》(两卷本)。 目录 译者序 前言 第1章 概述  1.1 引言 1.2 源代码表示  1.2.1 将拥塞窗口设置为  1.2.2 印刷约定 1.3 历史 1.4 应用编程接口 1.5 程序示例 1.6 系统调用和库函数 1.7 网络实现概述 1.8 描述符 1.9 mbuf与输出处理 1.9.1 包含插口地址结构的mbuf 1.9.2 包含数据的mbuf 1.9.3 添力口IP和UDP首部 1.9.4 IP输出 1.9.5 以太网输出 1.9.6 UDP输出小结 1.10 输入处理 1.10.1 以太网输入 1.10.2 IP输入 1.10.3 UDP输入 1.10.4 进程输入 1.11 网络实现概述(续) 1.12 中断级别与并发 1.13 源代码组织 1.14 测试网络 1.15 小结 第2章 mbuf:存储器缓存 2.1 引言 2.2 代码介绍 2.2.1 全局变量  2.2.2 统计  2.2.3 内核统计  2.3 mbuf的定义  2.4 mbuf结构  2.5 简单的mbuf宏和函数  2.5.1 m_get函数  2.5.2 MGET宏  2.5.3 m_retry函数  2.5.4 mbuf锁  2.6 m_devget和m_pullup函数  2.6.1 m_devget函数  2.6.2 mtod和dtom宏  2.6.3 m_pullup函数和连续的协议首部  2.6.4 m_pullup和IP的分片与重组  2.6.5 TCP重组避免调用m_pul lup  2.6.6 m_pullup使用总结  2.7 mbuf宏和函数的小结  2.8 Net/3联网数据结构小结  2.9 m_copy和簇引用计数  2.10 其他选择  2.11 小结 第3章 接口层 3.1 引言 3.2 代码介绍  3.2.1 全局变量   3.2.2 SNMP变量 3.3 ifnet结构 3.4 ifaddr结构 3.5 sockaddr结构 3.6 ifnet与ifaddr的专用化 3.7 网络初始化概述 3.8 以太网初始化 3.9 SLIP初始化 3.10 环回初始化  …… 第4章 接口:以太网 第5章 接口:SLIP和环回 第6章 IP编址 第7章 域和协议 第8章 IP:网际协议 第9章 IP选项处理 第10章 IP的分片与重装 第11章 ICMP:Internet控制报文协议 第12章 IP多播 第13章 ICMP:Internet组管理协议 第14章 IP多播选路 第15章 插口层 第16章 插口I/O 第17章 插口选项 第18章 Radix树路由表 第19章 选路请求和选路消息 第20章 选路插口 书摘插图 第1章 概述  1.1 引言   本章介绍伯克利(Berkeley)联网程序代码。开始我们先看一段源代码并介绍一些通篇要用的印刷约定。对各种不同代码版本的简单历史回顾让我们可以看到本书中的源代码处于什么位置。接下来介绍了两种主要的编程接口,它们在Unix与非Unix系统中用于编写TCP/IP协议。   然后我们介绍一个简单的用户程序,它发送一个UDP数据报给一个位于另一主机上的日期,时间服务器,服务器返回一个UDP数据报,其中包含服务器上日期和时间的ASCIl码字符串。这个进程发送的数据报经过所有的协议栈到达设备驱动器,来自服务器的应答从下向上经过所有协议栈到达这个进程。通过这个例子的这些细节介绍了很多核心数据结构和概念,这些数据结构和概念在后面的章节中还要详细说明。 本章的最后介绍了在本书中各源代码的组织,并显示了联网代码在整个组织中的位置。  1.2 源代码表示   1.2.1 将拥塞窗口设置为1   这是文件tcp—subr.c中的函数tcp—quench。这些源文件名引用4.4BSD-Lite发布的文件。4.4BSD在1.13节中讨论。每个非空白行都有编号。正文所描述的代码的起始和结束位置的行号记于行开始处,如本段所示。有时在段前有一个简短的描述性题头,对所描述的代码提供一个概述。   这些源代码同4.4BSD—Lite发行版一样,偶尔也包含一些错误,在遇到时我们会提出来并加以讨论,偶尔还包括一些原作者的编者评论。这些代码已通过了GNU缩进程序的运行,使它们从版面上看起来具有一致性。制表符的位置被设置成4个栏的界线使得这些行在一个页面中显示得很合适。在定义常量时,有些#ifdef语句和它们的对应语句#endif被删去(如:GATEWAY和MROUTING,因为我们假设系统被作为一个路由器或多播路由器)。   ……
第1章概述 1.1引言 1.2源代码表示 1.2.1将拥塞窗口设置为 1.2.2印刷约定 1.3历史 1.4应用编程接口 1.5程序示例 1.6系统调用和库函数 1.7网络实现概述 1.8描述符 1.9mbuf与输出处理 1.9.1包含插口地址结构的mbuf 1.9.2包含数据的mbuf 1.9.3添力口IP和UDP首部 1.9.4IP输出 1.9.5以太网输出 1.9.6UDP输出小结 1.10输入处理 1.10.1以太网输入 1.10.2IP输入 1.10.3UDP输入 1.10.4进程输入 1.11网络实现概述(续) 1.12中断级别与并发 1.13源代码组织 1.14测试网络 1.15小结 第2章mbuf:存储器缓存 2.1引言 2.2代码介绍 2.2.1全局变量 2.2.2统计 2.2.3内核统计 2.3mbuf的定义 2.4mbuf结构 2.5简单的mbuf宏和函数 2.5.1m_get函数 2.5.2MGET宏 2.5.3m_retry函数 2.5.4mbuf锁 2.6m_devget和m_pullup函数 2.6.1m_devget函数 2.6.2mtod和dtom宏 2.6.3m_pullup函数和连续的协议首部 2.6.4m_pullup和IP的分片与重组 2.6.5TCP重组避免调用m_pullup 2.6.6m_pullup使用总结 2.7mbuf宏和函数的小结 2.8Net/3联网数据结构小结 2.9m_copy和簇引用计数 2.10其他选择 2.11小结 第3章接口层 3.1引言 3.2代码介绍 3.2.1全局变量 3.2.2SNMP变量 3.3ifnet结构 3.4ifaddr结构 3.5sockaddr结构 3.6ifnet与ifaddr的专用化 3.7网络初始化概述 3.8以太网初始化 3.9SLIP初始化 3.10环回初始化 …… 第4章接口:以太网 第5章接口:SLIP和环回 第6章IP编址 第7章域和协议 第8章IP:网际协议 第9章IP选项处理 第10章IP的分片与重装 第11章ICMP:Internet控制报文协议 第12章IP多播 第13章ICMP:Internet组管理协议 第14章IP多播选路 第15章插口层 第16章插口I/O 第17章插口选项 第18章Radix树路由表 第19章选路请求和选路消息 第20章选路插口书摘插图第1章概述

18,358

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧