TCP/IP详解,卷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 通常被认
为是一个四层协议系统,如图 1 - 1 所示。
每一层负责不同的功能:
-
链路层,有时也称作数据链路层或网络接口层,
通常包括操作系统中的设备驱动程序和计算机
中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。 -
网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在
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 实现都会提供下面这些
通用的应用程序:
图 1-1 TCP/IP 协议族的四个层次
应用层
运输层
网络层
链路层 设备驱动程序及接口卡
Telnet、FTP 和 e-mail 等
TCP 和 UDP
IP、ICMP 和 IGMP
• Telnet 远程登录。
• FTP 文件传输协议。
• SMTP 简单邮件传送协议。
• SNMP 简单网络管理协议。
在 8 0 年代,网络不断增长的原因之一是大家都意识到只有一台孤立的计算机构成的“孤
岛”没有太大意义,于是就把这些孤立的系统组在一起形成网络。随着这样的发展,到了 9 0
年代,我们又逐渐认识到这种由单个网络构成的新的更大的“岛屿”同样没有太大的意义。
于是,人们又把多个网络连在一起形成一个网络的网络,或称作互连网 ( i n t e r n e t )。一个互连
网就是一组通过相同协议族互连在一起的网络。
构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用
于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网、令牌环网、
点对点的链接和 F D D I(光纤分布式数据接口)等等
TCP/IP 的分层
互联网的地址
域名系统
尽管通过 I P 地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还
是主机名。在 T C P / I P 领域中,域名系统( D N S)是一个分布的数据库,由它来提供 I P 地址和
主机名之间的映射信息。
现在,我们必须理解,任何应用程序都可以调用一个标准的库函数来查看给定名字的主机
的 I P 地址。类似地,系统还提供一个逆函数 — 给定主机的 I P 地址,查看它所对应的主机名。
大多数使用主机名作为参数的应用程序也可以把 I P 地址作为参数。例如,
封装
当应用程序用 T C P 传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作
一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部
信息),该过程如图 1 - 7 所示。T C P 传给 I P 的数据单元称作 T C P 报文段或简称为 T C P 段(T C P
s e g m e n t)。I P 传给网络接口层的数据单元称作 I P 数据报(IP datagram)。通过以太网传输的比特
流称作帧(Fr a m e )。
分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各
层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的
上层协议。这个过程称作分用(D e m u l t i p l e x i n g),图 1 - 8 显示了该过程是如何发生的。
客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服
务器为客户提供一些特定的服务。
端口号
前面已经指出过,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)
来管理。
标准化过程
究竟是谁控制着 T C P / I P 协议族,又是谁在定义新的标准以及其他类似的事情?事实上,
有四个小组在负责 I n t e r n e t 技术。
- Internet 协会(I S O C,Internet Society)是一个推动、支持和促进 I n t e r n e t 不断增长和发
展的专业组织,它把 I n t e r n e t 作为全球研究通信的基础设施。 - Internet 体系结构委员会(I A B,Internet Architecture Board)是一个技术监督和协调的
机构。它由国际上来自不同专业的 1 5 个志愿者组成,其职能是负责 I n t e r n e t 标准的最后编辑和
技术审核。I A B 隶属于 I S O C。 - 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)。 - 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 内部标准化进程更为详
细的信息,同时还介绍了它的早期历史。
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 的内容越新。
互联网
在图 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。
实现
既成事实标准的 T C P / I P 软件实现来
自于位于伯克利的加利福尼亚大学的计
算机系统研究小组。从历史上看,软件
是随同 4.x BSD 系统(Berkeley Software
D i s t r i b u t i o n)的网络版一起发布的。它
的源代码是许多其他实现的基础
应用编程接口
使用 T C P / I P 协议的应用程序通常采用两种应用编程接口( A P I):s o c k e t 和 T L I(运输层接
口: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 协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。
在 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 地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服
务器使用知名端口号,而客户使用临时设定的端口号。