徐家汇如家精选:端口是什么意思?大虾请指点!

来源:百度文库 编辑:神马品牌网 时间:2024/04/25 18:22:12
在家里用bt下载电影,通常都会有选择端口,这是什么意思?对电脑有影响吗?会有病毒吗?应该怎么控制?

其实网上讲的端口是协议端口,是协议软在传输数据的时候为了区别不同的服务程序而用的一个标志罢了,我们来看看协议端口的作用,我们叫的协议指TCP/IP协议,端口应是应用软件下传输层的一个概念,也是协议中的传输层和应用层进行数据传输的通道,端口是一个抽象的概念,并不存在真正意义上的一个口子,很明确的说端口是一样标志,协议软件在处理网络上的数据时要分析这个报文中的端口号是那个端口,当然协议软件是通过端口来区分各应用程序的,也就是说协议软件是通过端口号才知道这些数据是给谁的,有人会问IP层有没有端口呢?你要这样设计当然没办法,其实根本没必要这么做,因为IP层分析报文,通常是查看报头的上层协议类型(如TCP,UDP)等,来分别交给谁来处理,看起来这个过程也有点像传输层和应用层中的端口来传输和区别数据,只是人们不这么叫,因为作为协议软件来说,通常我们把它看成一个总体,也就说虽然TCP/IP中包含很多协议,可是他们都属于TCP/IP簇。从设计角度来说不管是里面的其它协议,开发时就以全部实现了,而传输层到应用层不是这样,协议软件是定义了一些端口来给应用程序,通常那些应用程序也不是固定不变的,有时我们要运行一个网络程序、有的要运行二个程序、而有的要运行更多的应用程序,这意味道开一或二或更多的端口,每一个网络服务程序最少得有一个端口,而这个端口搬到编程上去时就成了套接字,也就是:“IP+端口”就叫一个套接字,那么端口在内存中是什么样的呢?是不是要占一定的内存空间呢?
这个问题从书面上来回答是很容易的,因为端口是一种抽象,自然就没有什么内存空间的问题,实际上端口是一个存取报文的队列,当传输层处理数据时分析到报头,看他是属于那个端口,然后把不同端口的数据分别存于不同的一个内存块,或者叫做缓冲区,反正是一个内存空间,这个空间存有各应用程序各自所有的数据,而没有其它的应用程序的数据,就象我们一个学校的信箱是一样的,如处面来的信,学校通常是放到信箱里,如三班是12号信箱,二班是13号信箱,自然我们班要信就可以从对应于自己班的信箱中取出来就是了。那么这个信箱就好比端口一样。当然了我们要知道那个信箱是我们班的,自然由学校分配或自己申请了以及双方协议,协议中的端口也是这样,应用程序在运行前,也就是进入内存前并不知道自己是用那个端口,但是他知道要那个端口,也就是说他想要这个端口,给不给还是协议软件的事了,如果协议软件愿意那自然而然这个服务程序就用这个端口和下层传输层打交道了,如果不给通常是有别的程序先用上了。怎么办,用其它的端口吧。
在网络应用程序中我们常还会碰到FTP这个应用程序,方到协议上来说这就是FTP协议,问题是当我们用FTP应用程序下载时有时会下载一个,有时会下载多个程序或文件,问题是此时同一样程序怎么能区别是那个数据属于那个文件的呢?人们常会这样想,当用FTP下载时,程序会打开两个进程,如果自己的IP为202.103.102.1,对方的IP,也就是我们要下载程序的地方的服务器的IP为202.103.112.4,我们通常会这样想,数据端口也20,控制端口是21,当然21号端口是为了传输控制命令了,以控制数据的传输,20端口是数据端口,进过这个端口来传输数据文件了,问题是两个文件同时下载时,进程怎么区别,也就是FTP应用程序怎么知道网络上传过来的数据是属于那个文件的呢?因为端口是唯一标志这些数据属于谁的。所以用20号端口同时来传输两个文件的数据肯定是不可以的,其实我们别忘了20号端口只是默认端口,实际上下载时用不用这个端口要看协议软件和FTP怎么来决定了,通常下载时两个文件的数据传输并不是用同一个端口,FTP通常会暂时用一个空闲的端口来传输数据,数据有三个文件同时传输会再暂时占用另一个空闲端口。
这是FTP的性质,可是对于我们最常用到的80端口,也就是WEB服务端口,是不是WEB服务也(HTTP协议)和FTP传输一样,如我在IE窗口中打入www.good.com/index.htm在另一个窗口中打入www.good.com/image/love.htm,很显然这是同一个网站的不同目录,也就是说对方的IP和端口在两次请求中是一样的,自己用的端口和IP也是一样的,那么窗口是怎么区别这个窗口的数据呢?我们来看看两次请求有什么区别,从目标服务器来讲,他只能看到你计算机上端口,并不知道你计算机上程序的窗口,也就是说他只能以端口作为标志,并不能用每个窗口提供标示,他和一个窗口打入第一个www.good.com/index.htm然后打入第二个www.good.com/image/love.htm及两个不同的窗口发出的请求,服务器是没办法区别的,那么这种区别只有在自己的计算机上了,那么计算机上的80端口应用程序是怎么来进行区别的呢。我们会看到请求的唯一区别在于目录的不同,可以从返回的目录来区别的,可是问题又来了,不是每个报文都有目录信息的,这是乎就出现难题了,如果两个超文本请求目标是同一网站的不同主页,那么会对各IE进程产生混乱,因为下层的协议软件只能用端口来对应于特定的应用程序,可是这里只有一个80端口,当传输层把数据上交给应用层时只能通过端口来,除非应用程序中有标志窗口的或进程的信息而且这个信息在报文的数据段,为什么呢,因为数据到达应用层时报头的信息被各层的协议去掉了,最后只有数据段了。那么IE进程还得处理掉这个信息才能得到真正有用的数据,这种方法有点不可理解,即使它可行。这也会使得应用软件任务过重。还得服务器同意你这样做,也就他传过来的信息要包含特定窗口的标志信息。
其实80端口只是一个控制端口,也就是命令传送端口,数据的传输完全由系统按规律或随机的运用空闲的端口工作的。这就很容易解决了这个问题。
那么我们再来看看计算机上的硬件端口,这个端口和网络协议的端口不同,这些端口要参与其它硬件端口一起编址,是独立的编址,不过和内存编址并不是一回事,它们两个并没有关系,各自分别对应于一个独立的编址系统。硬件端口对于操作系统来说就意味着一个寄存器了,这里的寄存器和内存中的寄存器也不一样,所以说对硬件的控制,我们通常都是向硬件端口,也就是寄存器写入一定的命令数据来被硬件接收,而端口是它们的通道。

什么是端口

在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。

计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。

按端口号可分为3大类:

(1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。

(2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

(3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

一些端口常常会被黑客利用,还会被一些木马病毒利用,对计算机系统进行攻击,以下是计算机端口的介绍以及防止被黑客攻击的简要办法。