深入理解什么是端口(port)

      最后更新:2022-06-02 09:01:22 手机定位技术交流文章

      目录

      • 常见端口
      • 端口是必须的吗?
      • 协议的缺省端口
      • 为什么需要端口?
        • IPC代表程序间沟通。
      • 端口, 一个间接层
      • 端口的一个类比
      • 姓名和港务处
      • IoC(控制反向)和港口
      • 再论缺省端口
      • TCP/UDP和港口

      常见端口

      尽管他没有完全掌握港口的机械学, 他听说过我们日常工作中所有类型的港口, 特别是后端开发商, 这件事几乎无处不在,比如:

      MySQL 默认端口为 3306
      redis 的端口 6379,
      Tomcat 默认端口为 8080 。
      SSH有22个港口
      等等…

      当然,我们要找的最重要项目是 与网络有关的港口, 大部分是80和443个港口, 我们将集中关注这些港口。

      端口是必须的吗?

      我们可能都见过港口, 也许是最有名的8080个港口,localhost:8080

      然而,在网络应用程序被安装到官方网站之后,港口似乎消失了,而官方网站不需要它?不,它没有。这是有效的。缺省值.

      比如访问https://www.baidu.com/此url 中似乎没有端口, 但有, 它的默认值为443, 因此整个窗体如下:https://www.baidu.com:443

      可以通过创建调试工具来观察这一点,该工具附有IP地址,然后是IP地址。443
      在这里插入图片描述

      如果您输入错误的端口, 如 80, 请尝试这个 :https://www.baidu.com:80/因此,无法进入。
      但是如果你改成http://www.baidu.com:80它将能复返人世。

      因为服务器后台的设计是自动重定向 307的 https, 浏览器将最终再次跳跃 。https://www.baidu.com:443.在这里插入图片描述
      在这里插入图片描述

      这时如果你输入http://www.baidu.com:443它不能来..
      那么原因是什么呢?

      一个是https,另一个是https。

      协议的缺省端口

      当URL中没有可见端口输入时, 浏览器根据所使用的协议提供一个默认端口 :

      • 如果使用 http 协议, 请使用 80 端口 。
      • 如果使用 https 协议, 请使用端口 443 。

      如果你一个人进入港口呢?然后用你输入的港口,输入你写的字,然后你出来。你的责任是不要去。谁教你做爱是免费的?

      如果在443中使用了 " http " 协议,或者在80中使用了 " https " 协议,则无法查阅。

      另外,如果输入一个随机数字,例如9527,https://www.baidu.com:2232,因为没有服务器,这本来就是无法进入的。2232 端口上进行监听.

      即使是在2232号端口监听,它也并不总是网络服务; 所使用的协议可能不是 https, 试图用浏览器访问它可能会导致失败。

      当然,还可在服务器2232号端口安装额外的网络服务,如apache或Tomcat服务器、在该端口监听的网络服务器、防火墙、安保单位等。

      那么为什么不在这些奇怪的港口提供网络服务呢?原因很简单:方便用户,减少用户的认知负荷。

      今天,不仅是港口的缺失, 而且还有协议,最后的断裂, 甚至ww..

      必须指出,违约是非常有用的,这是真正的进步;然而,这些违约有时会给未命名的开发商造成一些不确定性,似乎港口并非必要,而港口并非必要。

      为什么需要端口?

      IPC代表程序间沟通。

      因此,为什么它必须是港口?它是做什么的,什么是程序间通信,必须首先理解的?

      在浏览器地址栏中放置网站域名,然后返回汽车,提出请求,服务器响应您的请求,浏览器重写结果,最后您可以查看网页。
      如果您曾经 pinged a 域名, 例如 yow. com, 您可以获得 IP 地址 :
      在这里插入图片描述

      使用 ip, 浏览器自然会发现服务器的主机, 但仍存在一个问题: 除了最典型的网络服务、 ftp 服务、 Mysql 服务等等, 主机上还有许多程序和服务在操作 。

      简言之,如果请求仅有一个IP地址,操作系统将不知道要执行什么程序,如果建立整个系统,你能设想吗?

      只有在 DNS 处理后仅提供域名,您才能获取 IP 地址 。

      在堆叠底部,所谓的请求是各进程之间的沟通。

      在这里插入图片描述
      可能是Navicat 客户端与 MySQL 数据库服务器之间的通信,或者是 winScp 客户端与 vsftpd FTP 服务之间的通信,等等。

      例如,它可以作为本地操作系统、浏览器和名为Nginx的服务器上的一个程序之间的通信。

      另一方面,所谓的港口可被视为一个进程标识。

      当然,它仍然不同于进程ID; 重新分析它, 或者认为港口是进程ID的阴影。
      也就是说,如果仅域名(ip)无法找到一个进程,连接的启动者必须同时提供ip和端口,以便服务器知道要响应哪个进程。

      端口, 一个间接层

      问题是,为什么把港口直接运到港口而不是直接使用流程标识? 考虑这一点并不难,但有几个原因:
      作为客户,我无法确定服务结束反应过程的代号。
      当服务端响应进程恢复时,ID将会改变。
      一个网站的流程ID是这个,另一个网站可能是另一个网站。

      有几个原因,举几个例子,为了解决这些问题,建立了间接的港口层。

      在计算机领域,据说任何计算机问题都可以通过增加一个来解决。间接层普通科学中的任何困难都可以在另一个贫困玩家的帮助下解决。 Dave Wheeler(Dave Wheeler)
      但实际上又会带来另一个困难。

      另一个问题是,它混淆了等级结构,降低了它的参与程度,等等。 当然,建筑师必须考虑这个话题,而大部分时间,建筑是平衡的艺术。这是一个极端的,一个极端的,另一个极端的。

      如果没有这一间接层面,客户必须知道对应服务程序的身份,才能与服务提供商连接。

      这种模式显然不适合一个对大量客户访问做出回应的企业,你不知道谁可以访问你的网站!你甚至不能告诉他们。

      就网络而言,这种依赖是倒置的,客户总是向80(或443)个港口提出要求,成为标准的一部分,而服务提供者则被迫转而适应,服务提供人开始听取港口的通信并处理这些通信,成为背对背的依赖。

      在这里插入图片描述

      如果一个进程希望提供网络服务,它将在启动时提供网络服务。绑定与网络有关的港口(有约束力),

      如果港口附属于另一个进程(所谓的被占领),它就会失败;或者如果港口被它自己的前一个没有完全撤回的进程所占用,它就会失败;在发展进程中,你可能遇到类似的困难,一个网络进程没有终止,你试图开始另一个,同时利用同一个港口,并且冲突将发生。

      并在其上持续的监听当有请求时,请同时(听)提出。响应因此,进程身份识别问题得到解决:

      与界面回声相似, 因为浏览器只需在不知道谁提供界面服务的情况下寻找界面, 细节被密封并埋在港口层。

      港口是一个中间层。解耦由于客户高度依赖服务,整个系统变得灵活。

      在一般编程概念中,你可以将港口视为一个接口,你可以将恩京克斯、阿帕切、托姆卡特等视为一个独特的接口的实现。

      端口的一个类比

      一个真实世界的例子可以帮助提高理解度。
      我相信你们以前都曾在人中心工作过, 比如获得居住许可、护照、社会保障等等, 通常你们会收到一封小信, 来鼓励你们步行到一个百忙之中做生意, 这基本上与港口相似:

      例如,80扇窗户相当于香港的Avota通行证。

      然后,你将获得香港Au王朝通行证, 进入80号窗口,然后一切就都结束了。你不会问王先生,谁是这家公司的老板。

      可能是明明今天做的, 明可能受伤了,流血了, 然后轮到瑞德了, 然后轮到瑞德了,他出事了, 他流产了,

      您真的需要知道这些个人变化的复杂程度吗? 如果您的同事询问您, 您现在如何获得香港- Atta通行证? 这甚至没有必要。 只要指示他通过80号窗口进入..

      整个公民中心系统将确保能够管理这些程序的人坐在窗口后面,你只需要通过窗口寻求服务。

      姓名和港务处

      现在,由于现实世界的平行关系,你对港口的运作情况有了更好的了解。 一般来说,港口层可被视为一种命名服务,它与eureka(例如,弹簧文件)中的机制基本相同,只是名称是一个抽象的数字,就像808080,80表示网络服务,如Nginx(Nginx),约束和倾听它,这类似于登记你提供的网络服务。

      DNS 域名系统也是正确的; 我可以访问我通过 xiaogd. Net 提供的在线服务, 这个名称 。
      例如,JNDI和爪哇的其他人将一个名称与服务联系起来,例如代表数据源(数据库连接)或什么的的名称。

      IoC(控制反向)和港口

      一般而言,港口的上述机制是相同的。控制反转(Ioc: Control: Inversion of Control) 是一个原则声明,即如果客户需要该服务的程序代号,该代号确实由服务供应商控制,而服务供应商是我服务的对象,你必须向相关的代号提交请求;
      那中层港口呢?作为一个客户,你总是向修复港口提出要求, 你要求服务 约束,听,回应港口, 你服务 反过来由我的客户控制, 在我的客户发送的任何港口, 你服务 倾听和回应相应的港口。

      这一概念或概念在包括方案拟订在内的许多领域实际上相当重要。

      由于浏览器不断将网络请求传送到 80 或 443 端口, 需要网络服务器程序才能监听这些端口。 例如, 在 100 度服务器上, 网络服务器是 Nginx, 当它活跃时, 它会窃听 80 和 443 端口, 而所有想要访问主页的人 都不需要知道 100 度 Nginx 进程编号是什么, 您可以连接到 100 度 Nginx 进程, 通过这个间接端口层获取您想要的东西 。
      实际上,人们可能会争辩说,浏览器只是与港口交谈,然后港一级将这些请求委托或代理到适当的网络服务器上,港口作为中间的间接层。

      再论缺省端口

      现在我们应该理解为什么需要港口。 当然,终端用户不需要知道这些实现的具体细节,对他们来说,应该遵循最起码的知识原则:我们知道的越少,越好。
      如果您必须允许用户在 URL 程序中输入端口, 或者您必须输入 ww. 等, 用户会向您扔十万个"为什么"..

      这是另一个有名的计算机引言:程序员和上帝都敢于制造更大、更好的软件,即使是傻瓜也能使用,而上帝总是可以创造更大、更愚蠢的傻瓜。迄今为止,上帝已经赢得了胜利。
      Programmers are in a race with the Universe to create bigger and better idiot-proof programs. The Universe is trying to create bigger and better idiots. So far the Universe is winning.

      许多次,用户会记得你的域名是佛佛, 你应该烧掉它, 你想让用户记住你的港口, 而你想得太过头了..
      另一方面,这一点很重要,需要理解的前提是网络服务可以在任何港口实施。 比如,在本地发展方面,用户只是你自己,当然,只要您知道,您可以选择一个港口,比如8080,或者至少通知与您一起工作的另一位前同事。

      其他非网络服务,如ftp, 不必在第21个港口或这样的港口上; Mysql 服务港口也可以改为3306 以外的其他港口。
      也许,你想要提供一种服务, 但只有极少数人知道, 你可能会选择一个极有偏见的港口, 从而阻止任何人在没有单一域名的情况下获得你的服务。

      仿佛有人想偷偷溜进一些服务, 插入一些有趣的电影什么的.. 刑法警告,自作自受!

      TCP/UDP和港口

      据称,港口3306、80和443在TCP和UDP之间划分开来,尽管大部分时间是TCP港口,但TCP80港口和UDP80是分开的港口。

      乌DP协议的80个港口,包括443个港口得到了维护,目前的http协议仅以TCP协议为基础。
      事实上,从技术上讲,在联合民主党上创建网站并不困难;毕竟,联合民主党和TCP都没有以知识产权议定书为基础,无论如何,
      电脑界没什么不可能的, 似乎有人在试图实现它, 但这是两头奶牛对屁股的一举一动。

      此外,对于程序间港口连接而言,这是对称的,这意味着服务器的回答首先被送回客户端港口。

      如果你用 Windows 10 系统, 可以在 任务管理器 > 性能 > 打开资源监视器 > 网络 > TCP 连接, 点击下远程端口您总是可以观察到443个相关连接,按大小递减顺序排列,左侧是本地港口,TCP连接总是有一个边远的港口,而本地港口是:
      在这里插入图片描述

      客户在建立 TCP 连接时, 最初选择了一个不用于服务器响应的随机接收端口, 例如 38672. 是握手还是跟踪数据包在 TCP 包中,包头最重要的两个领域之一是其中一个领域。源端口38672是源端港的一个例子;另一个是目标端口(目的地港口),如80或443。

      如您所见,服务器的回复返回源端口,在此情况下为38672,而源端口返回到最后阶段,在此情况下返回浏览器。

      IP软件包也是如此。包头最重要的两个领域之一是其中一个领域。源IP(IP来源);另一个是目标 IP(destination IP).

      作为IP包件,TCP包件将捆绑在IP包件中,IP+端口将包括在内。

      两个分开的东道方之间的进程,在IP+与港口与流程之间的联系相结合时,可以愉快地通过TCP(UDP)/IP协议取得进展。程间的通讯(IPC)了.

      当然,在同一主机操作中也可以使用同样的方法,但同一主机主机存在不同的解决办法,取决于各种操作系统是否提供必要的工具和支持,TCP/IP是普遍使用和维持的通用标准协议。

      参考项目:

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/26750.html

          热门文章

          文章分类