一.分层
1.链路层
有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
2. 网络层
有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在T C P / I P协议族中,网络层协议包括I P协议(网际协议),I C M P协议(I n t e r n e t互联网控制报文协议),以及I G M P协议(I n t e r n e t组管理协议)。
3. 运输层
主要为两台主机上的应用程序提供端到端的通信。在T C P / I P协议族中,有两个互不相同的传输协议: T C P(传输控制协议)和U D P(用户数据报协议)。
T C P为两台主机提供高可靠性的数据通信。U D P则为应用层提供一种非常简单的服务它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。
4.应用层
负责处理特定的应用程序细节。应用层关心的是应用程序的细节,而不是数据在网络中的传输活动。通用的应用程序如:
• Telnet:远程登录。
• FTP:文件传输协议。
• SMTP:简单邮件传送协议。
• SNMP:简单网络管理协议。
二.TCP/IP协议族的四个层次图
三.各层的主要协议说明
1.TCP协议
T C P和U D P是两种最为著名的运输层协议,二者都使用I P作为网络层协议。虽然T C P使用不可靠的I P服务,但它却提供一种可靠的运输层服务。
2.UDP协议
U D P为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息
单元,U D P是不可靠的,它不能保证数据报能安全无误地到达最终目的。
3.IP
3.IP协议
I P是网络层上的主要协议,同时被T C P和U D P使用。T C P和U D P的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。
4.ICMP协议
I C M P是I P协议的附属协议。I P层用它来与其他主机或路由器交换错误报文和其他重要信息。P i n g和Tr a c e r o u t e都使用了I C M P。
5.IGMP协议
I G M P是I n t e r n e t组管理协议。它用来把一个U D P数据报多播到多个主机。
6.ARP和RARP协议
A R P(地址解析协议)和R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换I P层和网络接口层使用的地址。
四.互联网的地址
1.五类互联网地址图示
2. IP地址分类
有3类IP地址,分别为:
• 单播地址:目标是单个主机;
• 广播地址:目的端为给定网络上的所有主机;
• 多播地址:目的端为同一组内的所有主机。
五.域名系统
在T C P / I P领域中,域名系统( D N S)是一个分布的数据库,由它来提供I P地址和
主机名之间的映射信息。
域名系统( D N S)是一个分布的数据库,由它来提供I P地址和主机名之间的映射信息。大多数使用主机名作为参数的应用程序也可以把I P地址作为参数。、当我们用Te l n e t进行远程登录时,既可以指定一个主机名,也可以指定一个I P地址。
六.封装
当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作
一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部
信息)。T C P传给I P的数据单元称作T C P报文段或简称为T C P段(T C Ps e g m e n t)。I P传给网络接口层的数据单元称作I P数据报(IP datagram)。通过以太网传输的比特流称作帧(Fr a m e )。
以太网数据帧的物理特性是其长度必须在4 6~1 5 0 0字节之间。
I P和网络接口层之间传送的数据单元应该是分组( p a c k e t)。分组既可以是一个I P数据报,也可以是I P数据报的一个片(f r a g m e n t)。
由于T C P、U D P、I C M P和I G M P都要向I P传送数据,因此I P必须在生成的I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为8 b i t的数值,称作协议域。1表示为I C M P协议, 2表示为I G M P协议, 6表示为T C P协议, 1 7表示为U D P协议。
七.分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各
层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的
上层协议。这个过程称作分用( D e m u l t i p l e x i n g)。
八.客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服
务器为客户提供一些特定的服务。
可以将这种服务分为两种类型:重复型或并发型。
重复型的交互方式如下:
等待一个客户请求的到来-〉处理客户请求-〉发送响应给发送请求的客户-〉进入第一步
并发型的交互方式如下:
C1. 等待一个客户请求的到来。
C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务
或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器
对客户的全部请求进行处理。处理结束后,终止这个新服务器。
C3. 返回C 1步。
并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
九. 端口号
T C P和U D P采用16 bit的端口号来识别应用程序。
1. 知名端口号
服务器一般都是通过知名端口号来识别的。例如,对于每个T C P / I P实现来说, F T P服务器的T C P端口号都是2 1,每个Te l n e t服务器的T C P端口号都是2 3,每个T F T P (简单文件传送协议)服务器的U D P端口号都是6 9。任何T C P / I P实现所提供的服务都用知名的1~1 0 2 3之间的端口号。这些知名端口号由I n t e r n e t号分配机构( Internet Assigned Numbers Authority, IANA)来管理。
到1 9 9 2年为止,知名端口号介于1~2 5 5之间。2 5 6~1 0 2 3之间的端口号通常都是由U n i x系统占用,以提供一些特定的U n i x服务。
2. 客户端口号
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以
了。客户端口号又称作临时端口号(即存在时间很短暂)。
大多数T C P / I P实现给临时端口分配1 0 2 4~5 0 0 0之间的端口号。大于5 0 0 0的端口号是为其他服务器预留的( I n t e r n e t上并不常用的服务)。
十.标准化过程
负责Internet技术的四个小组如下:
1. Internet协会(I S O C,Internet Society)
它是一个推动、支持和促进I n t e r n e t不断增长和发展的专业组织,它把I n t e r n e t作为全球研究通信的基础设施。
2. Internet体系结构委员会(I A B,Internet Architecture Board)
它是一个技术监督和协调的机构。它由国际上来自不同专业的1 5个志愿者组成,其职能是负责I n t e r n e t标准的最后编辑和技术审核。I A B隶属于I S O C。
3. Internet工程专门小组(I E T F,Internet Engineering Task Force)
它是一个面向近期标准的组织,它分为9个领域(应用、寻径和寻址、安全等等)。I E T F开发成为I n t e r n e t标准的规范。为帮助IETF主席,又成立了Internet工程指导小组(IESG, Internet Engineering Steering Group)。
4. Internet研究专门小组(IR I F,Internet Research Task Force)
主要对长远的项目进行研究。
I RT F和I E T F都隶属于I A B。
十一. RFC
所有关于I n t e r n e t的正式标准都以R F C(Request for Comment)文档出版。下面是一些重要的R F C文档:
1. 赋值R F C(Assigned Numbers RFC)
列出了所有I n t e r n e t协议中使用的数字和常数。
2. I n t e r n e t正式协议标准
目前是RFC 1600[Postel 1994]。这个R F C描述了各种I n t e r n e t协议的标准化现状。每种协议都处于下面几种标准化状态之一:标准、草案标准、提议标准、实验标准、信息标准和历史标准。另外,对每种协议都有一个要求的层次、必需的、建议的、可选择的、限制使用的或者不推荐的。
3. 主机需求R F C,11 2 2和1123[Braden 1989a, 1989b]
RFC 11 2 2针对链路层、网络层和运输层;RFC 11 2 3针对应用层。这两个R F C对早期重要的R F C文档作了大量的纠正和解释。
4. 路由器需求R F C
目前正式版是RFC 1009[Braden and Postel 1987],它与主机需求R F C类似,但是只单独描述了路由器的需求。
十二. 标准的简单服务
大多数服务都提供的简单服务见下表:
名字 |
TCP端口号 |
UDP端口号 |
RFC |
描述 |
e c h o
|
7 |
7 |
862 |
服务器返回客户发送的所有内容 |
d i s c a r d |
9 |
9 |
863 |
服务器丢弃客户发送的所有内容 |
d a y t i m e |
13 |
13 |
867 |
服务器以可读形式返回时间和日期 |
c h a r g e n |
19 |
19 |
864 |
当客户发送一个数据报时, T C P服务器发 送一串连续的字符流,直到客户中断连接。 U D P服务器发送一个随机长度的数据报 |
t i m e |
37 |
37 |
868 |
服务器返回一个二进制形式的32 bit 数, 表示从U T C时间1 9 0 0年1月1日午夜至今的秒 数 |
如果仔细检查这些标准的简单服务以及其他标准的T C P / I P服务(如Te l n e t、F T P、
S M T P等)的端口号时,我们发现它们都是奇数。这是有历史原因的,因为这些端口号
都是从N C P端口号派生出来的(N C P,即网络控制协议,是A R PA N E T的运输层协议,
是T C P的前身)。N C P是单工的,不是全双工的,因此每个应用程序需要两个连接,需
预留一对奇数和偶数端口号。当T C P和U D P成为标准的运输层协议时,每个应用程序
只需要一个端口号,因此就使用了NCP中的奇数。
十三. 互联网
i n t e r n e t意思是用一个共同的协议族把多个网络连接在一起。而I n t e r n e t指的是世界范围内通过T C P / I P互相通信的所有主机集合(超过1 0 0万台)。I n t e r n e t是一个i n t e r n e t,但i n t e r n e t不等于I n t e r n e t。
十四. 应用编程接口
使用T C P / I P协议的应用程序通常采用两种应用编程接口( A P I):s o c k e t和T L I(运输层接口:Transport Layer Interface)。
十五. 小结
T C P / I P协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。
在T C P / I P中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务,而运输层( T C P和U D P)提供端到端的服务。
一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在I P层把网络连在一
起。
在一个互联网上,每个接口都用I P地址来标识,尽管用户习惯使用主机名而不是I P地址。
域名系统为主机名和I P地址之间提供动态的映射。端口号用来标识互相通信的应用程序服务器使用知名端口号,而客户使用临时设定的端口号。
一. 引言
1. 链路层的目的
1) 为I P模块发送和接收I P数据报;
2) 为A R P模块发送A R P请求和接收A R P应答;
3) 为R A R P发送R A R P请求和接收R A R P应答。
2. 本章学习内容
将详细讨论以太网链路层协议,两个串行接口链路层协议( S L I P和P P P),
以及大多数实现都包含的环回( l o o p b a c k)驱动程序。
二. 以太网和IEEE 802封装
1. 以太网术语解释
以太网这个术语一般是指数字设备公司( Digital Equipment Corp.)、英特尔公司( I n t e lC o r p .)和X e r o x公司在1 9 8 2年联合公布的一个标准。它是当今T C P / I P采用的主要的局域网技术。它采用一种称作C S M A / C D的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。
在T C P / I P世界中,以太网I P数据报的封装是在RFC 894[Hornig 1984]中定义的,IEEE 802网络的I P数据报封装是在RFC 1042[Postel and Reynolds 1988]中定义的。
2. 封装格式
1) IEEE 802.2/802.3封装
2) 以太网封装
以太网封装是最常见的封装格式。
三. 尾部封装
它是一个早期B S D系统在DEC VA X机上运行时的试验格式,它通过调整I P数据报中字段的次序来提高性能。在以太网数据帧中,开始的那部分是变长的字段(I P首部和T C P首部)。把它们移到尾部(在C R C之前),这样当把数据复制到内核时,就可以把数据帧中的数据部分映射到一个硬件页面,节省内存到内存的复制过程。
尾部封装已遭到反对。
四. SLIP:串行线路IP
全称:Serial Line IP。它是一种简单的帧封装方法。它是一种在串行线路上对I P数据报进行封装的简单形式,在RFC 1055[Romkey 1988]中有详细描述。S L I P适用于家庭中每台计算机几乎都有的R S - 2 3 2串行端口和高速调制解调器接入I n t e r n e t。
S L I P协议定义的帧格式如下:
1.IP数据报以一个称作E N D(0 x c 0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个E N D字符(如果有线路噪声,那么E N D字符将结束这份错误的报文)。
2.如果I P报文中某个字符为E N D,那么就要连续传输两个字节0 x d b和0 x d c来取代它。
0 x d b这个特殊字符被称作S L I P的E S C字符。
3.如果I P报文中某个字符为S L I P的E S C字符,那么就要连续传输两个字节0 x d b和0 x d d来取代它。
SLIP的缺陷如下:
1. 每一端必须知道对方的I P地址。没有办法把本端的I P地址通知给另一端。
2. 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于S L I P,
那么它不能同时使用其他协议。
3. S L I P没有在数据帧中加上检验和(类似于以太网中的C R C字段)。如果S L I P传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。
五. 压缩的SLIP
C S L I P(即压缩S L I P)在RFC 1144[Jacobson 1990a]中被详细描述。它能在C S L I P的每一端维持多达1 6个T C P连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。
六. PPP:点到点协议
点对点协议修改了S L I P协议中的所有缺陷。P P P包括以下三个部分:
1.在串行链路上封装I P数据报的方法。P P P既支持数据为8位和无奇偶检验的异步模式
(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链;
2.建立、配置及测试数据链路的链路控制协议( L C P:Link Control Protocol)。它允许通
信双方进行协商,以确定不同的选项。
3.针对不同网络层协议的网络控制协议( N C P:Network Control Protocol)体系。
PPP数据桢的格式如下图:
与S L I P类似,由于P P P经常用于低速的串行链路,因此减少每一帧的字节数可以降低应用程序的交互时延。
总的来说, P P P比S L I P具有下面这些优点:
1) PPP支持在单根串行线路上运行多种协议,不只是I P协议;
2) 每一帧都有循环冗余检验;
3) 通信双方可以进行I P地址的动态协商(使用I P网络控制协议;
4) 与C S L I P类似,对T C P和I P报文首部进行压缩;
5) 链路控制协议可以对多个数据链路选项进行设置。
七. 环回接口
大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户
程序和服务器程序通过T C P / I P进行通信。A类网络号1 2 7就是为环回接口预留的。根据惯例,大多数系统把I P地址1 2 7 . 0 . 0 . 1分配给这个接口,并命名为l o c a l h o s t。一个传给环回接口的I P数据报不能在任何网络上出现。
需要注意的几点:
1. 传给环回地址(一般是1 2 7 . 0 . 0 . 1)的任何数据均作为I P输入;
2. 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上;
3. 任何传给该主机I P地址的数据均送到环回接口。
八. 最大传输单元MTU
以太网和8 0 2 . 3对数据帧的长度都有一个限制,其最大值分别是1 5 0 0和1 4 9 2字节。链路层的这个特性称作M T U,最大传输单元。
如果I P层有一个数据报要传,而且数据的长度比链路层的M T U还大,那么I P层就需要进行分片( f r a g m e n t a t i o n),
九. 路径MTU
当在同一个网络上的两台主机互相进行通信时, 两台通信主机路径中的最小M T U。被称作路径M T U。
两台主机之间的路径M T U不一定是个常数。它取决于当时所选择的路由。而选路不一定
是对称的(从A到B的路由可能与从B到A的路由不同),因此路径M T U在两个方向上不一定是一致的。
十. 串行电路吞土量计算
关于人的有关研究表明,交互响应时间超过1 0 0~200 ms就被认为是不好的。
十一. 小结
本章讨论了I n t e r n e t协议族中的最底层协议,链路层协议。我们比较了以太网和I E E E
8 0 2 . 2 / 8 0 2 . 3的封装格式,以及S L I P和P P P的封装格式。由于S L I P和P P P经常用于低速的链路,二者都提供了压缩不常变化的公共字段的方法。这使交互性能得到提高。
大多数的实现都提供环回接口。访问这个接口可以通过特殊的环回地址,一般为1 2 7 . 0 . 0 . 1。也可以通过发送I P数据报给主机所拥有的任一I P地址。当环回数据回到上层的协议
栈中时,它已经过传输层和I P层完整的处理过程。
我们描述了很多链路都具有的一个重要特性, M T U,相关的一个概念是路径M T U。根据典型的串行线路M T U,对S L I P和C S L I P链路的传输时延进行了计算。
本章的内容只覆盖了当今 T C P / I P 所采用的部分数据链路公共技术。 T C P / I P 成功的原因之一是它几乎能在任何数据链路技术上一.引言
IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。对IP提供不可靠、无连接的数据报传送服务。
不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。I P仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, IP有一个简单的错误处理算法:丢弃该数据报,然后发送I C M P消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。
无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, IP数据报可以不按发送顺序接收。
在本章,我们将简要介绍IP首部中的各个字段,讨论IP路由选择和子网的有关内容。还要介绍两个有用的命令: ifconfig和netstat。
二.IP首部
1. IP数据报格式图
2. 首部各部分说明
1)目前的协议版本号是4,因此I P有时也称作I P v 4。
2)首部长度指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此
首部最长为6 0个字节。
3)服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TO S子字
段和1 bit未用位但必须置0。4 bit的TO S分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
3.服务类型对象推荐值
现在大多数的T C P / I P实现都不支持TO S特性,但是自4.3BSD Reno以后的新版系统都对它进行了设置。另外,新的路由协议如O S P F和I S - I S都能根据这些字段的值进行路由决策。
4.总长度
总长度字段是指整个I P数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道I P数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。尽管可以传送一个长达6 5 5 3 5字节的I P数据报,但是大多数的链路层都会对它进行分片。而且,主机也要求不能接收超过5 7 6字节的数据报。由于T C P把用户数据分成若干片,因此一般来说这个限制不会影响TCP。
TTL(time- to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。
首部检验和字段是根据I P首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。
三. IP路由选择
IP层既可以配置成路由器的功能,也可以配置成主机的功能。当今的大多数多用户系统,包括几乎所有的Unix系统,都可以配置成一个路由器。
在一般的体制中,IP可以从TCP、UDP、ICMP和IGMP接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。I P层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。
1.路由表每一项包含的信息
1)目的IP地址
它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定。
2) 下一站(或下一跳)路由器(next-hop router)的I P地址或者有直接连接的网络IP地址
下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。
3) 标志
其中一个标志指明目的I P地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口.
4)为数据报的传输指定一个网络接
2.IP路由选择主要完成的功能
IP路由选择是逐跳地(hop-by-hop)进行的。IP路由选择主要完成的功能如下:
1)搜索路由表,寻找能与目的I P地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口;
2)搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目
指定的下一站路由器或直接连接的网络接口。目的网络上的所有主机都可以通过这个表目来处置;
3)搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器;如果上面这些步骤都没有成功,那么该数据报就不能被传送。
四.子网寻址
现在所有的主机都要求支持子网编址(RFC 950 [Mogul and Postel 1985])。不是把I P地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主号。
在InterNIC获得某类I P网络号后,就由当地的系统管理员来进行分配,由他(或她)来决定是否建立子网,以及分配多少比特给子网号和主机号。
五.子网掩码
任何主机在引导时进行的部分配置是指定主机I P地址。大多数系统把I P地址存在一个磁盘文件里供引导时读用。除了I P地址以外,主机还需要知道有多少比特用于子网号及多少比特用于主机号。这是在引导过程中通过子网掩码来确定的。
下面看两个B类地址子网掩码的例子:
六.特殊情况的IP地址
1. 特殊情况的IP地址图
七.ifconfig命令
ifconfig(8)命令一般在引导时运行,以配置主机上的每个接口。ifconfig命令一般支持TCP/IP以外的其他协议族,而且有很多参数。关于这些细节可以查看系统说明书。
八.netstat命令
netstat(1)命令也提供系统上的接口信息。- i参数将打印出接口信息, - n参数则打印出I P地址,而不是主机名字。
Eg. netstat -in
这个命令打印出每个接口的MTU、输入分组数、输入错误、输出分组数、输出错误、冲
突以及当前的输出队列长度。
九.IP的未来
1. IP主要存在的问题
1)超过半数的B类地址已被分配。根据估计,它们大约在1 9 9 5年耗尽。
2)32bit的I P地址从长期的Internet增长角度来看,一般是不够用的。
3)当前的路由结构没有层次结构,属于平面型( flat )结构,每个网络都需要一个路由表目。随着网络数目的增长,一个具有多个网络的网站就必须分配多个C类地址,而不是一个B类地址,因此路由表的规模会不断增长。
2. 针对问题提出的修改建议
1)SIP,简单Internet协议。它针对当前的I P提出了一个最小幅度的修改建议,采用6 4位地址和一个不同的首部格式(首部的前4比特仍然包含协议的版本号,其值不再是4)。
2)PIP。这个建议也采用了更大的、可变长度的和有层次结构的地址,而且首部格式也不相同。
3)TUBA, 代表“ TCP and UDP with Bigger Address ”, 它基于OSI 的C L N P(Connectionless Network Protocol,无连接网络协议),一个与I P类似的O S I协议。它提供大得多的地址空间:可变长度,可达2 0个字节。由于C L N P是一个现有的协议,而S I P和P I P只是建议,因此关于C L N P的文档已经出现
十.小结
本章开始描述了I P首部的格式,并简要讨论了首部中的各个字段。我们还介绍了I P路由选择,并指出主机的路由选择可以非常简单:如果目的主机在直接相连的网络上,那么就把数据报直接传给目的主机,否则传给默认路由器。
在进行路由选择决策时,主机和路由器都使用路由表。在表中有三种类型的路由:特定主机型、特定网络型和默认路由型。路由表中的表目具有一定的优先级。在选择路由时,主机路由优先于网络路由,最后在没有其他可选路由存在时才选择默认路由。
IP路由选择是通过逐跳来实现的。数据报在各站的传输过程中目的I P地址始终不变,但是封装和目的链路层地址在每一站都可以改变。大多数的主机和许多路由器对于非本地网络的数据报都使用默认的下一站路由器。
A类和B类地址一般都要进行子网划分。用于子网号的比特数通过子网掩码来指定。我们为此举了一个实例来详细说明,即作者所在的子网,并介绍了变长子网的概念。子网的划分缩小了I n t e r n e t路由表的规模,因为许多网络经常可以通过单个表目就可以访问了。接口和网络的有关信息通过i f c o n f i g和n e t s t a t命令可以获得,包括接口的I P地址、子网掩码、广播地址以及M T U等。
在本章的最后,我们对I n t e r n e t协议族潜在的改进建议—下一代I P进行了讨论。说明:本文为《TCP/IP详解,卷1:协议》的第四章“ARP:地址解析协议”的学习笔记。
一.引言
地址解析协议:ARP、RARP图示:
当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。
ARP为IP地址到对应的硬件地址之间提供动态映射。我们之所以用动态这个词是因为这个过程是自动完成的,一般应用程序用户或系统管理员不必关心。
RARP是被那些没有磁盘驱动器的系统使用(一般是无盘工作站或X终端),它需要系统管理员进行手工设置。
二.ARP高速缓存
ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为2 0分钟,起始时间从被创建时开始算起。
我们可以用a r p(8)命令来检查ARP高速缓存。参数-a的意思是显示高速缓存中所有的内容。
三.ARP的分组格式
以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。
两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0x0806。
硬件类型字段表示硬件地址的类型。它的值为1即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为0x0800即表示IP地址。
接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。
操作字段指出四种操作类型,它们是ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)(我们在第5章讨论RARP)。这个字段必需的,因为ARP请求和ARP应答的帧类型字段值是相同的。
接下来的四个字段是发送端的硬件地址(在本例中是以太网地址)、发送端的协议地址(IP地址)、目的端的硬件地址和目的端的协议地址。
四.ARP代理
如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理(Proxy ARP)。
ARP代理也称作混合ARP(promiscuous ARP)或ARP 出租(ARP hack)。这些名字来自于ARP代理的其他用途:通过两个物理网络之间的路由器可以互相隐藏物理网络。在这种情况下,两个物理网络可以使用相同的网络号,只要把中间的路由器设置成一个ARP代理,以响应一个网络到另一个网络主机的ARP请求。
五.免费ARP
免费ARP指的是主机发送ARP寻找自己的IP地址。
免费ARP可以有两个方面的作用:
1. 一个主机可以通过它来确定另一个主机是否设置了相同的I P地址;
2. 如果发送免费A R P的主机正好改变了硬件地址(很可能是主机关机了,并换了一块接口卡,然后重新启动),那么这个分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。
六.arp命令
1. 参数–a
用来显示ARP高速缓存中的所有内容。
2. 参数-d
超级用户可以用选项-d来删除ARP高速缓存中的某一项内容。
3. 参数-s
用来增加高速缓存中的内容。
七.小结
在大多数的TCP/IP实现中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般是透明的。ARP高速缓存在它的运行过程中非常关键,我们可以用arp命令对高速缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。arp命令可以显示和修改ARP高速缓存中的内容。
我们介绍了ARP的一般操作,同时也介绍了一些特殊的功能:委托ARP(当路由器对来自于另一个路由器接口的ARP请求进行应答时)和免费ARP(发送自己IP地址的ARP请求,一般发生在引导过程中)。
RARP:逆地址解析协议
说明:本文为《TCP/IP详解,卷1:协议》的第五章“RARP:逆地址解析协议”的学习笔记。
一. 引言
具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取I P地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得I P地址。
网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的R A R P实现过程是从接口卡上读取唯一的硬件地址,然后发送一份R A R P请求(一帧在网络上广播的数据),请求某个主机响应该无盘系统的I P地址(在R A R P应答中)
二. 分组格式
与ARP基本一致,区别在于:
RARP请求或应答的帧类型代码为0x8035;
而且RARP请求的操作代码为3,应答操作代码为4。
对应于ARP,RARP请求以广播方式传送,而RARP应答一般是单播( unicast )传送的。
三. RARP服务器的设计
1. 作为用户进程的RARP服务器
R A R P服务器的复杂性在于,服务器一般要为多个主机(网络上所有的无盘系统)提供硬件地址到I P地址的映射。该映射包含在一个磁盘文件中(在U n i x系统中一般位于/etc/ethers目录中)。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的TCP/IP实现的一部分。
更为复杂的是,RARP请求是作为一个特殊类型的以太网数据帧来传送的,这说明RARP服务器必须能够发送和接收这种类型的以太网数据帧。
2.每个网络有多个RAPR服务器
RARP服务器实现的一个复杂因素是RARP请求是在硬件层上进行广播的,这意味着它们不经过路由器进行转发。为了让无盘系统在RARP服务器关机的状态下也能引导,通常在一个网络上(例如一根电缆)要提供多个RARP服务器。
当服务器的数目增加时(以提供冗余备份),网络流量也随之增加,因为每个服务器对每个RARP请求都要发送RARP应答。发送RARP请求的无盘系统一般采用最先收到的RARP应答(对于ARP,我们从来没有遇到这种情况,因为只有一台主机发送ARP应答)。另外,还有一种可能发生的情况是每个RARP服务器同时应答,这样会增加以太网发生冲突的概率。
四. 小结
RARP协议是许多无盘系统在引导时用来获取IP地址的。RARP分组格式基本上与ARP分组一致。一个RARP请求在网络上进行广播,它在分组中标明发送端的硬件地址,以请求相应I P地址的响应。应答通常是单播传送的。
RARP带来的问题包括使用链路层广播,这样就阻止大多数路由器转发RARP请求,只返回很少信息:只是系统的IP地址。在第1 6章中,我们将看到BOOTP在无盘系统引导时会返回更多的信息:IP地址和引导主机的名字等。
虽然RARP在概念上很简单,但是RARP服务器的实现却与系统相关。因此,并不是所有的TCP/IP实现都提供RARP服务器。