1、 TCPIP 原理第一章 TCP/IP 概述 3TCP/IP 的特点 3数据通信模型 .3TCP/IP 协议结构 4网络访问层(NETWORK ACCESS LAYER) 5网间层(INTERNET LAYER) 5传输层(TRANSPORT LAYER) 7应用层(APPLICATION LAYER) .10第二章 数据传输 .10寻址、路由选择和多路复用 .11INTERNET的路由结构 .13路由器 .14路由表(ROUTING TABLE) 14地址转换 .15协议、端口和软插口 .15第一章 TCP/IP 概述TCP/IP 是指一整套数据通信协议, 其名字是由这些协议中的两个协议组成
2、的,即传输控制协议(Transmission Control Protocol TCP)和网间协议(Internet ProtocolIP)。虽然还有很多其他协议,但是 TCP 和 IP 显然是两个最重要的协议。TCP/IP 的特点TCP/IP 协议有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围的数据通信。其特点包括:开放式协议标准。可免费使用,且与具体的计算机硬件或操作系统无关。由于它受到如此广泛的支持,因而即使不通过 Internet 通信,利用 TCP/IP 来统一不同的硬件和软件也是很理想的。与物理网络硬件无关。这就允许 TCP/IP 可以将很多不同类型的网络集成
3、在一起,它可以适用于以太网、令牌环网、拨号线、X.25 网络以及任何其它类型的物理传输介质。通用的寻址方案。该方案允许任何 TCP/IP 设备唯一的寻址整个网络中的任何其他设备,该网络甚至可以象全球 Internet 那样大。各种标准化的高级协议。可广泛而持续地提供多种用户服务。数据通信模型虽然 OSI 模型非常有用,但 TCP/IP 协议并不完全与它的结构相匹配。因此,在讨论TCP/IP 时,我们按下列方法使用该模型中的各层:应用层 应用层是网络中与用户访问有关的协议层。本教材中所说的 TCP/IP 应用程序是在传输层以上发生的任何网络进程。表示层 在 OSI 中,这一层可提供标准的数据表示
4、例程,而在 TCP/IP 中,这种功能是在应用层内处理的。会话层 OSI 的会话层管理协作应用程序间的会话(连接),在 TCP/IP 中,这一功能基本上是在传输层中实现的,是使用软插口(socket)和端口(port)来说明协作应用程序间通信的路径。传输层 在 OSI 参考模型中,传输层可以确保接收方正确的接收到所发出的数据。在 TCP/IP 中,这一功能是由传输控制协议(TCP)完成的。然而,TCP/IP 还提供了第二种传输层服务,即用户的数据报协议(UDP),它并不执行端对端的可靠性检查。网络层 网间协议(IP)通常可看作是 TCP/IP 的网络层,它可以将上层与基本网络隔离开,并处理寻址
5、和数据传输功能。数据链路层 在基本的物理网络上可靠的传输数据是由数据链路层完成的。TCP/IP很少创建数据链路层中的协议,与数据链路层有关的大多数 RFC 只讨论 IP 如何使用现有的数据链路协议。物理层 TCP/IP 不定义各种物理标准,它只使用现有的标准。TCP/IP 协议结构在描述 TCP/IP 时,一般只定义如图所示的 4 层模型:应用层、主机对主机传输层、网络层和网络访问层。TCP/IP 协议结构中的各层在 TCP 的应用层中,将数据称为“数据流(stream )”;而在用户数据报协议(UDP)的应用层中,则将数据称为 “报文(message)”。TCP 将它的数据结构称作“段(se
6、gment)”,而 UDP 将它的数据结构称作“分组(packet )”;网间层则将所有数据看作是一个块,称为“数据报(datagram)”。TCP/IP 使用很多种不同类型的底层网络,每一种都用不同的术语定义它传输的数据,大多数网络将传输的数据称为“分组”或“帧(frame)”.4 应 用 层 由 使 用 网 络 的 应 用 程 序 和 进 程 组 成3 主 机 对 主 机 传 输 层 提 供 端 对 端 数 据 传 输 服 务2 网 间 层 定 义 数 据 报 和 处 理 数 据 路 由 选 择1 网 络 访 问 层由 访 问 物 理 网 络 的 例 程 组 成数据结构网络访问层(Netw
7、ork Access Layer)网络访问层(Network Access Layer)是 TCP/IP 协议结构的最低层,该层中的协议提供了一种数据传送的方法,使得系统可以通过直接连接的网络将数据传送到其它设备,并定义了如何利用网络来传送数据报。网络访问层协议与较高层协议不一样,它必须知道底层网络的各种细节(如它的分组结构、寻址方式等),以便准确的格式化传输的数据,使其遵守网络规定。TCP/IP 网络访问层可以包括 OSI 参考模型中下三层(网络层、数据链路层和物理层)的全部功能。网络访问协议种类繁多,每一个协议都对应一种物理网络标准。该层执行的功能包括将 IP 报文封装成被网络传输的帧,并
8、将 IP 地址映射为网络使用的物理地址。在 UNIX 中实施时,这一层的协议通常以设备驱动程序和有关程序的组合形式出现。这种用网络设备名称标识的模块,通常用来封装数据并传送给网络,而其它程序则执行相关功能,如地址映射。网间层(Internet Layer)网间协议 IP 是 TCP/IP 的核心,也是网间层中最重要的协议。IP 可提供基本的分组传输服务,这是构建 TCP/IP 网络的基础。所有的 TCP/IP 数据都流经 IP,(不管是出去的还是进来的)与它的最终目的地无关。网间协议(Internet ProtocolIP)网间协议的功能包括:1定义数据报,它是在 Internet 上的基本传
9、输单元。2定义网间寻址方案。3在网络访问层和主机对主机传输层之间传输数据。4为数据报选择至远程主机的路由。TCP UDP5执行数据报的分解和重组。IP 是一个“无连接协议”,是要依靠其它层的协议提供错误检测和错误恢复。有时将该网间协议称为“不可行协议”,因为它并不包含错误检测和恢复的程序代码。这并不是说IP 协议是不能信赖的,恰恰相反,它可以正确地将数据传送到已连接的网络,不过它并不检验数据是否被正确地接收。必要是,TCPIP 结构中其它层的协议可以提供这一检验功能。数据报(Datagram)数据报(datagram)是网间协议定义的一种分组格式。如图表示一个 IP 数据报,数据报中前 5 个
10、或 6 个 32 位字为控制信息,称为报头。在缺省形式下,报头的长度是 5 个字,第 6 个字是可选的。由于报头的长度是可变的,因而它包含一个称为“Internet 报头长度(IHL )”的字段,以字为单位指出报头的长度。报头包含着传输该分组所需的全部信息。31 16 15 报头IP 数据报的格式网间协议通过检查报头第 5 个字中的目的地址(Destinaation Address)传送数据报,该目的地址是一个标准的 32 位 IP 地址,它可以标识目的网络和在该网络上的特定主机。如果目的地址是本地网络中一个主机的地址,该分组就直接伟送给目的地;如果目的地址不在本地网络中,该分组就被传送到网关
11、(gateway)再进行传送。网关是在不同的物理网络之间交换分组报文的设备。确定使用哪个网关称为路由选择(routing),IP 为每个单独的分组作出路由选择决定。数据报的路由选择Internet 网关通常(或许更精确地说)是指 IP 路由器(router),因为它使用网间协议在网络之间选择分组的路由。在传统的 TCP/IP 术语中,只有两种类型的网络设备,即网关(gatway)和主机(host)。网关可以在网络之间转发分组报文,主机却不能。然而,如版本号 服务类型 总长度 识别码 标志 片偏置量寿命 协议 报头校验和源地址目的地址选项 填空数据区果一台主机连接多个网络(称为多地址主机),则就
12、可以在网络间转发分组报文。当一个多地址主机转发分组报文时,它的作用与其它任何网关一样,可以看成是一个网关。目前的数据通信术语有时将网关与路由器区别开,术语“网关”和“IP 路由器”是可以互换的。数据报的拆分每一种类型的网络都有一个“最大传输单元(MTU )”,即网络上可以传输的最大分组。如果从一个网络上接收到的数据报大于另一个网络的最大传输单元,就必须将它分成较小的“块”才能传输,这一过程称为“拆分(fragmentation)”。如以太网与 X.25 网络在物理上也是不同的。当一个较大的以太网分组在 X.25 网络上传输之前,IP 必须将它分割成较小的分组。传送数据报到传输层当 IP 接收到
13、一个寻址本地主机的数据报时,它必须将该数据报中的数据部分传送给合适的传输层协议,这是利用数据报报头中第 3 个字内的“协议号(Protocol Number)”完成的。每个传输层协议都有一个唯一的协议号,用来在 IP 中标识它自己。网间控制报文协议网间控制报文协议(Internet Control Message Protocol TCMP)是 IP 的一个不可分割的部分。该协议是网间层的一部分,它使用 IP 数据报传输设施去发送报文。它发送的报文可以为 TCP/IP 执行下列控制、错误报告、信息等功能:流控制 当数据报到达的速度太快而无法处理时,目的主机或中间网关 就会发送一个“ICMP 源
14、站抑制报文(ICMP Source Quench Message)”块给发送者,以通知源站暂时停止发送报评议文。检测不可达的目地 当目的地不可到达时,检测到该问题的系统就发送一个“目的 地不可达报文(Destination Unreachable Message)”给数据报的源站。如果不可达的目的地是一个网络或主机,就由中间网关发送该报文;如果是一个不可达的端口,则由目的地主机发送该报文。重定向路由 网关发送“ICMP 重定向报文(ICMP Redirect Message)”通知主机使用另一个网关,这大概是因为另一个网关更合适。 只有当源主机与这二个网关都在同一个网络上时才能使用这一报文。检
15、查远程主机 一台主机可以发送“ICMP 回送报文(ICMP Echo Message)” 以了解远程系统的网间协议是否正在工作。当系统接收到该回 送报文时,便将同样的分组报文发送回源主机。UNIX 的 ping命令就使用这一报文。 传输层(Transport Layer)传输层中两个最重要的协议是传输控制协议(TCP)和用户数据报协议( UDP)。TCP 利用端对端错误检测与纠正功能提供可靠的数据传输服务;而 UDP 提供低开销的无连接数据报传输服务,二者都可以在应用层和网间层之间传输数据。对于特定的应用程序,程序设计者可以选择最适合的服务。用户数据报协议用户数据报协议(User Datagr
16、am ProtocolUDP)是一个不可靠的无链接数据报协议,其格式如图:0 15 16 31源站端口 目的站端口长度 校验和数据区UDP 的报文格式选用 UDP 作为一种数据传输服务的原因有好几个,如果传输的数据量很少,那末为建立连接和确保可靠传输而花费的开销可能比重新传输全部数据的开销还高。在此情况下,UDP 就是传输层协议最好的选择。使用“查询响应”方式的应用程序也非常适宜使用 UDP,其响应可以用作对查询的肯定确认,如果在一定的时间内没有收到响应,应用程序便发出另一个查询。有些应用程序可提供自己的技术去确保可靠的数据传输,而不需要传输层协议的服务。传输控制协议(TCP)TCP 是一种可
17、靠的、面向连接的、字节流协议。TCP 提供的可靠性是利用一种称为“重传肯定确认(Positive Acknowledgment With RetranmissionPAR)”机制来实现的。换句话说,除非一个利用 PAR 的系统接收到从远端系统发来的肯定确认,否则就重发原数据。在相互协作的 TCP 模块之间交换的数据单元称为“段(Segment )”如图:31 16 15 报头原端口 目的端口序列号确认号偏移 保留 标志 窗口校验和 紧急指针任选 填空数据区TCP 的段格式每一段包含一个校验值,接收方用它来验证数据是否遭到破坏。如果接受到的数据段没有遭到破坏,接收者就发送一个肯定确认应答给发送者
18、;如果遭到破坏,接收者就废弃该段。过了一段时间后,发送端 TCP 就重新发送没有受到肯定确认的任何段。TCP 是面向连接的,它在两个通信主机之间建立一个逻辑的端对端连接。在传输数据之前,建立对话的两个端点之间交换称为握手的控制信息。TCP 通过在段头第 4 个字的标志字段中设置相应的位来表示一个段的控制功能。TCP 有三个段要交换,故称为“三段试握手”。如图:主机 A 主机 B三段试握手主机 A 通过将一个具有“同步序列号( SYN)”的段发送给主机 B 而开始连接,该段告诉主机 B:主机 A 希望建立连接并且使用哪个序列号作为主机 A 的段的起始号(序列号可用来保持数据的正确顺序);主机 B
19、 用一个带有“确认应答(ACK)”和“同步序列号(SYN) ”位的段响应主机 A,以确认收到了 A 的段,并通知 A 它将从哪个序列号开始;最后,A 发送一个段,确认收到了 B 的段,并开始传送第一个实际数据。当协作双方的模块结束数据传输时,它们就利用包含“无数据发送(FIN)”位的段来交换三段试握手信息,以关闭连接。TCP 发送的是连续的字节流而不是单独的分组。因此要确保发送和接受的顺序,即用 TCP 的段头中的 “序列号”和“确认号”字段来保持这个顺序。 每个系统可选择任意“号”作为起点。但通常情况下 ISN 总是 0。 数据中的每个字节是从 ISN 开始顺序编号的,因而被发送数据的第一个
20、实际字节的顺序号为 ISN+1(通常为 1)。 确认段(ACK)执行两种功能:肯定确认和流控制。确认:SYNACK, 数 据 SYN, ACK开 始 传 输 数据是告诉发送者已经接收了多少数据和接收方还可以接收多少数据。确认号是远端接收到的最后一个字节的顺序号。该标准并不要求每个分组都要单独确认,确认号就是对在该号之前的所有字节的肯定确认。 窗口字段:含有远端有能力接收的字节数。如图:窗口 6000已接收的数据当前段1 1001 2001 3001 4001 5001 6001 7001起始序号 确认号 序列号 40010 2000TCP 数据流TCP 还负责将从 IP 接收到的数据传送给合适
21、的应用程序。接收该数据的应用程序是用一个 16 位的“端口号”标识的。源端口和目的端口是包含在段头的第一个字节中,使数据正确地传进和传出应用层,这是传输层的一个重要服务。应用层(Application Layer)该层中包含了使用传输层协议去传输数据的所有协议,应用层协议很多,一些著名的应用层协议有:TELNET 这是网络终端协议,可通过网络提供远程登陆。FTP 这是文件传输协议,可用于交互式文件传输。SMTP 这是简单邮件传输协议,可用于传送电子邮件。此外还有:域名服务(Domain Name ServiceDNS):可以将 IP 地址映射成赋予网络设备的名字。路由信息协议(Routing
22、Information ProtocolRIP):路由选择是 TCP/IP 的工作核心,网络设备使用 RIP 去交换路由选择信息。网络文件系统(Network File SystemNFS):该协议允许文件被网络上的各种主机共享。综上所述,FTP、TELNET、和 SMTP 基本上是依赖于 TCP 的,而 NFS、DNS 和 RIP 则基本上依赖于 UDP。一些应用程序型协议,如外部网关协议(Exterior Gateway ProtocolEGP),它是另一个路由协议,它们不使用传输层服务,而直接使用 IP 服务。第二章 数据传输我们已经了解到 TCP/IP 是一个四层结构。本章将更详细地探
23、讨数据是如何在网络的协议之间和系统之间传送的,以及如何利用地址路由将数据送到它的目的地、如何为了构建子网而在本地重定义寻址规则。寻址、路由选择和多路复用为了在二个 Internet 主机之间传送数据,就必须通过网络将数据传送给相应的主机,并在该主机内传送给相应的用户或进程。TCP/IP 利用三种方法来完成这些任务:寻址(Addressing ) IP 地址可以唯一地标识 Internet 中的每一台主机,它可以将数据传送到相应的主机。路由选择(Routing) 网关可以将数据传送到相应的网络。多路复用(Multiplexing) 协议和端口号可以将数据传送到主机内相应的软件模块。其中的每一个功
24、能(在主机之间寻址、在网络之间选择路由和在层间多路复用)对于通过 Internet 在两个协作应用程序间传送数据都是必需的。IP 地址网间协议(IP)以数据报的形式在主机之间传输数据,每个数据报传送到一个地址,该地址包含在该数据报报头的目的地址(第个字)中。目的地址是一个位的 IP 地址,它包含着足够的信息以唯一地标识一个网络和该网络中的特定主机。一个 IP 地址由一个网络部分和一个主机部分组成,但在每个 IP 地址中它们的格式是不同的。用来标识网络和主机的地址位数将根据地址的“类型”而变,类、类和类是三个主要的地址类型。通过检查一个地址的前几位,IP 软件很快就可以确定地址的类别及其结构。I
25、P 遵循以下规则确定地址的类别:如果 IP 地址的第一位是,它就是类网络的地址。类地址的第位标识其地址类别,接着的位标识其网络。最后的位标识主机。类网络的编号小于128,但每个类网络可以包含数百万台主机。如果该地址的前位是,它就是类网络地址。在类地址中,前位标识类,接着的位标识网络,最后位标识主机。可以有数千个类网络编号,每个类网络可以包含数千台主机。如果该地址的前位是,它就是类网络地址。在类地址中,前位是类标识符,接着的位是网络地址,最后位标识主机。有数百万个类网络编号,而每个类网络包括的主机数量少于台。如果该地址的前位是,它就是一个专门保留的地址。这类地址有时称为类地址,实际上它并不指向特
26、定的网络,目前这一范围内的编号是赋予广播地址。广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机,这与共享同一网络的一组计算机恰好相反。IP 地址通常写成用点(英语句号)分隔开的个十进制数,其中每一部分的数字值在到(一个字节可表达的十进制值)之间。因为标识类的位和网络地址的位是连在一起的,因而我们可以把 IP 地址看成是由所有网络地址字节和所有主机地址字节两部分组成。第个字节的值的含义是:如果值小于,则表示类地址;其第个字节就是网络号,紧接着的三个字节是主机地址。值在到之间,表示类地址;前二个字节标识网络,后二个字节标识主机。值在到之间,表示类地址;前三个字节是网络地址,最后一个字
27、节是主机号。值大于,表示该地址是保留的,我们可以不管保留的地址。并不是所有的网络地址或主机地址都是可用的:第一个字节大于的地址都是保留的。在类地址中,由两个地址和也是留作专用地址,网络是“缺省路由”,网络是“回送地址”。缺省路由用来简化 IP 必须处理的路由选择信息,回送地址由于允许本地主机与远程主机以同样的方式寻址而简化了网络应用程序。在配置主机时使用这些专用网络地址。在所有的网络中主机号和也是保留的。所有主机位都置成的 IP 地址用以标识网络本身。主机号为的 IP 地址是广播地址,即发送到该地址的数据传送到网络上的每一台主机。由于合法 IP 地址的缺乏,设置了一定的保留地址,这些地址将决不
28、被正式的分配给任何人,而且决不应该被使用在自己网络的外部机构。(即 Internet 网上)如:类网类网.直到.类网.直到.一般将 IP 地址称为主机地址,但实际上 IP 地址是赋予网络接口的并不是赋予计算机系统的。IP 使用地址的网络部分为数据报在网络之间选择路由。当数据报到达目的网络是它的全部地址(包括主机信息)用来进行最终的传输。子网将主机地址位用作附加的网络地址位,就可以局部地修改地址的标准结构。其实质就是移动网络地址位和主机地址之间的“分解线”,从而创建附加的网络,但却减少了每个网络的主机数量。这种新分配的网络位就可在一个大型网络内定义一个网络,称为子网(subnet)。为了解决柘朴
29、上的或组织上的问题,一些组织往往决定组建子网。构建子网可以分散对主机寻址的管理。建立子网还可解决硬件差异和距离限制问题。IP 路由器可以将不同的物理网络连接在一起,但这只有当每个物理网络具有唯一的网络地址时才可以。构建子网则将一个单独的网络地址分成很多唯一的子网地址,因此每个物理网络可以具有自己唯一的地址。在 IP 地址上使用一个位掩码(即子网掩码subnet mask)就可以定义一个子网。如果掩码位是,那么其地址中等价位就解释成一个网络位;如果掩码位是,则该位就属于主机地址部分。子网只能在本地识别,对于 Internet 的其它部分,其地址仍然被看成是标准的 IP 地址。例如,与标准类地址相
30、关的子网掩码是 255.255.0.0。最通用的子网掩码是通过一个附加字节来扩充一个类地址的网络部分,这样一来该子网就是 255.255.255.0。前三个字节的所有位都是,而最后一个字节的所有位都是;前二个字节定义类网络,第三个字节定义子网地址,第四个字节定义子网上的主机。很多网络管理员喜欢使用面向字节的掩码,因为易于阅读和理解。然而,不要求都以字节边界来定义子网,子网掩码可以面向位,从而就能适用于任何地址类。例如,利用掩码 255.255.255.192,一个小型单位就可将类地址分成个子网。这个掩码将一个类地址的第四个字节的前二个位定义为该地址的子网部分。同一个掩码如果用于类地址,就可构建
31、多个子网,因为有个位,包括前三个字节的全部和第四字节的位,都用来定义子网。如下表可说明了基于不同网络地址的各种子网掩码的作用。子网掩码的作用IP 地址 子网掩码 说 明128.66.12.1 255.255.255.0 子网 128.66.12.0 上的主机 1130.97.16.132 255.255.255.192 子网 130.97.16.128 上的主机 4192.178.16.66 255.255.255.192. 子网 192.178.16.64 上的主机132.90.132.5 255.255.240.0 子网 132.90.128.0 上的主机.518.20.16.91 255
32、.255.0.0 子网 18.20.0.0 上的主机 16.91Internet 的路由结构现在的路由选择模型是以各自治系统的相互平等为基础的,称为路由域(Routing domain)。注:自治系统 AS,是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。路由域使用边界网关协议(BGP)或外部网关协议(EGP)来与其它域交换路由信息,每个路由域各自处理从其它域接收来的信息。这种结构的特点是扩充性较好。如图:用三个相交的圆表示这一模型,每个圆就是一个路由域,其重叠区就是边界区,路由信息就在这里共享。这些域共享路由信息,但并不依靠任何一个系统去提供所有的路由选择信息。无论路由信息是如何
33、得来的,它最终总会到达你的本地网关,IP 以此来决定路由。路由选择域路由器TCP/IP 的开放性为各网络间的信息集成提供了可能。但对于采用不同技术的各个网络,如何在硬件上将它们连接起来是实现 TCP/IP 的基本保障。路由器在网络互联上起着至关重要的作用,通过路由器设备可以把不同的网络连接成一个范围更大的网络。路由器是一种比较成熟的网络互联技术。它不仅能够很好的实现路由、协议转换功能,而且在网络安全、网络管理方面也起者重要的作用。主要功能:(1)连接不同的网络(2)协议转换和路由选择功能(3)网络管理和安全路由表(Routing Table)网关要在网络之间为数据选择路由,其它所有的网络设备、
34、主机也和网关一样必须作出路由选择的决定。主机选择路由的策略是:如果目的主机在本地网络上,就将数据传给目的主机。如果目的主机在远程网络上,就将数据转发给本地网关。IP 模块根据 IP 地址的高位来确定目的 IP 地址的网络部分。如果目的网络是本地网络,就可在目的地址上使用本地子网掩码。确定目的网络后,IP 模块就在本地路由表中查找该网络,各分组报文就流向路由表所指定的目的地。路由表可由系统管理员或路由协议建立。IP 的路由选择策略只是简单的查表过程。利用 netstat nr 命令可显示路由表的内容。 例如:mail $ netstat nrRouting tablesDestination G
35、ateway Flags Refcnt Use Interface127.0.0.1 127.0.0.1 UH 1 298 lo0default 128.66.12.1 UG 2 50360 le0128.66.12.0 128.66.12.2 U 40 111379 le0128.66.2.0 128.66.12.3 UG 4 1179 le0表的第一项是用于本地主机的回送路由,这一项在每个主机路由表中都有。H 表示为主机;G 表示为网关default-缺省路由。该项所指定的网关为缺省网关,即该表中没有目的网络的专有落由的,就使用此缺省网关。注:路由表中的所有网关都必须在与本地系统直接连接的
36、网络上。路由表并不包含端对端路由,一个路由只能沿着到达目的网络的路径指向下一个网关,称为下一跳。主机依靠本地网关传输数据,而网关依靠其它网关传输数据。地址转换IP 地址和路由表将数据报引向一个特定的物理网络,但是当数据通过网络传输时,必须遵从该网络使用的物理层协议。作为 TCP/IP 网络底层的物理网并不懂得 IP 寻址,它有它自己的寻址方案,有多少种物理网络就有多少种寻址方案。网络访问协议的一个任务就是将 IP 地址映射为物理网络地址。IP 地址与以太网地址之间的关系就是这种网络访问层功能的最普通例子,执行这一功能的协议是地址转换协议(ARP )。ARP 软件维护着一张 IP 地址和以太网地
37、址的转换表,它是动态构建的。当 ARP 接收到转换 IP 地址的请求时,就它的表中查看该地址,如果找到该地址,就将其以太网地址返回给请求软件;如果在该表中找不到该地址,APR 就发出一个广播分组报文给以太网上的每人主机。该分组报文内包含着需要转换成以太网地址的 IP 地址,如果一个接收主机识别出该 IP 地址就是它自己,便立即将它的以太网地址发回请求主机,这一响应内容随即存储在该 APR 表中。Arp 命令可显示 arp 表的内容。例如:almond% arp peanutpeanut (128.66.12.2) at 8:0:20:0:e:c8显示主机 peanut 的物理地址。利用 arp
38、 a 命令可显示整个表的内容。注:表是由协议自动建立的。协议、端口和软插口一旦数据在网络上传送并到达一台特定的主机,就必须将它交给相应的用户或进程。由于数据在 TCP/IP 的各层之间上下传送,因此就需要一个机构能将数据传送到每一层的相应协议。系统必须能够将来自多个应用程序的数据组合到少数几个传输协议中,再从这些传输协议传给网间协议。为此,IP 使用协议号去标识传输协议,而传输协议使用端口号去标识应用程序。协议号协议号是数据报报头的第三个字中的一个字节,其值标识 IP 上必须传送数据的那一层协议。在 UNIX 系统中,协议号定义在/etc/protocols 文件中,它是一个简单的表格,含有协
39、议名及其协议号。例如:cat /etc/protocolsip 0 IPicmp 1 ICMPtcp 3 TCPudp 17 UDP这个表的含义是,当一个数据报到达,并且它的目的地址与本地 IP 地址符合时,IP层就知道必须将该数据报传送到它上面的一个传输层协议。为了决定哪个协议接收该数据报,IP 就查看该数据报的协议号。利用此表可以看出,如果协议号是,IP 就将该数据报传送给 TCP;如果是,IP 就将它传送给 UDP。端口号IP 将进来的数据发送给传输协议后,该传输协议就将它传送到相应的应用程序进程中。应用程序的进程(又称网络服务)是用端口号标识的,它是一个位的值。标识数据发送进程的“源端
40、口号”和标识数据接收进程的“目的端口号”都包含在每个 TCP 段和UDP 分组的第一个报头字中。在 UNIX 系统中,端口号在 /etc/services 文件中定义。网络应用程序的数量要比该表中所示的传输层协议数多得多。低于和端口号是留给“知名服务”的(如同 FTP 和TELNET 一样),从到的端口号用于 UNIX 的专用服务。下面列出了部分/etc/services 文件。Peanut% cat /etc/servicesecho 7/udpecho 7/tcpsystat 11/tcpnetstat 15/tcpftp-data 20/tcp将该表与/etc/protocols 表结合在一起,就可提供将数据传送到相应的应用程序所需的全部信息。数据报根据其报头第个字内的目的地址抵达其目的地,IP 使用该数据报报头第个字内的协议号将数据传输给适当的传输层协议。到达该传输协议的数据的第一个字内含有目的端口号,它告诉传输协议将数据传送到特定的应用程序。软插口(ocket)一个地址和一个端口号的组合称为一个“软插口(socket)“,一个软插口可以唯一地标识整个 Internet 中的一个网络进程。 “软插口” 是地址和端口号的组合,一对软插口(一个用于接收主机,另一个用于发送主机)可定义面向连接协议(如)的一次连接。