我对网络中端口的概念感到困惑。
但不清楚它们在哪里?我的疑问...
他们住在哪里?
我可以改变它们吗?
ISP 如何阻止端口(我读过一些文章,其中 ISP 阻止了租户的某些端口号,因此租户无法托管网站)
如果路由器内部的端口号被阻止,该怎么办?
谁为 Web、SMTP、FTP 等保留了某些端口号。
对我来说,哑巴的定义就在这里。
答案1
Are they only used to specify "which application should use the data? "
是的,我认为是这样。或者是一个进程而不是应用程序。进程是内存中应用程序的一个实例。
并且端口是数据包内众多字段中的一个字段(使用数据包的通用且有用的定义)。
当某个进程监听某个特定端口 X 时,这意味着它正在读取或被给予端口设置为 X 的数据包。
假设你有两台计算机 A 和 B
B 有很多不同的软件,不同的进程在运行
A 上的每个进程和 B 上的每个进程都与端口相关联。因此,当数据包发往 A 或 B 时,进程知道哪些数据包是发往它们的。
事实上,它不仅适用于每个进程,还适用于通信通道。因此,A 上的进程想要与 B 上的进程交换数据。因此,A 为该通信选择一个端口,B 为该通信选择一个端口。A 和 B 使用正确设置的源端口和目标端口相互发送数据包。
如果 A 和 B 想要就另一个主题或相关主题进行通信,或者 A 上的用户或 B 上的用户想要...那么他们可以使用新端口。因此,A 和 B 上的程序或 A 和 B 上的用户可以通过查看源或目标端口为 X 的所有数据包分别看到两个通信通道。
关于你的问题
他们住在哪里?
假设您有计算机 A 和计算机 B,那么计算机 A 就表示打开了一个端口,计算机 B 也表示打开了一个端口。这就像一个 ID,程序会“打开一个端口”,即它会向操作系统请求留出一个“端口”供其使用。
我可以改变它们吗?
端口开放有两种情况,即端口开始存在。创建该 ID 以供使用。
一种是程序发起连接时,另一种是程序监听连接时。监听先发生。
当要让程序监听连接时,您通常可以告诉程序监听哪个端口。通常程序会为您提供选项。
您可以自己尝试设置所谓的“服务器”。服务器有不同的定义。一种是功能强大的计算机,另一种是可能被许多其他计算机访问或甚至用于访问许多其他计算机的中央计算机。另一个定义 - 主要定义 - 是一种监听其他人连接的软件(通常可能有很多其他人连接),因此您会看到服务器的其他定义源自该定义。
您可以创建一个服务器..设置一个
Tinyweb 是一个小型 Web 服务器
说明请参阅本网站
https://www.ritlabs.com/en/products/tinyweb/install.php
因此创建 c:\blah\index.html 它甚至可以是空白的。
这使得它监听端口 8000
Run TinyWeb on port 8000:
c:\tinyweb\tiny.exe c:\blah 8000
然后你可以做http://127.0.0.1:8000 因此访问您计算机的本地(我猜是虚拟的)网络接口 127.0.0.1 所谓的环回接口并指定端口 8000
如果你在不同的端口上设置 tinyweb,那么你可以使用 http 连接到不同的端口,更改冒号后的数字
并查看您的网页
通常,如果 Web 服务器是公共的,则它们会监听端口 80。如果 Web 服务器位于其自己的 LAN 内部而非公共的,则有时会监听端口 8080。
许多程序都在监听某个端口。例如,VNC 是一个允许您远程查看计算机的程序。它具有指定端口的设置。
有一个名为 nc 的程序可以监听端口并输出发送到端口的任何内容。如果您安装了 cygwin,则可以用 cygwin 运行它。
因此,程序本身可以改变它监听的端口。并且您可以告诉程序..
这是用于服务器的程序,用于监听端口
发起与服务器连接的程序称为客户端程序。您总是有一个客户端和一个服务器。一个程序负责监听(通常称为客户端),另一个程序负责监听(通常称为服务器)。
客户端和服务器可以表示客户端发出请求,服务器作出回复。如果作出回复的是客户端,那么您可以从某些软件中得到一些关于服务器建立反向连接的有趣术语。但通常发起请求的一方称为客户端,监听的一方称为服务器,并且通常也是客户端发出请求,服务器作出回复。例如,您的 Web 浏览器是客户端,它从某个远程 IP 上的 Web 服务器请求网页。
客户端,即发起连接的程序,它们会获得一个大于 1024 的随机端口号
如果您打开 cmd.exe 并运行 netstat -aon
,则会看到包含端口的连接列表。它显示任何连接的本地端口和远程端口。
因此,查找端口号 < 1024。这里我们有一个服务器在我的计算机上监听端口 1234(0.0.0.0 表示任何 IP 都可以连接...尽管这可能会被防火墙或 NAPT 路由器阻止)。
另一行查看外部地址,您会看到端口 80..这是我的电脑连接到 Web 服务器
> 1023 的端口是随机端口
前 1024 个端口(端口 0-1023)通常是服务器使用的端口。但有时人们会为服务器选择更高的端口,作为一层安全保护,以便更好地隐藏,使黑客更难发现。或者出于惯例,例如 LAN 上的内部 Web 服务器使用 8080。
C:\>netstat -aon
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING 3656
...
TCP 10.0.0.92:50735 147.148.112.39:80 CLOSE_WAIT 5340
How does the ISP blocks a Port(I have read in some articles where ISPs block certain ports numbers of a tenant and so tenant is not able to host a website)
If port number is blocked inside a Router, how is it done?
NAT 路由器可以做到这一点。尽管它们也可以运行防火墙,也可以做到这一点
NAT 路由器正在执行一种 NAT 形式,它有许多名称,包括 NAPT 或 NAT/PAT。要在 NAT 路由器上解除阻止,您需要执行“端口转发”。这意味着当发出请求并且该请求来自外部(通常是互联网)以连接到您的服务器时,路由器会将其传递到您的其中一台计算机(即您指定的运行服务器的计算机)。
他们使用的软件称为防火墙。Windows XP 和 Windows 7 中也运行防火墙。还有专用的硬件防火墙(它们也运行防火墙软件)
Who has reserved certain Port Numbers for Web, SMTP, FTP, etc.
它们是惯例
我想是 IANA。他们有一份所有列表。
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
答案2
可以将港口视为专用于特定类型/等级车辆的车道。如果您驾驶汽车,则只能在汽车专用车道上行驶。
同样,在网络上,端口和相关防火墙规则规定了哪些应用程序/协议可以通过网络上的某个端口进行通信。例如,端口 80 由 HTTP 使用,20 和 21 由 FTP 使用等...
当您的朋友说“端口 80 被其 ISP 阻止”时 - 这可能是为了阻止他浏览其连接上的网页。如今,ISP(尤其是移动数据提供商)提供的 Internet 数据包仅允许某些应用程序(如 Whatsapp、Facebook 等)访问,在这种情况下,他们会阻止对所有端口的访问,除了 Whatsapp、Facebook 或用户已付费的应用程序所需的端口。