【问题标题】:Port 80 blocked on my ISP so how my browser still works?我的 ISP 阻止了端口 80,所以我的浏览器仍然可以工作吗?
【发布时间】:2013-12-13 21:11:20
【问题描述】:

我知道当我请求 example.com 时,我的浏览器实际上会默认为 example.com:80 。但是,我的 ISP 阻止了 80 端口的侦听,所以如果端口 80 被阻止,我如何接收来自我的请求的响应?应该不行吧?

【问题讨论】:

    标签: browser tcp dns ip


    【解决方案1】:

    当您发出 HTTP 请求(实际上是任何 TCP 请求)时,都会涉及两个端口。目标上有端口 80(在您的情况下为“example.com”),您的计算机上有一个端口;此端口称为“源端口”,因为您的计算机是请求的来源。

    通常,您的计算机会选择一个超过 1,000 的随机端口号(例如,3,135 或 45,978),因为低编号端口很容易记住(并被阻止)并且通常用于托管服务(例如端口 80)。因为源端口是由您的计算机创建的,目的是在端口 80 上与 example.com 通信,所以它不会打开很长时间(只要足够长的时间来完成它的工作)。这些有时被称为“临时端口”;见http://en.wikipedia.org/wiki/Ephemeral_port

    【讨论】:

    • 非常感谢!现在它变得更有意义了!然而,在 Wiki 中的 TCP 协议中,在第一个请求 (SYN) 中没有指示网络服务器必须发送 ACK 哪个端口的片段。那么网络服务器如何知道它必须连接的随机端口才能发送 ACK 呢?
    • 始发端口和目的端口都在TCP packet header中。
    • 在TCP头中,前16位是源端口,后16位是目的端口。该信息存在于所有 TCP 数据包中。见:en.wikipedia.org/wiki/Transmission_Control_Protocol
    【解决方案2】:

    但是我的 ISP 阻止了 80 端口的监听

    作为一个术语,您不能阻止端口侦听;我认为您的意思是您的 ISP 拒绝端口 80 上的传入连接(即从世界到您的计算机)。但是,传出连接(从您的计算机到世界)与传入连接是分开的,这就是您在使用浏览器时所使用的。

    通常只说“ISP 阻止了我的端口 80”是可以的,但在这里了解具体发生了什么很重要。

    【讨论】:

    • 但是当 TCP 协议启动时,会发生握手。我首先在端口 80 上启动与 SYN 的连接。之后,服务器像 ping (ACK) 一样向我的 Internet 连接的 IP:80 发送。如果我的 ISP 阻止了端口 80,这个请求 (PING) 如何返回我的浏览器?
    • 不,当你创建一个传出连接时,你将一个随机的本地端口(比如 20385)连接到远程端口 80。因此,传入的数据包可以通过,因为它们的目标是 20385,而不是 80。
    • 对不起,你错了。我可以在 SYN 中欺骗我的 IP,因此服务器必须确保我是该 IP 的所有者。所以网络服务器将使用端口 80 开始到请求初始连接的 IP 的新连接。我不知道网络服务器发出的这个请求是如何到达我的浏览器的,因为如果我尝试打开 MY_IP:80 什么都不会打开(当然,80端口被阻塞)。
    • 再次,不。 TCP 连接只涉及两个端口:您要连接的远程端口和随机的本地端口。你可能会想到Ident protocol,它可能由远程服务器发起,也可能不是,与端口80无关(发生在113上),不是TCP协议的一部分。
    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2013-06-30
    • 2016-11-08
    • 2017-08-11
    • 1970-01-01
    • 2011-10-24
    相关资源
    最近更新 更多