(图片来源网络,侵删)
#头条群星9月榜#在《外部设备与cpu如何连接》一文中,已经详细解释了CPU上端口的含义:图1即CPU上的端口是八个上图中同样的电路组成的用来接收或者发送数据的结构上面的P0、P1等端口都可以看作是寄存器但是,除了CPU上的端口外,接口芯片或者外部设备上也存在同样的端口:上图表明,8086芯片上有20根地址线,其中16根是地址和数据共用的引脚:AD0--AD15,而8086也正是通过这16根引脚来对I/O端口进行管理:上图给我们明确了一个概念:I/O端口是寄存器以上关于I/O端口独立还是统一编址的叙述告诉我们,正是由于AD0--AD15的任何一种组合都可以作为一个端口号,这也导致I/O端口的数量多达2^16个,也就是65536个上图是8086和接口芯片的连接框图上图是接口芯片8255的结构框图,可以看到,其内部存在很多寄存器,比如A口、B口、缓冲器等等按照I/O端口就是寄存器的定义,8255内部的每一个寄存器都是一个端口号,都有它们的地址每个寄存器都可以作为端口来收发数据由I/O端口的概念很容易推广到网络端口,这是因为网卡也是一种接口芯片,其内部同样有着各种各样的寄存器,比如:下图是ARM芯片和外部设备连接示意图,包括网络设备:以上解释的是硬件上的端口含义,当然还有软件意义上的端口软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区面向连接服务TCP协议和无连接服务UDP协议使用16bits端口号来表示和区别网络中的不同应用程序每个TCP报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一的确定一条TCP连接下面以TCP报文为例说明端口号的作用:假设PC1向PC2发起Telnet远程连接,其中目的端口号为知名端口号23,源端口号为1028源端口号没有特别的要求,只需保证该端口号在本机上是唯一的PC2收到数据包后,根据目的端口为23判断出该数据包是Telnet数据包,将数据包转发到上层Telnet协议从以上叙述可以看出,软件端口号也是16位,同样是65536个;软件端口号的作用是与IP地址一起用来标识同一台计算机上的不同进程;软件端口同时意味着不同的缓冲区,以保证网络上接收的信息得以保存,并在本机上不会产生混肴简单总结:1:计算机端口包括硬件端口和软件端口,硬件端口包括CPU端口,I/O端口,这些端口都是寄存器;软件端口则仅仅是一个数字,一个数据结构2:硬件端口和软件端口都是65536个3:因为不同的软件端口对应着不同的进程,通过软件端口建立的网络连接所进行的通信,最终还是要由相应的硬件端口来实现4:硬件端口号是一个地址,对应一个寄存器;软件端口号则是一种标识,两者含义不同
0 评论