我偶然发现本文与我读过的任何含糊其辞的文章不同,它指出我的
“计算机背面的细如铅笔的网线(或无线网络适配器)内部包含 65,536 条微观通道。”
我一直被告知,端口只是一个数字(而不是一根线),用于区分不同的虚拟连接,所以这两种解释如何共存?
- 此外,这不可能意味着当端口未被使用时,部分网线就不会被用来传输信号,不是吗?
文章还说
数据包必须在每个网络节点停止,并且:
- 找到一个开放的端口,
- 通过允许其通过该端口的识别测试,如果不通过,
- 移至下一个端口并重试,直到允许通过收费站。
- 我认为数据包包含特定的目标端口,那么它们为什么会搜索新的开放端口?
- 最后,通过身份识别测试需要什么?
答案1
我一直被告知,端口只是一个数字(而不是电线),用于区分不同的虚拟连接,那么这两种解释如何共存?
你引用的段落充满了隐喻. 在传输层,端口是只是数据包中的数字;它们不是物理的。
物理层,或“链接”层,不知道任何事物关于 TCP/UDP 端口,也关于 IP 地址 —— 它只从一端到另一端传输一系列位。
此外,这不可能意味着当端口未被使用时,部分网线就不会被用来传输信号,不是吗?
不。无论你有一个连接还是二十个连接,电缆的使用方式都完全相同。在有线以太网中,只有四对电线——旧电缆只有两对;绝对不是 65536;所有电线都是同时使用的。
文章还说<...>。我以为数据包包含特定的目标端口,那么为什么它们会搜索新的开放端口呢?
此时,文章已经慢慢跨过了“隐喻”与“胡说”之间的界限。
TCP 端口号在建立连接时分配,并且仅供该连接的两端使用。同时,路由发生在“互联网”层,仅使用 IP 地址,不关注 IP 数据包中包含的数据或以任何方式修改它。
(唯一的例外是当执行 NAPT 时 - 例如,通过您的家庭路由器,使多台计算机共享一个 IP 地址。在这种情况下,您的计算机收到的数据包可能具有与最初发送的数据包不同的 TCP 或 UDP 端口号。)
识别测试可能是指网络防火墙。但是,被防火墙规则阻止的数据包将不是“去寻找下一个端口”;它们会被丢弃。
答案2
这篇文章写得很糟糕。它试图用隐喻语言和“流行知识”来解释网络概念。有 65,536 个可寻址端口,但它们并不存在于物理光纤链中,或者无论这篇文章试图描述什么。可用端口的数量在某种程度上是任意得出的(16 位整数在当时可能有意义),并且可能在 RFC 中标准化。
我不是网络专家,但我很确定网络硬件(交换机等)使用防火墙类型的规则来确定是否应沿线路转发特定端口上的流量(例如,您的 ISP 可以阻止 Bittorrent 使用的端口上的流量,或者您的家庭路由器可以阻止 ping 端口)。
答案3
“计算机背面的细如铅笔的网线(或无线网络适配器)内部包含 65,536 条微观通道。”
TCP 负责保持两端的流量按端口分开,并部分抽象串行介质上许多多路复用“连接”之一的概念。TCP 使用“套接字”的概念,即源 IP+端口和目标 IP+端口。同一介质上可能存在多个套接字,但另一端的 TCP/IP 堆栈会将它们分类,并且两个套接字上的流量不会相互混合。因此,从某种意义上说,它是一条路径。
TCP 和 UDP 使用端口和套接字的概念。其他协议(例如低级 IP)则不使用。并非所有从网络接口发出的信息都需要是 TCP 或 UDP。
数据包必须在每个网络节点停止,并且:
找到一个开放的端口,通过允许其通过该端口的识别测试,如果不行,则移动到下一个端口并再试一次,直到允许其通过收费站。
我觉得这没有意义。通常,当应用程序打开套接字时,它可以指定一个端口(如果该端口正在使用中,则套接字打开尝试将失败)或采用内核分配的端口(服务器通常指定端口号,而服务器的客户端通常采用内核分配的随机端口)。
也许以上内容描述的是更高层协议的一部分。我需要更多背景信息才能完全理解上述陈述。