网络传输协议概述
第二讲:TCP/IP协议概述
网络传输协议或简称为传送协议(Communications Protocol),是指计算机通信的共同语言。现在最普及的计算机通信为网络通信,所以“传送协议”一般都指计算机通信的传送协议,如:TCP/IP、NetBEUI等。然而,传送协议也存在于计算机的其他形式通信,例如:面向对象编程里面对象之间的通信;操作系统内不同程序之间的消息,都需要有一个传送协议,以确保传信双方能够沟通无间。
网络协议即网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议。
一台计算机只有在遵守网络协议的前提下,才能在网络上与其他计算机进行正常的通信。网络协议通常被分为几个层次,每层完成自己单独的功能。通信双方只有在共同的层次间才能相互联系。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。在局域网中用得的比较多的是IPX/SPX.。用户如果访问Internet,则必须在网络协议中添加TCP/IP协议。
我们简单介绍一下各个传输协议的区别:
IPX/SPX
Internet分组交换/顺序分组交换IPX/SPX(Internetwork Packet Exchange/Sequences Packet Exchange)是novell公司的通信协议集。与NetBEUI形成鲜明区别的是IPX/SPX比较庞大,在复杂环境下具有很强的适应性。这是因为IPX/SPX在设计一开始就考虑了网段的问题,因此它具有强大的路由功能,适合于大型网络使用。当用户端接入NetWare服务器时,IPX/SPX及其兼容协议是最好的选择。但在非Novell网络环境中,一般不使用IPX/SPX。
IPX主要实现网络设备之间连接的建立维持和终止;SPX协议是IPX的辅助协议,主要实现发出信息的分组、跟踪分组传输,保证信息完整无缺的传输。
注解:它是Novell公司为了适应网络的发展而开发的通信协议,具有很强的适应性,安装方便,同时还具有路由功能,可以实现多网段间的通信。其中,IPX协议负责数据包的传送;SPX负责数据包传输的完整性。在mcrosoft的NT操作系统中,一般使用NWLink IPX/SPX兼容协议和NWLink NetBIOX两种IPX/SPX的兼容协议,即NWLink协议,该兼容协议继承了IPX/SPX协议的优点,更适应Windows的网络环境。IPX/SPX协议一般可以应用于大型网络(比如Novell)和局域网游戏环境中(比如反恐精英、星际争霸)。不过,如果不是在Novell网络环境中,一般不使用IPX/SPX协议,而是使用IPX/SPX兼容协议,尤其是在Windows 9x/2000组成的对等网中。
通常要在“高级TCP/IP设置\WINS”启用TCP/IP上的NetBIOS ,以加强局域网的兼容性。IPX
全称Internetwork Packet Exchange(网间数据包交换),IPX协议是Novell NetWare自带的最底层网络协议,主要用来控制局域网内或局域网之间数据包的寻址和路由,只负责数据包在局域网中的传送,并不保证消息的完整性,也不提供纠错服务。
在局域网中传输数据包时,如果接收节点在同一网段内,通过IPX协议就直接按该节点的ID将数据传给它;如果接收节点不在同一网段内,那么通过IPX协议可以将数据包交给NetWare服务器,再继续传输。在使用过程中,网络管理员可以通过使用相应的IPX路由命令,比如“routing ipx add/set staticroute”表示在IPX路由表中添加或配置静态IPX路由,“routing ipx set global”表示配置全局IPX路由设置。
SPX
全称Sequences Packet Exchange(顺序包交换),SPX协议是基于施乐的Xerox SPP(Sequences Packet Protocol,顺序包协议)协议,同样是由Novell公司开发的一种用于局域网的网络协议。在局域网中,SPX协议主要负责对整个传输的数据进行无差错处理,即纠错。
SPX协议一般和上面介绍的IPX协议组合成IPX/SPX协议来使用,多用于Netware网络环境以及联网游戏。
NetBEUI
NetBEUI,即NetBios Enhanced User Interface,或NetBios增强用户接口。它是NetBIOS的增强版本,曾被许多操作系统采用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI是为IBM开发的非路由协议,用于携带NETBIOS通信。在介绍NETBEUI之前我们需要简单介绍一下NETBIOS:
NetBIOS(NetBIOS Services Protocols网络基本输入/输出系统协议)协议是由IBM公司开发,主要用于数十台计算机的小型局域网。NetBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,几乎所有的局域网都是在NetBIOS协议的基础上工作的。
NETBIOS与NETBEUI的区别:NetBIOS最多只能与其他节点建立254个通讯话路。NetBEUI不再有此限制,它允许WindowsNT机器上的每个进程都能够与多达254个节点进行通讯。 NetBIOS名称最多可有15个字符,通话层应用程序通过它来与远程计算机进行通讯。NetBEUI则是通过SMB协议(ServerMessageBlock——服务器消息块,最初应用于3COM公司的LANManager)来实现在逻辑通道中的消息传送的。 NetBEUI总是包含在NetBIOS中,NetBIOS可以运行在几种不同的传输协议上,包括NetBEUI、TCP/IP和IPX/SPX,后三者位于网络层驱动接口与传输层驱动接口之间。但运行在一种传输协议上的NetBIOS服务不能和运行另一种传输协议上的NetBIOS服务通信。NetBIOS可以使用的四种类型的SMB(赋予Windows计算机本地文件重定向功能以便进入远端文件系统).
Netbios (网络基本输入/输出系统)最初由 IBM,Sytek 作为API开发,使用户软件能使用局域网的资源。自从诞生,Netbios成为许多其他网络应用程序的基础。严格意义上,Netbios 是接入网络服务的接口标准。
Netbios 原来是作为THE 网络控制 器为 IBM 局域网设计的,是通过特定硬件用来和 网络操作系统 连接的软件层。Netbios经扩展,允许程序使用Netbios接口来操作IBM令牌环结构。Netbios 已被公认为工业标准,通常参照 Netbios-compatible LANs。 它提供给网络程序一套方法,相互通讯及传输数据。基本上,Netbios 允许程序和网络会话。它的目的是把程序和任何类型的硬件属性分开。它也使软件开发员可以免除以下负担:开发网络错误修复,低层信息寻址和路由。使用Netbios接口,可以为软件开发员做许多工作。 Netbios使程序和局域网操作能力之间的接口标准化。有它们可以将程序细化到为OSI模型的哪一层所写,使程序能移植到其他网络上。在Netbios局域网环境下,计算机通过名字被系统知道。网络中每台计算机都有通过不同方法编的永久性名称。这些名称将在下面做进一步讨论。 通过使用Netbios的数据报或广播方式,在Netbios局域网上的pc机建立会话彼此联络。会话允许更多的信息被传送,探测错误,和纠正。通信是在一对一的基础上的。数据报或广播方式允许一台计算机和多台其他的计算机同时通信,但信息大小受限。使用数据报或广播方式没有探测错误和纠正。然而,数据报通信可以不必建立一个会话。 在这种环境下所有的通信以一种称为“网络控制块“的格式提交给NetBIOS。内存中这些块的分配依赖于用户程序。这些“网络控制块“分配到域中,分别为输入/输出保留。 在当今的环境中,NetBIOS是使用很普遍的协议。以太网,令牌环,IBM PC网都支持NetBIOS。在它原始版本中,它仅作为程序和网络适配器的接口。从那以后,传输类功能加入NetBIOS,使它功能日益增多。 在NetBIOS里,面向连接(tcp)和无连接(udp)通信均支持。它支持广播和复播,支持三个分开的服务:命名,会话,数据报。NETBEUI
NETBEUI协议在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议。总之NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。所以建议除了TCP/IP协议之外,局域网的计算机最好也安上NetBEUI协议。
NETBEUI缺乏路由和网络层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都 桥接 起来的小工作组环境。 因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议。NETBEUI帧中唯一的地址是数据链路层 媒体访问控制 (MAC)地址,该地址标识了网卡但没有标识网络。 路由器 靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息。 网桥 负责按照 数据链路层地址 在网络之间转发通信,但是有很多缺点。因为所有的广播通信都必须转发到每个网络中,所以网桥的扩展性不好。NETBEUI特别包括了广播通信的记数并依赖它解决命名冲突。一般而言,桥接NETBEUI网络很少超过100台主机。 近年来依赖于第二层交换器的网络变得更为普遍。完全的转换环境降低了网络的利用率,尽管广播仍然转发到网络中的每台主机。事实上,联合使用100-BASE-T Ethernet,允许转换NetBIOS网络扩展到350台主机,才能避免广播通信成为严重的问题。NetBEUI协议主要用于本地局域网中,一般不能用于与其他网络的计算机进行沟通,不同于TCP/IP、IPX/SPX协议。在Windows中,要安装NetBEUI协议的方法不尽相同。比如在Windows 98/ME中,只要在“控制面板”中双击“网络”,在打开的属性窗口中“添加”协议,选择Microsoft的NetBEUI协议安装即可。而在Windows XP中,将安装光盘中的“VALUEADD\MSFT\NET\NETBEUI”目录下的“nbf.sys”文件拷贝到%SYSTEMROOT%\SYSTEM32\DRIVERS\目录中,再将“netnbf.inf”文件拷贝到%SYSTEMROOT%\INF\目录中;这样在安装“协议”的时候,在选择窗口中就可以看到“NetBEUI协议”了。
第二讲:TCP/IP协议概述
TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,按发送前的顺序还原,抽出数据并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。在任何一个物理网络中,各站点都有一个机器可识别的地址,该地址叫做物理地址.物理地址有两个特点:
(1)物理地址的长度,格式等是物理网络技术的一部分,物理网络不同,物理地址也不同.
(2)同一类型不同网络上的站点可能拥有相同的物理地址.
以上两点决定了,不能用物理网络进行网间网通讯.
在网络术语中,协议中,协议是为了在两台计算机之间交换数据而预先规定的标准。TCP/IP并不是一个而是许多协议,这就是为什么你经常听到它代表一个协议集的原因,而TCP和IP只是其中两个基本协议而已。
你装在计算机-的TCP/IP软件提供了一个包括TCP、IP以及TCP/IP协议集中其它协议的工具平台。特别是它包括一些高层次的应用程序和FTP(文件传输协议),它允许用户在命令行上进行网络文件传输。
TCP/IP是美国政府资助的高级研究计划署(ARPA)在二十世纪七十年代的一个研究成果,用来使全球的研究网络联在一起形成一个虚拟网络,也就是国际互联网。原始的Internet通过将已有的网络如ARPAnet转换到TCP/IP上来而形成,而这个Internet最终成为如今的国际互联网的骨干网。
如今TCP/IP如此重要的原因,在于它允许独立的网格加入到Internet或组织在一起形成私有的内部网(Intranet)。构成内部网的每个网络通过一种-做路由器或IP路由器的设备在物理上联接在一起。路由器是一台用来从一个网络到另一个网络传输数据包的计算机。在一个使用TCP/IP的内部网中,信息通过使用一种独立的叫做IP包(IPpacket)或IP数据报(IP datagrams)的数据单元进--传输。TCP/IP软件使得每台联到网络上的计算机同其它计算机“看”起来一模一样,事实上它隐藏了路由器和基本的网络体系结构并使其各方面看起来都像一个大网。如同联入以太网时需要确认一个48位的以太网地址一样,联入一个内部网也需要确认一个32位的IP地址。我们将它用带点的十进制数表示,如128.10.2.3。给定一个远程计算机的IP地址,在某个内部网或Internet上的本地计算机就可以像处在同一个物理网络中的两台计算机那样向远程计算机发送数据。
TCP/IP提供了一个方案用来解决属于同一个内部网而分属不同物理网的两台计算机之间怎样交换数据的问题。这个方案包括许多部分,而TCP/IP协议集的每个成员则用来解决问题的某一部分。如TCP/IP协议集中最基本的协议-IP协议用来在内部网中交换数据并且执行一项重要的功能:路由选择--选择数据报从A主机到B主机将要经过的路径以及利用合适的路由器完成不同网络之间的跨越(hop)。
TCP是一个更高层次的它允许运行在在不同主机上的应用程序相互交换数据流。TCP将数据流分成小段叫做TCP数据段(TCP segments),并利用IP协议进行传输。在大多数情况下,每个TCP数据段装在一个IP数据报中进行发送。但如需要的话,TCP将把数据段分成多个数据报,而IP数据报则与同一网络不同主机间传输位流和字节流的物理数据帧相容。由于IP并不能保证接收的数据报的顺序相一致,TCP会在收信端装配TCP数据段并形成一个不间断的数据流。FTP和Telnet就是两个非常流行的依靠TCP的TCP/IP应用程序。
另一个重要的TCP/IP协议集的成员是用户数据报协议(UDP),它同TCP相似但比TCP原始许多。TCP是一个可靠的协议,因为它有错误检查和握手确认来保证数据完整的到达目的地。UDP是一个“不可靠”的协议,因为它不能保证数据报的接收顺序同发送顺序相同,甚至不能保证它们是否全部到达。如果有可靠性要求,则应用程序避免使用它。同许多TCP/IP工具同时提供的SNMP(简单网络管理协议)就是一个使用UDP协议的应用例子。
其它TCP/IP协议在TCP/IP网络中工作在幕后,但同样也发挥着重要作用。例如地址转换协议(ARP)将IP地址转换为物理网络地址如以太网地址。而与其对应的反向地址转换协议(RARP)做相反的工作,即将物理网络地址转换为IP地址。网际控制报文协议(ICMP)则是一个支持性协议,它利用IP完成IP数据报在传输时的控制信息和错误信息的传输。例如,如果一个路由器不能向前发送一个IP数据报,它就会利用ICMP来告诉发送者这里出现了问题。
TCP/IP网络的七层结构模型
网络设计者在解决网络体系结构时经常使用ISO/OSI(国际标准化组织/开放系统互连)七层模型,该模型每一层代表一定层次的网络功能。最下面是物理层,它代表着进行数据转输的物理介质,换句话说,即网络电缆。其上是数据链路层,它通过网络接口卡提供服务。最上层是应用层,这里运行着使用网络服务的应用程序。
TCP/IP是同ISO/OSI模型等价的。当一个数据单元从网络应用程序下流到网络接口卡,它通过了一列的TCP/IP模块。这其中的每一步,数据单元都会同网络另一端对等TCP/IP模块所需的信息一起打成包。这样当数据最终传到网卡时,它成了一个标准的以太帧(假设物理网络是以太网)。而接收端的TCP/IP软件通过剥去以太网帧并将数据向上传输过TCP/IP栈来为处于接收状态的应用程序重新恢复原始数据(一种最好的了解TCP/IP工作实质的方法,是使用探测程序来观察网络中的到处流动的帧中被不同TCP/IP模块所加上的信息)。为了勾勒TCP/IP在现实网络世界中所扮演的角色,请考虑当使用HTTP(超文本传输协议)的Web浏览器从连接在Internet上的Web服务器上获取一页HTML数据时所发生的情况。为形成同Web服务器的虚链路,浏览器使用一种被抽象地称为套接口(socket)的高层软件。为了获取Web页,它通过向套接口向套接口写入HTTPGET命令来向Web服务器发出该指令。接下来套接口软件使用TCP协议向Web服务器发出包含GET命令的字节流和位流,TCP将数据分段并将各独立段传到IP模块,该模块将数据段转换成数据报并发送给Web服务器。
如果浏览器和服务器运--在不同物理网络的计算机上(一般情况如此),数据报从一个网络传到另一个网络,直到抵达服务器所在的那个网。最终,数据被传输到目的地址并被重新装配,这样Web服务器通过读自己的套接口来获得数据主干,并进而查看连续的数据流。对浏览器和服务器来说,数据在这一端写入套接口而在另一端出现如同魔术一般,但这只是底下发生的各种复杂的交互,它创造了数据经过网络无缝传输的假象。
这就是TCP/IP所做的:将许多小网联成一个大网。并在这个大网也就是Internet上提供应用程序所需要的相互通信的服务。
第三讲:TCP/IP协议分层
在上一讲我们介绍说tcp/ip协议分为七层。但是一般而言我们吧应用层,会话层,表达层归为一层。
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如T C P / I P ,是一组不同层次上的多个协议的组合。 T C P / I P 通常被认为是一个四层协议系统
每一层负责不同的功能:
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) 应用层负责处理特定的应用程序细节。几乎各种不同的T C P / I P 实 现 都 会 提 供 下 面 这 些通用的应用程序:
• Telnet远程登录。
• FTP文件传输协议。
• SMTP简单邮件传送协议。• SNMP简单网络管理协议。
在 T C P / I P协议族中,网络层 I P 提 供 的 是 一 种 不 可 靠 的 服 务 。 也 就 是 说 , 它 只 是 尽 可 能 快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,T C P 在不可靠的I P 层 上 提 供 了 一 个 可 靠 的 运 输 层 。 为 了 提 供 这 种 可 靠 的 服 务 ,T C P 采 用 了 超 时 重 传 、 发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能
TCP/IP的分层
在T C P / I P 协议族中,有很多种协议。图1 - 4给 出 了 本 书 将 要 讨 论 的 其 他 协 议 。
I C M P是I P协议的附属协议。I P 层 用 它 来 与 其 他 主 机 或 路 由 器 交 换 错 误 报 文 和 其 他 重 要 信 息 。
I G M P 是 I n t e r n e t组管理协议。它用来把一个 U D P数据报多播到多个主机。
互联网的地址
五类互联网地址
各类IP地址对应的范围
![](https://img-my.csdn.net/uploads/201204/11/1334126693_1114.png)
Internet注册服务(IP地址和DNS域名)过去由NIC来负责,其网络地址是nic.ddn.mil。InterNIC由三部分组成:注册服务(rs.internic.net),目录和数据库服务(ds.internic.net),以及信息服务(is.internic.net)。
尽管通过I P 地 址 可 以 识 别 主 机 上 的 网 络 接 口 , 进 而 访 问 主 机 , 但 是 人 们 最 喜 欢 使 用 的 还是主机名。在T C P / I P 领域中,域名系统( D N S)是一个分布的数据库,由它来提供I P 地址和主机名之间的映射信息。
当应用程序用T C P 传 送 数 据 时 , 数 据 被 送 入 协 议 栈 中 , 然 后 逐 个 通 过 每 一 层 直 到 被 当 作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信 息 )。TCP 传给 I P 的 数 据 单 元 称 作 T C P 报 文 段 或 简 称 为 T C P 段( T C Ps e g m e n t )。 I P 传给网络接口层的数据单元称作 I P 数据报 ( I P d a t a g r a m ) 。 通 过 以 太 网 传 输 的 比 特流称作帧 (F r a m e ) 。 以太网数据帧的物理特性是其长度必须在4 6 ~1 5 0 0 字节之间。
![](https://img-my.csdn.net/uploads/201204/11/1334127109_6890.png)
U D P数 据 与 T C P数 据 基 本 一 致 。唯 一 的 不 同 是U D P 传给I P 的 信 息 单 元 称 作U D P 数 据 报(U D P d a t a g r a m),而且 U D P的首部长为 8字节。
由于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 协议。
类似地,许多应用程序都可以使用T C P 或U D P 来 传 送 数 据 。 运 输 层 协 议 在 生 成 报 文 首 部时 要 存 入 一 个 应 用 程 序 的 标 识 符 。T C P 和U D P 都用一个1 6 b i t 的 端 口 号 来 表 示 不 同 的 应 用 程 序 。T C P和 U D P把源端口号和目的端口号分别存入报文首部中。
网络接口分别要发送和接收 I P 、 A R P和 R A R P 某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个 16 bit的数 据 , 因 此 也 必 须 在 以 太 网 的 帧 首 部 中 加 入类型域。分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上 层 协 议 。 这 个 过 程 称 作 分 用 (D e m u l t i p l e x i n g)
![](https://img-my.csdn.net/uploads/201204/11/1334127675_4111.png)
为协议I C M P 和I G M P 定位一直是一件很棘手的事情。在图1 - 4中, 把它们与 I P放在同一层上,那是因为事实上它们是IP的附属协议。但是在这里,我们又把它们放在 I P层的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。
对于 A R P和R A R P, 我 们 也 遇 到 类 似 的 难 题 。 在 这 里 把 它 们 放 在 以 太 网 设 备 驱 动 程序的上方,这是因为它们和I P 数据报一样,都有各自的以太网数据帧类型。
当进一步描述 T C P的细节时,我们将看到协议确实是通过目的端口号、源I P 地 址 和 源 端 口号进行解包的。
客户-服务器模型大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。
可以将这种服务分为两种类型:重复型或并发型。
重复型服务器通过以下步骤进行交互:
-
I1. 等待一个客户请求的到来。
-
I2. 处理客户请求。
-
I3. 发送响应给发送请求的客户。
-
I4. 返回I 1 步。
重复型服务器主要的问题发生在I 2状 态 。 在 这 个 时 候 , 它 不 能 为 其 他 客 户 机 提 供 服 务 。
C1.等待一个客户请求的到来。
C2.启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。
C3.返回 C 1步。
并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
一般来说,T C P 服务器是并发的,而U D P 服 务 器 是 重 复 的 , 但 也 存 在 一 些 例 外 。
端口号
T C P 和 U D P采用 1 6 b i t的 端 口 号 来 识 别 应 用 程 序 。
服务器一般都是通过知名端口号来识别的。例如,对于每个T C P / I P 实现来说, F T P服务器的 T C P端 口 号 都 是 2 1 ,每个T e 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 号分配机构( I n t e r n e t A s s i g n e d N u m b e r s A u t h o r i t y , I A N A)来管理。
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
大多数 T C P / I P 实 现 给 临 时 端 口 分 配 1 0 2 4 ~ 5 0 0 0 之 间 的 端 口 号 。链路层作用目的:
在 T C P / I P 协 议 族 中 , 链 路 层 主 要 有 三 个 目 的 :( 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 应答。
T C P / I P 支 持 多 种 不 同 的 链 路 层 协 议 , 这 取 决 于 网 络 所 使 用 的 硬 件 , 如 以太 网 、 令 牌 环 网 、 F D D I ( 光 纤 分 布 式 数 据 接 口 ) 及 R S- 2 3 2 串 行 线 路 等 。
一:以太网和IEEE802封装
在 T C P / I P 世 界 中 , 以 太 网 I P 数 据 报 的 封 装 是 在 R F C 8 9 4 中定义的, I E E E 8 0 2网络的 I P 数据报封装是在 R F C 1 0 4 2 中定义的。主机需求 R F C要求每台 I n t e r n e t 主机都与一个 10 Mb/s 的以太网电缆相连接:
1) 必须能发送和接收采用 RFC 894(以太网)封装格式的分组。
2) 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。
3) 也许能够发送采用 RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是 RFC 894分组。
两种帧格式都采用 4 8 b i t ( 6 字节)的目的地址和源地址( 8 0 2 . 3 允许使用 1 6 b i t 的地址,但一般是 4 8 b i t 地址)。 这就是我们所称的硬件地址 。接下来的 2个字节在两种帧格式中互不相同。在802标准定义的帧格式中 , 长度字段是指它后续数据的字节长度,但不包括 CRC检验码 。 以 太 网 的 类 型 字 段 定 义 了 后 续 数 据 的 类 型 。在 8 0 2 标准定义的帧格式中,类型字段则由后续的子网接入协议( S u b - n e t w o r k A c c e s sP r o t o c o l , S N A P )的首部给出。幸运的是, 8 0 2定义 的 有 效 长 度 值 与 以 太 网 的 有 效 类 型 值 无 一相同,这样,就可以对两种帧格式进行区分。
在以太网帧格式中,类型字段之后就是数据;而在 8 0 2 帧格式中,跟随在后面的是 3 字节的802.2 LLC和5字节的802.2 SNAP。目的服务访问点( Destination Service Access Point,D S A P ) 和 源 服 务 访 问 点 ( S o u r c e S e r v i c e A c c e s s P o i n t , S S A P ) 的 值 都 设 为 0 x a a 。 C t r l 字段的值设为 3 。随后的 3 个字节 o rg c o d e 都置为 0 。再接下来的 2 个 字 节 类 型 字 段 和 以 太 网 帧 格 式 一 样。C R C 字 段 用 于 帧 内 后 续 字 节 差 错 的 循 环 冗 余 码 检 验 ( 检 验 和 )( 它 也 被 称 为 F C S 或帧检验
8 0 2 . 3 标 准 定 义 的 帧 和 以 太 网 的 帧 都 有 最 小 长 度 要 求 。 8 0 2 . 3 规 定 数 据 部 分 必 须 至 少 为 3 8字节,而对于以太网,则要求最少要有 4 6 字 节 。 为 了 保 证 这 一 点 , 必 须 在 不 足 的 空 间 插 入 填 充( p a d )字节。在开始观察线路上的分组时将遇到这种最小长度的情况。
S L I P 的全称是 S e r i a l L i n e I P 。 它 是 一 种 在 串 行 线 路 上 对 I P 数 据 报 进 行 封 装 的 简 单 形 式 , 在R F C 1 0 5 5 [ R o m k e y 1 9 8 8 ] 中有详细描述。S L I P 适用于家庭中每台计算机几乎都有的 R S - 2 3 2串行端口和高速调制解调器接入 I n t e r n e t 。
下面的规则描述了 S L I P 协议定义的帧格式:
1 ) I P 数据报以一个称作 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 字符,但是它的值与 A S C I I码的 E S C 字符( 0 x 1 b )不同。
3) 如果 I P 报 文 中 某 个 字 符 为 S L I P 的 E S C 字 符 , 那 么 就 要 连 续 传 输 两 个 字 节 0 x d b 和 0 x d d 来取代它。
图 2 - 2 中 的 例 子 就 是 含 有 一 个 E N D 字 符 和 一 个 E S C 字符的 I P 报 文 。 在 这 个 例 子 中 , 在 串 行线路上传输的总字节数是原 I P 报文长度再加 4 个字节。
![](https://img-my.csdn.net/uploads/201204/12/1334209634_4349.png)
S L I P 是一种简单的帧封装方法,还有一些值得一提的缺陷:
1) 每一端必须知道对方的 I P 地址。没有办法把本端的 I P 地址通知给另一端。
2) 数据帧中没有类型字段(类似于以太网中的类型字段 )。如果一条串行线路用于 SLIP ,那么它不能同时使用其他协议。
3 ) SLIP没有在数据帧中加上检验和 (类似于以太网中的CRC字段)。如果SLIP 传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器 可 以 检 测 并 纠 正 错 误 报 文 )。 这 样 , 上层协议提供某种形式CRC 就显得很重要 。
尽管它本身的描述是一种非标准的协议,但是随着调制解调器的速率和可靠性的提高, S L I P 越来越流行。现在,它的许多产品可以公开获得,而且很多厂家都支持这种协议。
三: PPP:点对点协议P P P ,点对点协议修改了 S L I P 协议中的所有缺陷。 P P P 包括以下三个部分:
1 ) 在串行链路上封装 I P 数据报的方法。 P P P 既支持数据为 8 位 和 无 奇 偶 检 验 的 异 步 模 式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
2) 建立、配置及测试数据链路的链路控制协议( L C P : L i n k C o n t r o l P r o t o c o l )。它允许通信双方进行协商,以确定不同的选项。
3) 针对不同网络层协议的网络控制协议( N C P : N e t w o r k C o n t r o l P r o t o c o l )体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于 C S L I P (缩写词 N C P 也可用在 T C P 的前面)。
P P P 数 据 帧 的 格 式 看 上 去 很 像 I S O 的 H D L C ( 高 层 数 据 链 路 控 制 ) 标 准 。 图 2 - 3 是 P P P 数据帧的格式。每一帧都以标志字符 0 x 7 e 开始和结束。紧接着是一个地址字节,值始终是 0 x ff ,然后是一个值为 0 x 0 3 的控制字节。
![](https://img-my.csdn.net/uploads/201204/12/1334209654_3649.png)
接下来是协议字段,类似于以太网中类型字段的功能。当它的值为 0 x 0 0 2 1 时 , 表 示 信 息字 段 是 一 个 I P 数 据 报 ; 值 为 0 x c 0 2 1时 , 表 示 信 息 字 段 是 链 路 控 制 数 据 ; 值 为 0 x 8 0 2 1 时 , 表 示信息字段是网络控制数据。
C R C 字段(或 F C S , 帧 检 验 序 列 ) 是 一 个 循 环 冗 余 检 验 码 , 以 检 测 数 据 帧 中 的 错 误 。
由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P 需 要 对 它 进 行 转 义 。在同步链路中,该过程是通过一种称作比特填充 (bit stuffing)的硬件技术来完成的 [Tanenbaum1 9 8 9 ]。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 P P P 数 据 帧 中 时 , 那 么 紧 接着的字符的第 6个比特要取其补码,具体实现过程如下:
1) 当遇到字符 0 x 7 e 时,需连续传送两个字符: 0 x 7 d 和 0 x 5 e ,以实现标志字符的转义。
2) 当遇到转义字符 0 x 7 d 时,需连续传送两个字符: 0 x 7 d 和 0 x 5 d ,以实现转义字符的转义。3 ) 默 认 情 况 下 , 如 果 字 符 的 值 小 于 0 x 2 0 ( 比 如 , 一 个 A S C I I 控 制 字 符 ), 一 般 都 要 进 行 转
义。例如,遇到字符 0 x 0 1 时需连续传送 0 x 7 d 和 0 x 2 1 两个字符(这时,第 6 个比特取补码后变为1,而前面两种情况均把它变为 0)。
这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为有时它们会把这些控制字符解释成特殊的含义。另一种可能是用链路控制协议来指定是否需要对这 3 2 个 字 符 中 的 某 一 些 值 进 行 转 义 。 默 认 情 况 下 是 对 所 有 的 3 2 个 字 符 都 进 行 转 义 。
与 S L I P 类似,由于 P P P 经 常 用 于 低 速 的 串 行 链 路 , 因 此 减 少 每 一 帧 的 字 节 数 可 以 降 低 应 用程序的交互时延。利用链路控制协议,大多数的产品通过协商可以省略标志符和地址字段,并且把协议字段由 2 个字节减少到 1个字节。如果我们把 P P P 的帧格式与前面的 S L I P 的帧格式
(图 2 - 2 ) 进 行 比 较 会 发 现 , P P P 只 增 加 了 3 个 额 外 的 字 节 : 1 个 字 节 留 给 协 议 字 段 , 另 2 个给C R C 字段使用。另外,使用 I P 网络控制协议,大多数的产品可以通过协商采用 V a n J a c o b s o n 报文首部压缩方法(对应于 C S L I P 压缩),减小 I P 和 T C P 首部长度。
总的来说, P P P 比 S L I P 具 有 下 面 这 些 优 点 : ( 1 ) P P P 支 持 在 单 根 串 行 线 路 上 运 行 多 种 协 议 ,不只是 I P 协议; (2) 每一帧都有循环冗余检验; (3) 通信双方可以进行 I P 地址的动态协商(使用
I P 网络控制协议); (4) 与 C S L I P 类似,对 T C P 和 I P 报文首部进行压缩; ( 5 ) 链 路 控 制 协 议 可 以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。
尽管 P P P比 S L I P 有更多的优点,但是现在的 S L I P 用户仍然比 P P P 用户多。随着产品越来越多,产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP。
大多数的产品都支持环回接口( 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 数据报不能在任何网络上出现。
我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当I P 数据报离开网络层时把它返回给自己。
图中需要指出的关键点是:
1) 传给环回地址(一般是 1 2 7 . 0 . 0 . 1 )的任何数据均作为 I P 输入。
2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身。
3 ) 任何传给该主机 I P 地 址 的 数 据 均 送 到 环 回 接 口 。
第四讲:TCP/IP协议之网络层IP(网际协议)详解
IP是 T C P / I P 协 议 族 中 最 为 核 心 的 协 议 。 所 有 的 T C P 、 U D P 、 I C M P 及 I G M P 数据都以 I P 数据报格式传输。iP 提 供 不 可 靠 、 无 连 接 的 数 据 报 传 送服务 。
不可靠( u n r e l i a b l e)的意思是它不能保证 I P 数据报能成功地到达目的地。 I P 仅 提 供 最 好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P 有 一 个 简 单 的 错 误处理算法:丢弃该数据报,然后发送 I C M P 消 息 报 给 信 源 端 。 任 何 要 求 的 可 靠 性 必 须 由 上 层 来提供(如 T C P )。
无连接( c o n n e c t i o n l e s s ) 这 个 术 语 的 意 思 是 I P 并 不 维 护 任 何 关 于 后 续 数 据 报 的 状 态 信 息 。每个数据报的处理是相互独立的。这也说明, I P数 据 报 可 以 不 按 发 送 顺 序 接 收 。 如 果 一 信 源向相同的信宿发送两个连续的数据报(先是 A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此 B可能在 A到达之前先到达。
IP首部
最 高 位 在 左 边 , 记 为 0 bit ; 最 低 位 在 右 边 , 记 为 3 1 b i t 。
4 个字节的 3 2 b i t 值 以 下 面 的 次 序 传 输 : 首 先 是 0 ~ 7 b i t ,其次 8 ~ 1 5 b i t ,然后 1 6 ~ 2 3 b i t ,最后是 2 4 ~ 3 1 b i t 。 这 种 传 输 次 序 称 作 b i g e n d i a n 字 节 序 。 由 于 T C P / I P 首 部 中 所 有 的 二 进 制 整 数在网络中传输时都要求以这种次序,因此它又称作网络字节序。以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。
目 前 的 协 议 版 本 号 是 4 ,因此 I P 有时也称作 I P v 4 。
首部长度指的是首部占 32 bit字的数目,包括任何选项。由于它是一个 4比特字段,因此首部最长为 6 0 个字节。
服 务 类 型 ( T O S ) 字 段 包 括 一 个 3 b i t 的 优 先 权 子 字 段 ( 现 在 已 被 忽 略 ), 4 b i t 的 T O S 子字段和 1 b i t 未 用 位 但 必 须 置 0 。 4 b i t 的 T O S 分 别 代 表 : 最 小 时 延 、 最 大 吞 吐 量 、 最 高 可 靠 性 和 最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
图3 - 2列出了对不同应用建议的 T O S值 。 在 最 后 一 列 中 给 出 的 是 十 六 进 制 值 , 因 为 这 就 是在后面将要看到的 t c p d u m p 命令输出。
总长度字段是指整个 I P 数 据 报 的 长 度 , 以 字 节 为 单 位 。 利 用 首 部 长 度 字 段 和 总 长 度 字 段 ,就可以知道 I P 数据报中数据内容的起始位置和长度。由于该字段长 1 6 比特,所以 I P 数据报最长可达 6 5 5 3 5 字节。 当 数 据 报 被 分 片 时 , 该 字 段 的 值 也 随 着 变 化 。尽 管 可 以 传 送 一 个 长 达 6 5 5 3 5 字节的 I P数 据 报 , 但 是 大 多 数 的 链 路 层 都 会 对 它 进 行 分 片 。而且,主机也要求不能接收超过 5 7 6 字节的数据报。由于 T C P 把 用 户 数 据 分 成 若 干 片 , 因 此 一般来说这个限制不会影响 T C P 。在后面的章节中将遇到大量使用 U D P 的应用( R I P , T F T P ,B O O T P , D N S ,以及 S N M P ), 它 们 都 限 制 用 户 数 据 报 长 度 为5 1 2 字 节 , 小 于 5 7 6 字 节 。 但 是 ,事实上现在大多数的实现(特别是那些支持网络文件系统 N F S 的实现)允许超过 8 1 9 2字节的I P 数据报。 总长度字段是I P 首 部 中 必 要 的 内 容 , 因 为 一 些 数 据 链 路 ( 如 以 太 网 ) 需 要 填 充 一 些 数 据以 达 到 最 小 长 度 。 尽 管 以 太 网 的 最 小 帧 长 为 4 6 字 节,但是 I P 数 据 可 能 会 更 短 。 如果 没 有 总 长 度 字 段 , 那 么 I P 层就不知道 4 6 字 节 中 有 多 少 是 I P 数 据 报 的 内 容 。
T T L( t i m e - t o - l i v e ) 生 存 时 间 字 段 设 置 了 数 据 报 可 以 经 过 的 最 多 路 由 器 数 。 它 指 定 了 数 据报 的 生 存 时 间 。 T T L 的 初 始 值 由 源 主 机 设 置 ( 通 常 为 3 2 或 6 4 ), 一 旦 经 过 一 个 处 理 它 的 路 由 器 ,它的值就减去 1。当该字段的值为 0 时,数据报就被丢弃,并发送 I C M P 报文通知源主机。
首部检验和字段是根据 I P 首部计算的检验和码。它不对首部后面的数据进行计算。 I C M P 、I G M P 、 U D P 和 T C P 在它们各自的首部中均含有同时覆盖首部和数据检验和码。
最后一个字段是任选项,是数据报中的一个可变长的可选信息。目前,这些任选项定义 如下:
-
安全和处理限制(用于军事领域)
-
记录路径(让每个路由器都记下它的 I P 地址)
-
时 间 戳 ( 让 每 个 路 由 器 都 记 下 它 的 I P 地 址 和 时 间 )
-
宽 松 的 源 站 选 路 ( 为 数 据 报 指 定 一 系 列 必 须 经 过 的 I P 地址)
-
严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)。
这些选项很少被使用,并非所有的主机和路由器都支持这些选项。选项字段一直都是以 32 bit作为界限,在必要的时候插入值为 0的填充字节。这样就保证I P 首部始终是 32 bit 的 整 数 倍 ( 这 是 首 部 长 度 字 段 所 要 求 的 )。
IP路由选择
I P 路 由 选 择 是 简 单 的 , 特 别 对 于 主 机 来 说 。 如 果 目 的 主 机 与 源 主 机 直 接 相连 ( 如 点 对 点 链 路 ) 或 都 在 一 个 共 享 网 络 上 ( 以 太 网 或 令 牌 环 网 ),那么 I P 数 据 报 就 直 接 送 到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多数的主机都是采用这种简单机制。
在 一 般 的 体 制 中 , I P 可以从 T C P 、 U D P 、 I C M P 和 I G M P 接 收 数 据 报 ( 即 在 本 地 生 成 的 数 据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。 I P 层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时, I P 首先检查目的 I P 地址是否为本机的 I P 地址之一或者 I P 广 播 地 址 。 如 果确实是这样,数据报就被送到由 I P 首 部 协 议 字 段 所 指 定 的 协 议 模 块 进 行 处 理 。 如 果 数据目 的不是这些地址,那么( 1 )如果 I P 层 被 设 置 为 路 由 器 的 功 能 , 那 么 就 对 数 据 报 进 行 转 发(也就是说,像下面对待发出的数据报一样处理);否则( 2)数据报被丢弃。
路由表中的每一项都包含下面这些信息:
• 目的I P 地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定(如下所述)。主机地址有一个非 0的主机号(见图 1 - 5),以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)。
• 下一站(或下一跳)路由器( n e x t - h o p r o u t e r )的 I P 地址,或者有直接连接的网络 I P 地址。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。
• 标志。其中一个标志指明目的 I P 地 址 是 网 络 地 址 还 是 主 机 地 址 , 另 一 个 标 志 指 明 下 一站 路 由 器 是 否 为 真 正 的 下 一 站 路 由 器 , 还 是 一 个 直 接 相 连 的 接 口
• 为数据报的传输指定一个网络接口。
I P 路 由 选 择 是 逐 跳 地 ( h o p - b y - h o p ) 进 行 的 。 从 这 个 路 由 表 信 息 可 以 看 出 , I P 并不知道到达 任 何 目 的 的 完 整 路 径 ( 当 然 , 除 了 那 些 与 主 机 直 接 相 连 的 目 的 )。所有的 I P 路 由 选 择 只 为 数据报传输提供下一站路由器的 I P 地 址 。 它 假 定 下 一 站 路 由 器 比 发 送 数 据 报 的 主 机 更 接 近 目 的 ,而且下一站路由器与该主机是直接相连的。
I P 路由选择主要完成以下这些功能:
1) 搜索路由表,寻找能与目的 I P 地 址 完 全 匹 配 的 表 目 ( 网 络 号 和 主 机 号 都 要 匹 配 )。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。
2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论。
3) 搜 索 路 由 表 , 寻 找 标 为 “ 默 认 ( d e f a u l t )” 的 表 目 。 如 果 找 到 , 则 把 报 文 发 送 给 该 表 目指定的下一站路由器。
如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路 由 , 以 及 下 一 站 路 由 器 发 送 的 I C M P 间 接 报 文 ( 如 果 我 们 为 数 据 报 选 择 了 错 误 的 默 认 路 由 ),是 I P 路由选择机制中功能强大的特性。