发布日期:2015-09-18 14:08 来源: 标签: Linux教程 端口问题 套接字库 Linux
端口可以看作是网络连接的附着点。如果一个应用程序想提供一项特定的服务,它就会把自己附着在一个端口上,等待客户机(即所谓的“在该端口上监听”)。

1、端口问题 

         端口可以看作是网络连接的附着点。如果一个应用程序想提供一项特定的服务,它就会把自己附着在一个端口上,等待客户机(即所谓的“在该端口上监听”)。想利用该项服务的客户机便在其本地主机上分配一个端口,并连接到远程主机的服务器端口。 

        端口的一个重要属性是:客户机和服务器之间的连接一旦建立,服务器的另一个副本可能就会附着在服务器端口,监听更多的服务器。也就是说,允许若干个并发登录利用同一个端口5 1 3登录到同一个主机。T C P能够把这些连接区分出来,因为它们来自不同的端口或主机。举个例子来说,如果你两次均从E r d o s主机登录进入Q u a r k,第一个r l o g i n客户机就会采用1 0 2 3 这个本地端口,第二个则采用 1 0 2 2端口。然而,两者均是连接到Q u a r k上同一个5 1 3端口上的。 

       上面的例子说明了端口可用做集合点,客户机通过它连接到另一个特定的端口,以获得 特定的服务。为了让客户机知道正确的端口号,两个系统的主管必须在端口号的分配问题上达成一致。对那些用得较广的服务来说(比如 r l o g i n ),其端口号就必须进行集中管理。这是由I E T F (因特网工程任务组)来完成的,I E T F定期发布一个标题为“已分配号”的 R F C 。该R F C对分配给“众所周知”的服务的端口号进行了说明。 L i n u x采用的是一个文件,名为/ e t c / s e r v i c e s ,该文件把服务名映射为端口号。我们将在第8章对此进行详述。 

        值得注意的是,尽管 T C P和U D P连接和端口有很大关系,但其端口号之间不会有冲突。在我们前面的例子中,这便意味着 T C P端口5 1 3有别于U D P端口5 1 3。事实上,这些端口被用作两类不同服务的访问点,也就是r l o g i n        (T C P)和r w h o (U D P )。 

2、套接字库 

       在操作系统中,执行所有任务的软件和前面所讲的协议通常是内核的一部分。全世界最流行的编程接口是Berkeley Socket Library     (伯克利套接字库)。其名字源于一个流行的比方,即把端口视作套接字,与端口之间的连接视作插拨。它提供了 ( b i n d ( 2 ) )调用,借此指定远程主机、传输协议和一个程序可以连接或监听的服务(利用连接 ( 2 )、监听( 2 )和接受( 2 ) )。但是,这个套接字库过于普通,不仅提供了一个基于 T C P / I P套接字的类(A F _ I N E T套接字),还提供了一个可处理本地与远程机连接的类( A F _ U N I X类)。有的实施方案中还可以对其他类进行 处理,比如X N S    (X e r o x连网系统)协议和X . 2 5 。 

        L i n u x操作系统中,套接字库是标准 libc C-library 中的一部分。当前,它只提供了对A F _ I N E T和A F _ U N I X套接字的支持,但人们正在努力,提供对 N o v e l l连网协议的支持,以便最后能增添更多的套接字类。 

相关评论

专题信息
    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。