细节就是一切。
——Maezumi本章内容
什么是TCP/IP
TCP/IP的发展历史
传输服务
网络服务
支持协议和服务
TCP/IP的发展前景Windows Sockets与它的前身Berkeley Sockets一样,都是独立于协议的。Windows Sockets API(WSA)的通用设计允许访问大多数网络协议的服务。Windows Sockets规范的1.1版主要针对TCP/IP协议簇,但是Windows NT和Windows 95的Sockets DLL也同时支持AppleTalk和SPX/IPX协议。
由于Windows Sockets规范的1.1版主要针对TCP/IP,也由于目前大多数WinSock应用程序采用因特网协议,本章将用全部篇幅介绍构成TCP/IP簇的那些协议,将对TCP/IP协议所提供的服务给予重点关注。对有助于读者设计Windows Sockets应用的协议,我们将展开充分地讲解,介绍TCP/IP协议有哪些功能,但不涉及其怎样实现这些功能。
Windows Sockets向你屏蔽了下层的协议,因此,你不必与下层协议打交道。只有需要使用一些特殊的协议功能或者碰到网络系统的问题时,才需要了解这些低层的细节。出于这个考虑,我们要到第13章中才讨论协议的工作机制(附录B中也给出了说明)。
3.1 什么是TCP/IP
TCP/IP是“传输控制协议/因特网协议”的缩略语,指的是一些主要协议中的两个协议,这些协议也被称为因特网协议簇。TCP/IP协议可为任意的计算机系统提供网络连接,其连接可以跨越不同的网络介质、应对可能的不利条件。
因特网的一个基本设计目标是允许广泛的网络特质,接纳诸如带宽、延时、丢包、包失序以及数据包的最大长度方面的不同。另一个目标是健壮性,能应对单个网络、网关和主机的失效,并在这种情况下仍能利用任何可用的带宽。其最终目标是实现全面的“开放系统互连”:一个因特网主机必须能够跨越不同的因特网路径,与任何其他因特网主机稳定地、有效地互操作。
TCP/IP的强大之处在于其兼容性,它能够兼容几乎所有的低层网络架构。由于其协议都基于开放标准,这一事实更巩固了它的地位。
因特网协议所提供的服务与OSI网络参考模型的会话层、表示层、传输层和网络层相当。正如我们在第2章描述的那样,在异构网络中的任何位置,网络层和传输层对数据编址并发送数据(可靠的或不可靠的),会话层同步两端应用程序之间的通信,表示层为应用程序准备信息。
图3-1展示了TCP/IP协议簇与OSI网络参考模型之间的相对关系,及其与Windows Sockets模型的对比。从图中可以看到,TCP和IP并不是TCP/IP簇中仅有的两个协议。同时还应注意到,数据链路层和物理层不是因特网协议簇的组成部分。正是因为独立于低层,使得TCP/IP得以在任何网络驱动和网络介质(以太网、令牌环网、FDDI等)上运行。应用层也不包含在TCP/IP簇中,因为网络应用和操作系统平台之间的用户接口变化很大。
|
(点击查看大图)图3-1 TCP/IP协议簇与OSI网络参考模型和Windows Sockets模型的比较 |
下面是图3-1中提到的每个协议所提供的服务:
会话层和表示层:
文件传输协议(File Transfer Protocol,FTP):文件传输。
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):电子邮件服务。
远程登录(Telnet):用于远程登录的终端协商。
域名服务(Domain Name Services,DNS):主机名到IP地址的映射。
传输层:
用户数据报协议(User Datagram Protocol,UDP):无连接数据传输。
传输控制协议(Transmission Control protocol,TCP):可靠的数据传输。
网络层:
因特网协议(Internet Protocol,IP):独立于硬件的寻址、路由、分片和数据包重组。
地址解析协议(Address Resolution Protocol,ARP):IP地址到硬件地址的映射。
因特网控制消息协议(Internet Control Message Protocol,ICMP):错误和控制消息。
诸如Telnet、FTP和SMTP一类的应用(上层)协议,对于TCP/IP协议簇所提供的互操作能力是很重要的,它们为一般的网络服务提供了公共的应用协议,还可以列举很多其他的协议(例如,archie、gopher、talk、veronica和wais),但是前述3种协议向来被认为是TCP/IP的组成部分,因为它们提供了最基本的网络服务:电子邮件、文件传输和远程登录。
WinSock API提供了对传输层和网络层协议服务(即网络系统)的访问。高层协议不能通过WinSock API访问,而是必须借助WinSock应用程序来实现。域名服务(DNS)协议是一个值得注意的特例,DNS是一个“支持协议”,它使应用程序能够查找主机名以及主机地址(如果一个应用程序知道了主机名,那么就可以查找到地址;反之亦然)。这种便利的(如果不是必需的)服务可以通过WinSock API获得。本章后面将会详细地描述这个服务,并在第8章中讲解如何访问这些服务(第8章中讲解诸如gethostbyname()和WSAAsyncGetHostByName()等WinSock函数)。
我们已经在第2章的应用程序示例中了解了SMTP的作用,我们还要在本章稍后以及其他示例程序中介绍FTP和Telnet,不过我们不在这里讨论这些应用协议,而是把重点放在传输层和网络层协议提供的服务上,这些才是因特网系统的精髓所在。
【责任编辑: book TEL:(010)68476606】
|