计算机的端口是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:42:58

其实网上讲的端口是协议端口,是协议软在传输数据的时候为了区别不同的服务程序而用的一个标志罢了,我们来看看协议端口的作用,我们叫的协议指TCP/IP协议,端口应是应用软件下传输层的一个概念,也是协议中的传输层和应用层进行数据传输的通道,端口是一个抽象的概念,并不存在真正意义上的一个口子,很明确的说端口是一样标志,协议软件在处理网络上的数据时要分析这个报文中的端口号是那个端口,当然协议软件是通过端口来区分各应用程序的,也就是说协议软件是通过端口号才知道这些数据是给谁的,有人会问IP层有没有端口呢?你要这样设计当然没办法,其实根本没必要这么做,因为IP层分析报文,通常是查看报头的上层协议类型(如TCP,UDP)等,来分别交给谁来处理,看起来这个过程也有点像传输层和应用层中的端口来传输和区别数据,只是人们不这么叫,因为作为协议软件来说,通常我们把它看成一个总体,也就说虽然TCP/IP中包含很多协议,可是他们都属于TCP/IP簇。从设计角度来说不管是里面的其它协议,开发时就以全部实现了,而传输层到应用层不是这样,协议软件是定义了一些端口来给应用程序,通常那些应用程序也不是固定不变的,有时我们要运行一个网络程序、有的要运行二个程序、而有的要运行更多的应用程序,这意味道开一或二或更多的端口,每一个网络服务程序最少得有一个端口,而这个端口搬到编程上去时就成了套接字,也就是:“IP+端口”就叫一个套接字,那么端口在内存中是什么样的呢?是不是要占一定的内存空间呢?
这个问题从书面上来回答是很容易的,因为端口是一种抽象,自然就没有什么内存空间的问题,实际上端口是一个存取报文的队列,当传输层处理数据时分析到报头,看他是属于那个端口,然后把不同端口的数据分别存于不同的一个内存块,或者叫做缓冲区,反正是一个内存空间,这个空间存有各应用程序各自所有的数据,而没有其它的应用程序的数据,就象我们一个学校的信箱是一样的,如处面来的信,学校通常是放到信箱里,如三班是12号信箱,二班是13号信箱,自然我们班要信就可以从对应于自己班的信箱中取出来就是了。那么这个信箱就好比端口一样。当然了我们要知道那个信箱是我们班的,自然由学校分配或自己申请了以及双方协议,协议中的端口也是这样,应用程序在运行前,也就是进入内存前并不知道自己是用那个端口,但是他知道要那个端口,也就是说他想要这个端口,给不给还