客户端请求的端口号是什么?

2023-10-26

我们知道服务器端是要指定和开放端口号的,比如 web 服务 http 请求的 80,https 的 443 端口,都要开放,否则无法请求成功。

我们知道通信是由两端组成的,既然服务器需要指定端口,那么客户端呢?

比方说我用 chrome 浏览器请求 www.baidu.com, 我知道对于百度的服务器肯定开放了 80、443 端口,那么浏览器呢,或者说我的电脑本机用于请求的端口是什么呢?

带着疑问我用 Wireshark 抓包看了一下

可以看到我的浏览器请求 源端口是 62412 ,目标端口是 443。

443 我知道,62412 又是为什么?

不知道,于是想了想 TCP 的连接和请求过程,参考这篇文章:https://mp.weixin.qq.com/s/iSZp41SRmh5b2bXIvzemIw

如文章所说:

TCP 协议里面会有两个端口,一个是浏览器监听的端口(通常是随机生成的),一个是 Web 服务器监听的端口(HTTP 默认端口号是 80, HTTPS 默认端口号是 443)。

浏览器端口随机生成?嗯,可以,但理论依据是什么?谁规定的?怎么规定的,怎么个随机法,不可能乱生成对吧。带着疑问,查到了资料。

  • https://www.rfc-editor.org/rfc/rfc6335.html

这是 RFC 的其中一份文档 。

解释下 RFC(来自维基百科)

请求意见稿(英语:Request for Comments,缩写:RFC),又翻译作意见征求,意见请求,请求评论是由互联网工程任务组(IETF)发布的一系列备忘录。文件收集了有关互联网相关信息,以及 UNIX 和互联网社群的软件文件,以编号排定。目前 RFC 文件是由互联网协会(ISOC)赞助发行。

RFC 始于 1969 年,由当时就读加州大学洛杉矶分校(UCLA)的斯蒂芬·克罗克(Stephen D. Crocker)用来记录有关 ARPANET 开发的非正式文档,他是第一份 RFC 文档的撰写者。最终演变为用来记录互联网规范、协议、过程等的标准文件。基本的互联网通信协议都有在 RFC 文件内详细说明。RFC 文件还额外加入许多的论题在标准内,例如对于互联网新开发的协议及发展中所有的记录。

RFC-6335 比较长,我们看其中重要的一段

总结一下

所有的端口被划分为三个数字范围

  • 系统端口,也称为众所周知的端口,从 0 到 1023(由 IANA 分配)

互联网号码分配局(英语:Internet Assigned Numbers Authority,缩写 IANA),是一家互联网地址指派机构,管理国际互联网中使用的 IP 地址、域名和许多其它参数的机构。
IP 地址、自治系统成员以及许多顶级和二级域名分配的日常职责由国际互联网注册中心(IR)和地区注册中心承担。IANA 是由 ICANN 管理的。

  • 用户端口,也称为注册端口,从 1024-49151(由 IANA 分配)
  • 动态端口,也称为私有或临时端口,从 49152-65535(从未分配)

在可分配的端口范围(系统端口和用户端口,即端口号 0-49151)中,单个端口号在任何给定时间处于以下三种状态之一:

  • 已分配:已分配的端口号当前已分配给注册表中指示的服务。
  • 未分配:当前可根据请求分配未分配的端口号。
  • 保留:保留端口号不可用于常规分配; 它们被“分配给 IANA”用于特殊目的。 保留端口号包括每个范围边缘的值,例如 0、1023、1024 等,可用于扩展这些范围或将来的整体端口号空间。

对于动态端口(Dynamic Ports),范围从 49152 到 65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如 49152 端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

这样就解决了我的疑问,确实客户端也是要有明确的端口号分配的,具体讲比如浏览器它的端口看上去也是随机分配的,而分配范围是在“动态端口”范围,这个依据可以在 RFC-6335 中查到。

参考

  • https://www.rfc-editor.org/rfc/rfc6335.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

客户端请求的端口号是什么? 的相关文章

随机推荐

  • 王炸功能ChatGPT 联网插件功能放开,视频文章一键变思维导图

    就在上周5月13日 Open AI 发文称 我们将在下周向所有ChatGPT Plus 用户开放联网功能和众多插件 这意味着什么 首先联网功能将使得ChatGPT不再局限于回答2021年9月之前的信息 能直接联网查询最新消息 而插件功能就可
  • BIOS启动过程详解

    BIOS 工作原理 最近几天在看 UNIX 操作系统设计 突然想到计算机是如何启动的呢 那就得从 BIOS 说起 其实这个冬冬早已是 n 多人写过的了 今天就以自己的理解来写写 权当一个学习笔记 一 预备知识 很多人将 BIOS 与 CMO
  • 19.3剪裁

    1 在固定管线中 裁剪是在世界坐标系中 2 在可编程管线中 裁剪是在规格化坐标系中 步骤 1 按照法向量和空间点定义裁剪平面 并归一化 2 根据世界观察投影变换矩阵相乘 求逆转置 即为需要的变换矩阵 3 变换矩阵与裁剪平面变换后就是需要的裁
  • numpy模块(2)

    1 利用布尔值来取元素 import numpy as np mask np array 1 0 1 dtype bool 1表示取对应的元素 0表示不取 arr np array 1 2 3 4 5 6 7 8 9 print arr m
  • Hadoop学习心得---二

    大数据运算解决方案MapReduce Hadoop的分布式计算模型MapReduce 最早是Google提出的 主要用于搜索领域 解决海量数据的计算问题 MapReduce有两个阶段组成 Map和Reduce 用户只需实现map 和redu
  • Three.js(学习)

    在vue项目中使用Three js的流程 1 首先利用npm安装Q three js 具体操作代码如下 npm install three 2 接下来利用npm安装轨道控件插件 npm install three orbit control
  • 表、栈和队列

    表 栈和队列 表 增强的for循环 List
  • DM6437 C64X+ EDMA 疑惑总结记录

    总结一下DM6437中的EDMA的使用出现的问题 方便以后再开发定位问题 1 EDMA Link 和 Chain的区别 link实现了DMA的自动重加载 非静态模式 需要两个param chain是不更新param set表 直接event
  • qt界面叠加视频OSD双层显示

    最终代码存放于 http download csdn net detail lzh445096 8849147 本人负责的是UI界面 提供给底层应用程序接口函数 此接口函数功能为向指定路径的文件中写入命令字符 应用程序去到该文件中读取到相应
  • 基于Protobuf协议的Dubbo与SpringBoot的结合

    文章目录 工程概况 父pom dubbo provider 通过proto3定义服务 打包发布服务 dubbo provider service实现服务 dubbo provider web提供服务 dubbo consumer dubbo
  • 依赖注入和控制反转的理解,写的太好了

    学习过Spring框架的人一定都会听过Spring的IoC 控制反转 DI 依赖注入 这两个概念 对于初学Spring的人来说 总觉得IoC DI这两个概念是模糊不清的 是很难理解的 今天和大家分享网上的一些技术大牛们对Spring框架的I
  • 互联网产品运作模式详解

    互联网产品运作模式详解 https www infoq cn article 3EVku39xVhJYs7ba9uk7 本文主要总结下移动互联网产品的市场运作模式 因为本身我是技术出身 对运作模式中的开发体系这 块相对熟悉 但是其他阶段也是
  • js: for in 循环对象

    var peopleObj man 2 2 2 woman 1 1 1 womanDoctor 100 100 100 for const prop in peopleObj if peopleObj hasOwnProperty prop
  • java将图片转为base64后出现的一些问题

    因为需要对接第三方接口 需要将图片转换为base64编码传参 手动转换base64使用postman完全是OK的 结果java中转换出来死活不行 p 将文件转成base64 字符串 p param path 文件路径 return thro
  • Linux下ps命令实现

    include
  • 思科实验-生成树协议STP

    生成树协议 英语 Spanning Tree Protocol STP 是一种工作在OSI网络模型中的第二层 数据链路层 的通信协议 基本应用是防止交换机冗余链路产生的环路 用于确保以太网中无环路的逻辑拓扑结构 从而避免了广播风暴 大量占用
  • vivado2021.1安装

    首先需要在官网注册一个账号 安装软件时需要使用 账号注册连接 xilink账号注册 vivado下载链接 xilink官网下载 使用官网下载需要注册账号 下载免费 vivado阿里云盘下载 vivado licence阿里云盘下载 官网下载
  • QStringLiteral(str)

    在看项目代码的时候 总会看到下面这种情况 QString str QStringLiteral 123rt QString用QStringLiteral str 来初始化 有点好奇 就查了下 记录一下 这是用QStringLiteral初始
  • Java:记录一下第一次面试经历(新希望六和)

    记录一下本菜鸡两个月前第一次面试新希望六合这家公司 那时的我很多都回答不上来 非常尴尬 不过这第一次面试经历也算是给足了我动力继续努力 记录一下这个第一次面试的题目 也算是记录一下那时候的我 做过什么样的项目 简单介绍一下你的项目 项目的整
  • 客户端请求的端口号是什么?

    我们知道服务器端是要指定和开放端口号的 比如 web 服务 http 请求的 80 https 的 443 端口 都要开放 否则无法请求成功 我们知道通信是由两端组成的 既然服务器需要指定端口 那么客户端呢 比方说我用 chrome 浏览器