端口的理解-Port

说起端口,对于网络编程的人来说已经很熟系了,我原来以为我也很熟悉,可是当我深入了解的时候,计算机系统中的端口不仅仅是一个入口,可能很多人会说端口是“计算机与外界交流的出口”,其实我很好奇为什么是“出口”,这个端口到底是做何用的?

 

下面是java中会用到端口的一段代码:

 

ServerSocket server = new ServerSocket(8000);

 然后客户端发起连接请求socket:

 

Socket socket = new Socket(ip,8000);

 Socket中的端口参数我最初的理解是:服务器端开启了一扇"门",然后客户端去请求这扇“门”,如果是开着的,那么我们“拉条线”,用这跟“线”进行通讯。可是我每次想关于这个“门”在计算机中是如何表示的,我们如何通过这根线进行通讯的时候我就不求甚解,觉得就是那样的一个“出口”。上完课回来翻了翻书(深入理解计算机系统),知道了为什么会有端口的说法:

cpu使用一种存储器映射的技术向io设备发送命令,每一个io外部设备在内存中都会有它自己的门牌映射,外部设备会监听该地址的值的变化,比如某一个磁盘控制器被映射到0&a0地址,当cpu发送命令到改地址时,改地址所存储的值变化导致存储器总线开始传递信号给磁盘控制器,该控制器将信号转换为特定的命令从而到达读写;

 

我们就知道了端口是外部设备与cpu通信的桥梁,当我们进行网络套接字连接请求的时候,外部设备(网络适配器)会有很多的映射(因为网络通信的协议规定了很多不同的端口),当网络适配器接收到了来自外部的命令请求如创建套接字,这样请求信号就会通过io总线传递到内存中的某一个地址(8000),如果该地址中存在等到连接请求的信号,那么就返回一个成功的应答请求从而建立连接。

 

端口是一个存放与外部通信相关命令,数据,标识的地址,存于内存中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值