第1个回答 2006-01-07
计算机网络是一种地理上分散的多台独立工作的计算机,通过通信电路互相连接起来,在配有相应的网络软件的情况下,实现资源共享和信息交换的系统.
网 络 协 议 是 使 计 算 机 能 够 通 信 的 标 准 。 典 型 的 协 议 规 定网 络 上 的 计 算 机
如 何 彼 此 识 别 、 数 据 在 传 输 中 应 采 取 何 种 格 式 、 信 息 一 旦 到达 最 终 目 的 地 时
应 如 何 处 理 等 ,协 议 还 规 定 对 遗 失 的 和被 破 坏 的 传 输 或 数 据包 的 处 理 过 程 。
IPX、 TCP/IP、 DECnet 、 Ap-pleTalk都 是 网 络 协 议 的 例 子 。
虽 然 各 个 网 络 协 议 各 不 相 同 ,但 都 以 相 同 的 方 式 使 用 物理 线 路 。 这 种 访 问
物 理 网 络 的 公 共 方 法 使 多 协 议 能 够 和 平 共 处 ,并 使 网 络 建 设者 能 使 用 通 用 的 硬件 执 行 多 种 协 议 。 这 个 概 念 称 为 "协 议 独 立 ",意 思 是 (物 理 )网络 无 需 相 关 于 所 运行 的 协 议 。
端口:在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。
端口的分类:
在Internet上,按照协议类型分类,端口被分为TCP端口和UDP端口两类,虽然他们都用正整数标识,但这并不会引起歧义,比如TCP的80端口和UDP的80端口,因为数据报在标明端口的同时,还将标明端口的类型。
从端口的分配来看,端口被分为固定端口和动态端口两大类(一些教程还将极少被用到的高端口划分为第三类:私有端口):
固定端口(0-1023):
使用集中式管理机制,即服从一个管理机构对端口的指派,这个机构负责发布这些指派。由于这些端口紧绑于一些服务,所以我们会经常扫描这些端口来判断对方是否开启了这些服务,如TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等一些大家熟知的端口;
动态端口(1024-49151):
这些端口并不被固定的捆绑于某一服务,操作系统将这些端口动态的分配给各个进程,同一进程两次分配有可能分配到不同的端口。不过一些应用程序并不愿意使用操作系统分配的动态端口,他们有其自己的‘商标性’端口,如oicq客户端的4000端口,木马冰河的7626端口等都是固定而出名的。