第1章 概 述

1.1 引言

很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 T C P / I P协议
族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想。
T C P / I P起源于6 0年代末美国政府资助的一个分组交换网络研究项目,到 9 0年代已发展成为计
算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现
可以不用花钱或花很少的钱就可以公开地得到。它成为被称作“全球互联网”或“因特网
( I n t e r n e t )”的基础,该广域网(WA N)已包含超过1 0 0万台遍布世界各地的计算机。
本章主要对T C P / I P协议族进行概述,其目的是为本书其余章节提供充分的背景知识。如
果读者要从历史的角度了解有关T C P / I P的早期发展情况,请参考文献[ Lynch 1993]。
1.2 分层
网络协议通常分不同层次进行开发,每一层分别
负责不同的通信功能。一个协议族,比如 T C P / I P,是一组不同层次上的多个协议的组合。 T C P / I P通常被认为是一个四层协议系统,如图1 - 1所示。
应用层 Telnet、FTP和e-mail等
运输层 TCP和UDP
网络层 IP、ICMP和IGMP
链路层 设备驱动程序及接口卡

每一层负责不同的功能:

  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 简单网络管理协议。
    另外还有许多其他应用,在后面章节中将介绍其中的一部分。
    假设在一个局域网( L A N)如以太网中有两台主机,二者都运行 F T P协议,图1 - 2列出了该过程所涉及到的所有协议。

图1-2 局域网上运行FTP的两台主机这里,我们列举了一个F T P客户程序和另一个F T P服务器程序。大多数的网络应用程序都被设计成客户—服务器模式。服务器为客户提供某种服务,在本例中就是访问服务器所在主机上的文件。在远程登录应用程序 Te l n e t中,为客户提供的服务是登录到服务器主机上。在同一层上,双方都有对应的一个或多个协议进行通信。例如,某个协议允许 T C P层进行通信,而另一个协议则允许两个 I P层进行通信。
在图1 - 2的右边,我们注意到应用程序通常是一个用户进程,而下三层则一般在(操作系统)内核中执行。尽管这不是必需的,但通常都是这样处理的,例如 U N I X操作系统。
在图1 - 2中,顶层与下三层之间还有另一个关键的不同之处。应用层关心的是应用程序的
细节,而不是数据在网络中的传输活动。下三层对应用程序一无所知,但它们要处理所有的
通信细节。在图1 - 2中列举了四种不同层次上的协议。 F T P是一种应用层协议, T C P是一种运输层协议,I P是一种网络层协议,而以太网协议则应用于链路层上。 T C P / I P协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为 T C P / I P,但T C P和I P只是其中的两种协议而已(该协议族的另一个名字是 I n t e r n e t协议族(Internet Protocol Suite))
网络接口层和应用层的目的是很显然的 — 前者处理有关通信媒介的细节(以太网、令牌环网等),而后者处理某个特定的用户应用程序( F T P、Te l n e t等)。但是,从表面上看,网络层和运输层之间的区别不那么明显。为什么要把它们划分成两个不的层次呢?为了理解这一点,我们必须把视野从单个网络扩展到一组网络。
在8 0年代,网络不断增长的原因之一是大家都意识到只有一台孤立的计算机构成的“孤岛”没有太大意义,于是就把这些孤立的系统组在一起形成网络。随着这样的发展,到了 9 0年代,我们又逐渐认识到这种由单个网络构成的新的更大的“岛屿”同样没有太大的意义。
于是,人们又把多个网络连在一起形成一个网络的网络,或称作互连网 ( i n t e r n e t )。一个互连网就是一组通过相同协议族互连在一起的网络。构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接和F D D I(光纤分布式数据接口)等等。
这些盒子也称作I P路由器(IP Router),但我们这里使用路由器( R o u t e r )这个术语。从历史上说,这些盒子称作网关( g a t e w a y),在很多T C P / I P文献中都使用这个术语。现在网关这个术语只用来表示应用层网关:一个连接两种不同协议族的进程(例如TCP/IP和IBM的SNA),它为某个特定的应用程序服务(常常是电子邮件或文件传输)。图1 - 3是一个包含两个网络的互连网:一个以太网和一个令牌环网,通过一个路由器互相连接。尽管这里是两台主机通过路由器进行通信,实际上以太网中的任何主机都可以与令牌环网中的任何主机进行通信。
在图 1 - 3中,我们可以划分出端系统( End system)(两边的两台主机)和中间系统(Intermediate system)(中间的路由器)。应用层和运输层使用端到端( En d - t o - e n d)协议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳( Ho p - b y - h o p)协议,两个端系统和每个中间系统都要使用它。

在T C P / I P协议族中,网络层 I P提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面, T C P在不可靠的I P层上提供了一个可靠的运输层。为了提供这种可靠的服务, T C P采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。
从定义上看,一个路由器具有两个或多个网络接口层(因为它连接了两个或多个网络)。
任何具有多个接口的系统,英文都称作是多接口的( m u l t i h o m e d )。一个主机也可以有多个接口,但一般不称作路由器 , 除非它的功能只是单纯地把分组从一个接口传送到另一个接口。同样,路由器并不一定指那种在互联网中用来转发分组的特殊硬件盒。大多数的 T C P / I P实现也允许一个多接口主机来担当路由器的功能,但是主机为此必须进行特殊的配置。在这种情况下,我们既可以称该系统为主机(当它运行某一应用程序时,如 F T P或Te l n e t),也可以称之为路由器(当它把分组从一个网络转发到另一个网络时)。在不同的场合下使用不同的术语。
互联网的目的之一是在应用程序中隐藏所有的物理细节。虽然这一点在图 1 - 3由两个网络组成的互联网中并不很明显,但是应用层不能关心(也不关心)一台主机是在以太网上,而另一台主机是在令牌环网上,它们通过路由器进行互连。随着增加不同类型的物理网络,可能会有2 0个路由器,但应用层仍然是一样的。物理细节的隐藏使得互联网功能非常强大也非常有用。连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网( L A N)组合在一起,这样上层来说就好像是一个局域网。TCP /IP倾向于使用路由器而不是网桥来连接网络,因此我们将着重介绍路由器。文献[Perlman 1992]的第1 2章对路由器和网桥进行了比较。

1.3 TCP/IP的分层
在T C P / I P协议族中,有很多种协议。图1 - 4给出了本书将要讨论的其他协议。
图1-4 TCP/IP协议族中不同层次的协议

T C P和U D P是两种最为著名的运输层协议,二者都使用 I P作为网络层协议。虽然T C P使用不可靠的I P服务,但它却提供一种可靠的运输层服务。本书第 1 7~2 2章将详细讨论T C P的内部操作细节。然后,我们将介绍一些 T C P的应用,如第 2 6章中的Te l n e t和R l o g i n、第2 7章中的F T P以及第2 8章中的S M T P等。这些应用通常都是用户进程。
U D P为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。但是与T C P不同的是,U D P是不可靠的,它不能保证数据报能安全无误地到达最终目的。本书第 11章将讨论U D P,然后在第1 4章(D N S :域名系统),第1 5章(T F T P:简单文件传送协议),以及第1 6章(BO OTP:引导程序协议)介绍使用U D P的应用程序。S N M P也使用了U D P协议,但是由于它还要处理许多其他的协议,因此本书把它留到第2 5章再进行讨论。
I P是网络层上的主要协议,同时被 T C P和U D P使用。T C P和U D P的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。在图1 - 4中,我们给出了一个直接访问I P的应用程序。这是很少见的,但也是可能的(一些较老的选路协议就是以这种方式来实现的。当然新的运输层协议也有可能使用这种方式)。第3章主要讨论I P协议,但是为了使内容更加有针对性,一些细节将留在后面的章节中进行讨论。第9章和第1 0章讨论I P如何进行选路。
I C M P是I P协议的附属协议。I P层用它来与其他主机或路由器交换错误报文和其他重要信息。第6章对I C M P的有关细节进行讨论。尽管I C M P主要被I P使用,但应用程序也有可能访问它。我们将分析两个流行的诊断工具,P i n g和Tr a c e r o u t e(第7章和第8章),它们都使用了I C M P。
I G M P是I n t e r n e t组管理协议。它用来把一个U D P数据报多播到多个主机。我们在第 1 2章中描述广播(把一个 U D P数据报发送到某个指定网络上的所有主机)和多播的一般特性,然后第1 3章中对I G M P协议本身进行描述。
A R P(地址解析协议)和R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换 I P层和网络接口层使用的地址。我们分别在第 4章和第5章对这两种协议进行分析和介绍。

1.4 互联网的地址
互联网上的每个接口必须有一个唯一的 I n t e r n e t地址(也称作I P地址)。I P地址长32 bit。I n t e r n e t地址并不采用平面形式的地址空间,如 1、2、3等。I P地址具有一定的结构,五类不同的互联网地址格式如图1 - 5所示。

这些3 2位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法(Dotted decimal notation)”。例如,作者的系统就是一个B类地址,它表示为:1 4 0 . 2 5 2 . 1 3 . 3 3。

区分各类地址的最简单方法是看它的第一个十进制整数。图1 - 6列出了各类地址的起止范围,其中第一个十进制整数用加黑字体表示。需要再次指出的是,多接口主机具有多个 I P地址,其中每个接口都对应一个I P地址。由于互联网上的每个接口必须有一个唯一的 I P地址,因此必须要有一个管理机构为接入互联网的网络分配I P地址。这个管理机构就是互联网络信息中心( Internet Network InformationC e n t r e),称作I n t e r N I C。I n t e r N I C只分配网络号。主机号的分配由系统管理员来负责。
I n t e r n e t注册服务( I P地址和D N S域名)过去由N I C来负责,其网络地址是n i c . d d n . m i l。1 9 9 3年4月1日,I n t e r N I C成立。现在,N I C只负责处理国防数据网的注册请求,所有其他的I n t e r n e t用户注册请求均由I n t e r N I C负责处理,其网址是:r s . i n t e r n i c . n e t。事实上I n t e r N I C由三部分组成:注册服务(r s . i n t e r n i c . n e t),目录和数据库服务(d s . i n t e r n i c . n e t),以及信息服务(i s . i n t e r n i c . n e t)。有关I n t e r N I C的其他信息参见习题1 . 8。
有三类I P地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。第1 2章和第1 3章将分别讨论广播和多播的更多细节。
在3 . 4节中,我们在介绍I P选路以后将进一步介绍子网的概念。图 3 - 9给出了几个特殊的I P地址:主机号和网络号为全0或全1。

1.5 域名系统
尽管通过I P地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还是主机名。在T C P / I P领域中,域名系统( D N S)是一个分布的数据库,由它来提供 I P地址和主机名之间的映射信息。我们在第 1 4章将详细讨论D N S。
现在,我们必须理解,任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的I P地址。类似地,系统还提供一个逆函数 — 给定主机的I P地址,查看它所对应的主机名。大多数使用主机名作为参数的应用程序也可以把 I P地址作为参数。例如,在第 4章中当我们用Te l n e t进行远程登录时,既可以指定一个主机名,也可以指定一个 I P地址。

1.6 封装
当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部
信息),该过程如图 1 - 7所示。T C P传给I P的数据单元称作 T C P报文段或简称为 T CP段(T C P s e g m e n t)。I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比特流称作帧(Fr a m e )。图1 - 7中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。在后面的章节中我们将详细讨论这些帧头的具体含义。
以太网数据帧的物理特性是其长度必须在 4 6~1 5 0 0字节之间。我们将在 4 . 5节遇到最小长度的数据帧,在2 . 8节中遇到最大长度的数据帧。所有的I n t e r n e t标准和大多数有关T C P / I P的书都使用o c t e t这个术语来表示字节。使用这个过分雕琢的术语是有历史原因的,因为T C P / I P的很多工作都是在D E C - 1 0系统上进行的,但是它并不使用8 bit的字节。由于现在几乎所有的计算机系统都采用8 bit的字节,因此我们在本书中使用字节(byte)这个术语。更准确地说,图1 - 7中I P和网络接口层之间传送的数据单元应该是分组( p a c k e t)。分组既可以是一个I P数据报,也可以是I P数据报的一个片(f r a g m e n t)。我们将在11 . 5节讨论IP数据报分片的详细情况。

U D P数据与T C P数据基本一致。唯一的不同是 U D P传给I P的信息单元称作 U D P数据报(UDP datagram),而且U D P的首部长为8字节。回想1 . 3节中的图1 - 4,由于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的帧类型域。

1.7 分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各
层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的
上层协议。这个过程称作分用(D e m u l t i p l e x i n g),图1 - 8显示了该过程是如何发生的。

为协议I C M P和I G M P定位一直是一件很棘手的事情。在图1 - 4中,把它们与I P放在同一层上,那是因为事实上它们是I P的附属协议。但是在这里,我们又把它们放在I P层的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。对于A R P和R A R P,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程序的上方,这是因为它们和I P数据报一样,都有各自的以太网数据帧类型。但在图2 - 4中,我们又把A R P作为以太网设备驱动程序的一部分,放在 I P层的下面,其原因在逻辑上是合理的。这些分层协议盒并不都是完美的。当进一步描述T C P的细节时,我们将看到协议确实是通过目的端口号、源 I P地址和源端口号进行解包的。

1.8 客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服
务器为客户提供一些特定的服务。可以将这种服务分为两种类型:重复型或并发型。重复型服务器通过以下步骤进行交互:
I1. 等待一个客户请求的到来。
I2. 处理客户请求。
I3. 发送响应给发送请求的客户。
I4. 返回I 1步。
重复型服务器主要的问题发生在I 2状态。在这个时候,它不能为其他客户机提供服务。
并发型服务器采用以下步骤:
C1. 等待一个客户请求的到来。
C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的任务
或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器
对客户的全部请求进行处理。处理结束后,终止这个新服务器。
C3. 返回C 1步。
并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,
每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户
服务。
对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨
别自己是与一个重复型服务器或并发型服务器进行对话。
一般来说,T C P服务器是并发的,而 U D P服务器是重复的,但也存在一些例外。我们将在11 . 1 2节对U D P对其服务器产生的影响进行详细讨论,并在 1 8 . 11节对T C P对其服务器的影响进行讨论。

1.9 端口号
前面已经指出过,T C P和U D P采用16 bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?
服务器一般都是通过知名端口号来识别的。例如,对于每个 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服务 — 也就是说,提供一些只有U n i x系统才有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。
I n t e r n e t扩展服务与U n i x特定服务之间的一个差别就是Te l n e t和R l o g i n。它们二者都允许通过计算机网络登录到其他主机上。Te l n e t是采用端口号为2 3的T C P / I P标准且几乎可以在所有操作系统上进行实现。相反,R l o g i n最开始时只是为U n i x系统设计的(尽管许多非Unix系统现在也提供该服务),因此在80年代初,它的有名端口号为513。客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。大多数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上并不常用的服务)。我们可以在后面看见许多这样的给临时端口分配端口号的例子。Solaris 2.2是一个很有名的例外。通常T C P和U D P的缺省临端口号从3 2 7 6 8开始。在E.4节中,我们将详细描述系统管理员如何对配置选项进行修改以改变这些缺省项。
大多数U n i x系统的文件/e t c / s e r v i c e s都包含了人们熟知的端口号。为了找到 Te l n e t服务器和域名系统的端口号,可以运行以下语句:grep telnet /etc/services

保留端口号,U n i x系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。这些端口号介于1~1 0 2 3之间,一些应用程序(如有名的 R l o g i n,2 6 . 2节)将它作为客户与服务器之间身份认证的一部分。

1.10 标准化过程
究竟是谁控制着 T C P / I P协议族,又是谁在定义新的标准以及其他类似的事情?事实上,有四个小组在负责I n t e r n e t技术。

  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。文献[Crocker 1993]提供了关于I n t e r n e t内部标准化进程更为详细的信息,同时还介绍了它的早期历史。
    1.11 RFC
    所有关于I n t e r n e t的正式标准都以R F C(Request for Comment)文档出版。另外,大量的R F C并不是正式的标准,出版的目的只是为了提供信息。 R F C的篇幅从1页到2 0 0页不等。每一项都用一个数字来标识,如RFC 11 2 2,数字越大说明R F C的内容越新。
    所有的R F C都可以通过电子邮件或用 F T P从I n t e r n e t上免费获取。如果发送下面这份电子邮件,就会收到一份获取R F C的方法清单:
    To: rfc-info@ISI.EDU
    Subject: getting rfcs
    help: ways_to_get_rfcs
    最新的R F C索引总是搜索信息的起点。这个索引列出了 R F C被替换或局部更新的时间。下面是一些重要的R F C文档:
    1 ) 赋值R F C(Assigned Numbers RFC)列出了所有I n t e r n e t协议中使用的数字和常数。至
    本书出版时为止,最新 R F C的编号是 1340 [Reynolds和Postel 1992]。所有著名的
    I n t e r n e t端口号都列在这里。
    当这个R F C被更新时(通常每年至少更新一次),索引清单会列出RFC 1340被替换的时间。
  5. I n t e r n e t正式协议标准,目前是RFC 1600[Postel 1994]。这个R F C描述了各种I n t e r n e t协
    议的标准化现状。每种协议都处于下面几种标准化状态之一:标准、草案标准、提议
    标准、实验标准、信息标准和历史标准。另外,对每种协议都有一个要求的层次、必
    需的、建议的、可选择的、限制使用的或者不推荐的。
    与赋值R F C一样,这个R F C也定期更新。请随时查看最新版本。
    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文档作了大量的纠正和解释。如果要查看有关协议更详细的细节内容,它们通常是一个入口点。它们列出了协
    议中关于“必须”、“应该”、“可以”、“不应该”或者“不能”等特性及其实现细节。文献[Borman 1993b]提供了有关这两个R F C的实用内容。RFC 1127[Braden 1989c]对工作小组开发主机需求R F C过程中的讨论内容和结论进行了非正式的总结。
  6. 路由器需求R F C,目前正式版是RFC 1009[Braden and Postel 1987],但一个新版已接近
    完成[Almquist 1993]。它与主机需求R F C类似,但是只单独描述了路由器的需求。
    1.12 标准的简单服务
    有一些标准的简单服务几乎每种实现都要提供。在本书中我们将使用其中的一些服务程序,而客户程序通常选择 Te l n e t。图1 - 9描述了这些服务。从该图可以看出,当使用 T C P和U D P提供相同的服务时,一般选择相同的端口号。

如果仔细检查这些标准的简单服务以及其他标准的 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中的奇数。

1.13 互联网
在图1 - 3中,我们列举了一个由两个网络组成的互联网 — 一个以太网和一个令牌环网。在1 . 4节和1 . 9节中,我们讨论了世界范围内的互联网 — I n t e r n e t,以及集中分配I P地址的需要(I n t e r N I C),还讨论了知名端口号( I A N A)。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互相通信的所有主机集合(超过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。

1.14 实现
既成事实标准的 T C P / I P软件实现来自于位于伯克利的加利福尼亚大学的计算机系统研究小组。从历史上看,软件是随同4.x BSD系统(Berkeley SoftwareD i s t r i b u t i o n)的网络版一起发布的。它的源代码是许多其他实现的基础。图1 - 1 0列举了各种 B S D版本发布的时间,并标注了重要的 T C P / I P特性。列在左边的B S D网络版,其所有的网络源代码可以公开得到:包括协议本身以及许多应用程序和工具(如Te l n e t和F T P)。在本书中,我们将使用“伯克利派生系统”来指 SunOS 4.x、S V R 4以及AIX 3.2等那些基于伯克利源代码开发的系统。这些系统有很多共同之处,经常包含相同的错误。
起初关于I n t e r n e t的很多研究现在仍然在伯克利系统中应用 — 新的拥塞控制算法( 2 1 . 7节)、多播(1 2 . 4节)、“长肥管道”修改(2 4 . 3节)以及其他类似的研究。
1.15 应用编程接口
使用T C P / I P协议的应用程序通常采用两种应用编程接口( A P I):s o c k e t和T LI(运输层接口:Transport Layer Interface)。前者有时称作“Berkeley socket”,表明它是从伯克利版发展而来的。后者起初是由 AT & T开发的,有时称作X T I(X / O p e n运输层接口),以承认X / O p e n这个自己定义标准的国际计算机生产商所做的工作。 X T I实际上是T L I的一个超集。本书不是一本编程方面的书,但是偶尔会引用一些内容来说明 T C P / I P的特性,不管大多数的A P I(s o c k e t)是否提供它们。所有关于 s o c k e t和T L I的编程细节请参阅文献 [ S t e v e n s1 9 9 0 ]。

1.16 测试网络
图1 - 11是本书中所有的例子运行的测试网络。为阅读时参考方便,该图还复制在本书扉页前的插页中。图1-11 本书中所有例子运行的测试网络,所有的IP地址均从140.252开始编址在这个图中(作者的子网),大多数的例子都运行在下面四个系统中。图中所有的 I P地址属于B类地址,网络号为 1 4 0 . 2 5 2。所有的主机名属于 . t u c . n o a o . e d u这个域(n o a o代表National Optical Astronomy Observatories,t u c代表Tu c s o n)。例如,右下方的系统有一个完整的名字: s v r 4 . t u c . n o a o . e d u,其I P地址是:1 4 0 . 2 5 2 . 1 3 . 3 4。每个方框上方的名称是该主机运行的操作系统。这一组系统和网络上的主机及路由器运行于不同的 T C P / I P实现。需要指出的是,n o a o . e d u这个域中的网络和主机要比图 1 - 11中的多得多。这里列出来的只是本书中将要用到的系统。在3 . 4节中,我们将描述这个网络所用到的子网形式。在 4 . 6节中将介绍s u n与n e t b之间的拨号S L I P的有关细节。2 . 4节将详细讨论S L I P。

1.17 小结
本章快速地浏览了TCP/IP协议族,介绍了在后面的章节中将要详细讨论的许多术语和协议。T C P / I P协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。在T C P / I P中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务,而运输层(T C P和U D P)提供端到端的服务。
一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在 I P层把网络连在一起。第一个字母大写的I n t e r n e t是指分布在世界各地的大型互联网,其中包括 1万多个网络和超过1 0 0万台主机。在一个互联网上,每个接口都用 I P地址来标识,尽管用户习惯使用主机名而不是 I P地址。域名系统为主机名和 I P地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。
点到点是物理拓扑,如光纤,就必须是点到点连接,DDN专线也是,即两头各一个机器中间不能有机器。点到点是网络层的,你传输层只认为我的数据是从a直接到e的,但实际不是这样的,打个比方,传输层好象领导,他发布命令:要干什么什么事,但真正干的不是他,真正干的是员工,也许领导认为很简单一句话就可以干好的事,在员工眼里却是难于登天,手续极其烦琐,所以传输层是发布命令的领导,他说的是命令,也就是最终的目的,所以他只看到最初的地址和最终的地址,既一个任务的两个端点,网络层就相当于员工,领导的任务我要一步一步的作完,先从a到b,在从b到c…,所以他看到的只是整个任务的一个阶段,a到b,b到c…这就是点到点。   端到端是网络连接。网络要通信,必须建立连接,不管有多远,中间有多少机器,都必须在两头(源和目的)间建立连接,一旦连接建立起来,就说已经是端到端连接了,即端到端是逻辑链路,这条路可能经过了很复杂的物理路线,但两端主机不管,只认为是有两端的连接,而且一旦通信完成,这个连接就释放了,物理线路可能又被别的应用用来建立连接了。TCP就是用来建立这种端到端连接的一个具体协议,SPX也是。  
端到端是传输层的,你比如你要将数据从A传送到E,中间可能经过A->B->C->D->E,对于传输层来说他并不知道b,c,d的存在,他只认为我的报文数据是从a直接到e的,这就叫做端到端。  总之,一句话概括就是端到端是由无数的点到点实现和组成的

习题
1.1 请计算最多有多少个A类、B类和C类网络号。
1.2 用匿名F T P(见2 7 . 3节)从主机n i c . m e r i t . e d u上获取文件n s f n e t / s t a t i s t i c s /
h i s t o r y . n e t c o u n t。该文件包含在N S F N E T网络上登记的国内和国外的网络数。画一
坐标系,横坐标代表年,纵坐标代表网络总数的对数值。纵坐标的最大值是习题 1 . 1的结
果。如果数据显示一个明显的趋势,请估计按照当前的编址体制推算,何时会用完所有
的网络地址(3 . 1 0节讨论解决该难题的建议)。
1.3 获取一份主机需求R F C拷贝[Braden 1989a],阅读有关应用于T C P / I P协议族每一层的稳健
性原则。这个原则的参考对象是什么?
1.4 获取一份最新的赋值R F C拷贝。“quote of the day”协议的有名端口号是什么?哪个 R F C
对该协议进行了定义?
1.5 如果你有一个接入T C P / I P互联网的主机帐号,它的主 I P地址是多少?这台主机是否接入
了I n t e r n e t?它是多接口主机吗?
1.6 获取一份RFC 1000的拷贝,了解R F C这个术语从何而来。
1.7 与I n t e r n e t协会联系,i s o c @ i s o c . o r g或者+1 703 648 9888,了解有关加入的情况。
1.8 用匿名F T P从主机i s . i n t e r n i c . n e t处获取文件a b o u t - i n t e r n i c / i n f o r m a t i o n -
a b o u t - t h e - i n t e r n i c。

TCP/IP 第1章 概 述相关推荐

  1. TCP/IP第三章笔记IP网际协议

    三.IP:网际协议 3.1 引言 ​ IP 是 TCP/IP 协议族中最为核心的协议.所有的 TCP .UDP .ICMP 及 IGMP 数据都以 IP 数据报格式传输.IP提供不可靠.无连接的数据包 ...

  2. TCP/IP协议第一章笔记

    一.概述 1.1引言 TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代已发展成为计算机之间最常应用的组网形式. 1.2分层 网络协议通常分不同层次进行开发,每一层分别负责 ...

  3. TCP/ip协议栈序章

    TCP/IP协议栈 1.概述 ①1960年代,美国国防部组建的军事网络-阿帕网(APRANET ),而TCP/IP协议栈则是运行在阿帕网上的通信协议族: ②需要接入阿帕网联网的设备,都需要安装TCP/ ...

  4. 图解TCP/IP——第三四章笔记

    3.数据链路 3.1 数据链路的作用 数据链路层协议规定了通过信息通信媒介互联的设备之间传输的规范. 物理层的责任:0,1等计算机二进制 -> 电压高低,光的闪灭以及电波强弱. TCP/IP中对 ...

  5. TCP/IP第四章笔记ARP协议

    四.ARP:地址解析协议 4.1 引言 数据链路如以太网或令牌网都有自己的寻址机制(通常48bit的MAC地址),使用数据链路的任何网络都必须遵守.也就是说当一台主机把以太网数据帧发送到同一局域网上的 ...

  6. TCP/IP 第三章

    1,ip协议不可靠.无连接特性介绍 不可靠:计算机A往计算机B发送数据报1,若途径的路由器缓存已满,或者ttl(time to live 生存周期)到了,则路由器直接丢弃数据包1,并产生icmp数据包 ...

  7. 《图解TCP/IP》——第一章 网络基础知识

  8. 《图解TCP/IP》——第一章 网络通讯基础

  9. TCP/IP详解--第一章

    说明:专栏中的内容是<TCP/IP详解>这本书,博主分享在此. 第1章概     述 1.1   引言 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但  TCP/IP协 ...

最新文章

  1. .Net Core下如何管理配置文件
  2. Selector选择器概述||Selector选择器组合使用
  3. 关于程序变式中动态选择的一点说明
  4. SQL Server 2005 SP2发布了,开发人员怎么办?
  5. bzoj 3209: 花神的数论题
  6. HttpClient中转上传文件
  7. 都2021年了,c/c++开发竟然还能继续吃香??
  8. 【转】s3c2440 按键驱动 — 字符设备
  9. 如何保证高可用?java删除文件夹下所有文件,技术详细介绍
  10. 微信 小程序 python 渲染_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
  11. NLP学习—13.Seq2eq在机器翻译中的实战(bleu指标的代码实现)
  12. 集成电路先进制造技术进展与趋势
  13. VS2019+CUDA编程(流程)
  14. 金仓数据库KingbaseES数据库概念(六)--数据库对象管理
  15. 领英常见问题,猎头如何导出Linkedin全球6亿人才资料
  16. 解决Pycharm挂代理后依旧插件下载慢
  17. 石头剪子布(字符串)c语言,石头、剪刀、布程序,C语言模拟
  18. pix2pixHD:High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
  19. 差商matlab编程,Matlab数值计算差商与插值
  20. JavaWeb、前端三剑客

热门文章

  1. 文本语音阅读器——Python简单实现
  2. 因果森林总结:基于树模型的异质因果效应估计
  3. hadoop可以解决什么问题_在家艾灸可以解决这些问题
  4. 小米Recovery线刷精灵 v1.0.0 破解版
  5. S700K提速道岔电路故障的处理方法【铁路信号技术专栏】—转自微信公众号高速铁路信号技术交流
  6. MOS管的工作原理以及设计理念
  7. HDU6669 Game
  8. 在arcengine中实现图片预览
  9. 过完双11,我去闲鱼当二道贩子
  10. win10系统蓝牙耳机的连接与连接后无法听到声音