荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: qyf (奋起), 信区: Visual
标  题: TCP/IP简介
发信站: 荔园晨风BBS站 (Mon Oct 27 11:00:03 2003), 站内信件

1.1  TCP/IP协议的起源和发展
       微电子技术、计算机技术、通信技术的迅猛发展,促进了计算机网络的实
现和发展。从1969年第一个分组交换计算机网ARPANET 的出现,随着计算机硬件技
术的飞速发展,计算机硬件价格的急骤下降,至今涌现了许多大型计算机网络,如
由美国NFS 支持设计的计算机科学研究网CSNET 、租用9600 波特速率电话线作传
输介质连接400 多所大学的开放式计算机网络BITNET、为全美医学科学家提供研究
合作环境的斯坦福大学医学实验计算机网SUMEX—AIM、英国的联合科学网JANET 、
台湾学术网络TANET 等。计算机网络的发展为提高信息工业的生产力,提供了一种
全社会的、经济的、快速的存取手段。

       这些网络建立的目标是:

1. 网络用户的资源共享(包括软件、硬件、信息等);

2. 强化网络用户间的合作机会;

3. 加速学术研究成果的传播与流通;

4. 提供对网络技术的研究。

       因此,如何实现不同网络及计算机间的互操作成为计算机联网的最关键问
题。经过近二十年的研究,到八十年代末九十年代初,有了肯定的答案:这就是采
用TCP/IP协议。

       TCP/IP协议只是众多比较完善的网络协议中的一种。许多其它网络协议,
如Xerox的XNS,DEC的DECNET和IBM的SNA,虽然功能强大且拥有很多用户,但它们
在异种机互联方面功能很弱。国际标准化组织(ISO)为实现计算机网络互联制定了
开放系统互联标准(OSI),但OSI目前还缺乏足够多的产品支持,而且OSI的许多标
准仍在制定中。于是,在80年代初,人们选择了TCP/IP作为实现异种机互联的工业
标准。这是一个在国际标准ISO/OSI尚未完全被采纳时,用户和厂家共同承认的标
准。

       在TCP/IP协议成为工业标准之前,TCP/IP协议经历了近12年的实际测试。
早在70年代中期,为了支持研究工作,美国国防部高级计划署(以下简称高研署)
就开始着手全美范围内异种计算机间的连接。那时,计算机与计算机间的连接使用
的还只是点对点专用线路,计算机与计算机的通讯规约采用的是各厂家自行定义的
专门协议。针对当时的现状,高研署与许多机构共同讨论制订了开放的通信协议标
准,以满足日益迫切的基于异种操作系统的异种网络之间的通讯连接,即TCP/IP开
放协议。

       1980年,高研署在它的网络上首先采用TCP/IP协议。随后,又命令它所赞
助的ARPANET网上的计算机都必须遵循TCP/IP协议。1983年1月,ARPANET网向
TCP/IP的转换全部结束。美国国防通信署(Defense Communication Agency, DCA)
将ARPANET分为独立的两部分,一部分仍叫ARPANET,用于进一步的研究工作;另一
部分稍大一些,成为著名的MILNET,用于军方的非机密通讯。为推广TCP/IP协议,
 高研署又首先与许多公司达成协议,低价出售TCP/IP的实现,将TCP/IP模块安装
在政府部门通用的计算机操作系统上;并通过资助BBN(Bolt Beranek and Newman,
 Inc.)实现用于其UNIX操作系统的TCP/IP协议;还通过资助加州伯克利大学,将
TCP/IP协议融入UNIX BSD,促成TCP/IP与当时多数大学中流行的UNIX BSD的结合。
对于各厂家开发的TCP/IP产品,由于有国防部通信署检查和验证,保证产品符合标
准,具有良好的互操作性,因而极大地推广了TCP/IP的应用。

       1983年,伯克利推出内含TCP/IP的第一个UNIX BSD版本,满足了当时许多
大学院系间联网的要求,提供了一种联网的手段,以建立各自的局域网。使得未加
入ARPANET网的用户也可以使用TCP/IP。随着安装UNIX BSD操作系统的SUN工作站的
普及,TCP/IP的需求量迅速增加。UNIX BSD 在网络方面的成功有以下几个原因:首
先,除提供标准的TCP/IP应用程序外,它还支持一组网络服务工具程序
(utilities)。这些工具的调用格式与UNIX命令调用格式相似,深受UNIX用户欢迎
。第二,UNIX BSD提供一种供应用程序访问通信协议的操作系统调用:socket(套
接字)。 socket是一种进程间通信机制,是UNIX输入/输出机制的推广。socket的
出现使程序员可以很方便地访问TCP/IP,从事网络的研究开发工作。第三,UNIX
BSD的开发者在其操作系统中还实现了地址解析协议(ARP)。地址解析协议是
TCP/IP协议集中的一个协议,它能将Ethernet地址映射成Internet地址。
Internet是ARPANET、NFSNET、MILNET等一组网络的集合,它用TCP/IP协议集来实
现一个统一可互操作的网络。这样,便使得TCP/IP和Ethernet紧紧地联系在一起。
现在,Ethernet网成为介质访问的工业标准并日渐流行,也使TCP/IP在当今局域网
上得以流行,成为事实上的工业标准。

       随着TCP/IP协议的普及和流行,今天,对TCP/IP的支持又出现了一些新的
趋势,即许多外部设备安装有TCP/IP软件并通过网络直接与UNIX 主机通信,达到
资源共享的目的。这一趋势是用户对网络需求的增加和TCP/IP日益流行的结果。

       人们一致认为,随着计算机网络和通信技术的不断发展,今后的计算机网
络标准必将是ISO/OSI。但由于OSI推出的时间短、产品少,目前还不能取代
TCP/IP。面对这种情况,TCP/IP将会有什么样的发展呢?

       首先,应充实TCP/IP的上层协议,如网络管理、多媒体通信等。与TCP/IP
相比,OSI的应用层协议功能更为丰富,但它还不能覆盖所有应用。因此,可开发
具有TCP/IP自身特点的应用层协议。

       其次,支持TCP/IP向外部设备的扩充,研制在外部设备上容易实现该协议
的方法。

       第三,与OSI结合,有效地利用OSI的服务,为OSI高层协议提供接口,从而
保护现有投资,实现从TCP/IP向OSI的平滑过渡。

       总之,当前采用TCP/IP实现异种机联网没有任何异议。今后,即使OSI取代
TCP/IP,由于TCP/IP庞大的装机量,会迫使厂家提供由TCP/IP向OSI过渡的策略。


1.2  TCP/IP的体系结构和特点
       TCP/IP协议实际上就是在物理网上的一组完整的网络协议。用与OSI同样的
层次模型来描述TCP/IP网络协议组,则TCP是提供传输层服务,而IP是提供网络层
服务。此外,由于TCP/IP是一组协议的代名词,所以它还包含许多别的协议 ,其
层次结构图见图1.1:







       Hardware Interface相当于OSI的第1-2层,表示TCP/IP的实现基础,如
Ethernet、Token Ring、Token Bus等;

       IP、ARP、RARP、ICMP相当于OSI第3层,其中:

IP
 网间协议(Internet Protocol)。负责主机间数据的路由和网络上数据的存储。同
时为ICMP、TCP、UDP提供分组发送服务。用户进程通常不需要涉及这一层。

ARP
 地址解析协议(Address Resolution Protocol)。此协议将网络地址映射到硬件地
址。

RARP
 反向地址解析协议(Reverse Address Resolution Protocol)。此协议将硬件地址
映射到网络地址。

ICMP
 网间报文控制协议(Internet Control Message Protocol)。此协议处理信关和主
机间的差错和传送控制。ICMP报文使用IP数据报进行传送,这些报文通常由
TCP/IP网络软件本身来保证正确性。


       TCP、UDP相当于OSI第4层,其中:

TCP
 传送控制协议(Transmission Control Protocol)。这是一种提供给用户进程的
可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据
可靠传输建立检查。大多数网络用户程序使用TCP。

UDP
 用户数据报协议(User Datagram Protocol)。这是提供给用户进程的无连接协议
,用于传送数据而不执行正确性检查。


FTP、SMTP、TELNET、TFTP、HTTP相当于OSI第5-7层,其中:

FTP
 文件传输协议(File Transfer Protocol)。允许用户以文件操作的方式(文件的增
、删、改、查、传送等)与另一主机相互通信。

SMTP
 简单邮件传送协议(Simple Mail Transfer Protocol)。SMTP协议为系统之间传送
电子邮件。

TELNET
 终端协议(Telnet terminal Protocol)。允许用户以虚终端方式访问远程主机。


HTTP
 超文本传输协议(HyperText Transfer Protocol)。是环球网WWW的基础,它使
丰富多彩的Internet以简单的方式展现给用户。

TFTP
 简单文件传输协议(Trivial File Transfer Protocol)。FTP的一种简化版本。


       TCP/IP协议的核心部分是传输层协议(TCP,UDP )、网络层协议(IP)和
物理接口层,这三层通常在操作系统内核中实现。操作系统的内核是不能直接为一
般用户所感受到的。一般用户感受到的只有应用程序(包括系统应用程序),即各
种应用程序构成了操作系统的用户视图。那么应用程序通过什么样的界面与内核打
交道呢?通过的是编程界面(即程序员界面)。各种应用程序,包括系统应用程序
都是在此界面上开发的。编程界面有两种形式,一种是由内核直接提供的系统调用
,一种是以库函数方式提供的各种函数。前者在核内实现,后者在核外实现。因此
,内核中实现TCP/IP协议的操作系统可以叫做TCP/IP操作系统,其核心协议TCP、
UDP、IP等向外提供的只是原始的编程界面,而不是直接的用户服务。用户服务要
靠核外的应用程序。TCP/IP网络环境下的应用程序是通过网络系统编程界面套接字
(socket)实现的。网间应用程序之间的作用方式为客户/服务器模式。TCP/IP协
议核心与应用程序的关系如图1.2:


图1.2  TCP/IP协议核心与应用程序关系图



       因此,网络的应用程序也不是能直接与TCP/IP核心打交道,而是与网络应
用编程界面(套接字)打交道,编程界面构成了核心协议的用户视图。TCP/IP核心
协议连同网络物理介质一起,都是提供网络应用程序间相互通信的设施。我们把它
叫做网际网(Internet)设施,该设施比物理通信设施抽象,通用,功能更强。在
多任务分时操作系统中(如UNIX),一个应用程序的一个实例对应于一个进程。因
此网际网设施也就是网络系统中进程间通信的设施。

       需要强调的是,TCP/IP协议并没有确切地规定应用程序应该怎样与协议软
件相互作用,也就是说没有对应用程序接口进行标准化,因此在原理上必须区分
TCP/IP协议与接口。本书中讨论的TCP/IP编程界面(socket,Windows Sockets)
源于UNIX操作系统,并已扩展到DOS,Windows操作系统。

1.3  术语
1.3.1  套接字
       套接字是从英文单词socket翻译而来,它是网络通信的基本构件。套接字
是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相
连的进程。

       套接字存在于通信区域中。通信区域也叫地址族,它是一个抽象概念,主
要用于将通过套接字通信的进程的共有特性综合在一起。套接字通常只与同一区域
中的套接字交换数据(也有可能跨越区域通信,但这只在执行了某种转换进程后才
能实现)。Windows Sockets只支持一个通信区域:网际域(AF-INET),这个域被
使用网际协议簇通信的进程使用。

       套接字都具有类型,它是根据用户可见的通信特征进行分类的。应用程序
被假定为只在同一类型的套接字间通信,不过只要依据的通信协议支持,也完全可
以在不同类型的套接字间通信。Windows Sockets版本1.1支持两种套接字:流套接
字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。

1.3.2  Windows Sockets实现
       一个Windows Sockets实现是指实现了Windows Sockets规范所描述的全部
功能的一套软件。一般来说,在Windows下实现Windows Sockets功能都是通过DLL
实现的,并且很多实现是纯粹通过DLL实现的,因此,本书中的Windows Sockets实
现的提法可以说等价于Windows Sockets DLL(WINSOCK.DLL)。

       Windows Sockets版本1.1的实现必须支持TCP和UDP两种类型的套接字(即
流套接字和数据报套接字),某些实现可能提供原始套接字(或SOCK_RAM类型),
但这不是强制的。原始套接字是不鼓励使用的,应用程序为了兼容性最好不要使用
它们。

1.3.3  阻塞处理例程
       阻塞处理例程(Blocking Hook,阻塞钩子)是Windows Sockets实现为了
支持阻塞套接字函数调用而提供的一种机制。对单线程环境下的Windows Sockets
来说,它有一个默认的阻塞处理例程。当应用程序引出一个阻塞的Windows
Sockets API操作时,Windows Sockets实现在让操作等待完成时调用此例程来模拟
阻塞机制。默认的阻塞处理例程只是简单地获取并发送Windows消息,应用程序可
以使用WSASetBlockingHook()函数来安装自己定义的阻塞处理例程,它在函数阻塞
时代替默认的阻塞处理例程执行。

1.3.4  多址广播
       多址广播(multicast,也译作多点传送)是一种一对多的传输方式,传输
发起者通过一次传输就将信息传送到一组接收者,与单点传送(unicast)和广播
(broadcast)相对应。

多址广播使用最广泛的是IP multicast,它标准IP网络层协议的扩展,由Steve
Deering定义的Host Extensions for IP Multicasting(RFC 1112)奠定基础。IP
 Multicasting的定义为:到一个“主机组”的IP数据报的传送,主机组是由零个
或多个用同一IP目的地址标识的主机集合。Multicast数据报被传递到其目的主机
组的所有成员,并且同常规单点传送的IP数据报一样可靠。主机组的成员是动态的
,也就是说,主机可以在任何时间加入或离开主机组。主机组中成员在位置上和数
量上都没有限制,一个主机可以同时是一个以上主机组的成员。



--

   与其浑浑噩噩地生,不如轰轰烈烈地死

   软件协会欢迎每一位有志献身于民族软件事业发展的同仁加盟。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.182]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店