HTTP流量与套接字流量

时间:2016-11-04 10:25:59

标签: sockets networking tcp port portforwarding

我知道为了连接到网站,在TCP层,源端口是一个高随机数,目的地是80.因此,响应段有80作为源端口,随机端口号为80目的端口。

据我所知,客户端在等待HTTP请求的响应时会侦听该随机端口号。

当我创建TCP服务器套接字并且我想让它监听特定端口(47860)时,为什么我应该配置我的路由器并转发端口,而在使用网络时我不需要这样做浏览器吗? HTTP套接字和通用TCP套接字之间的区别是什么?

2 个答案:

答案 0 :(得分:1)

当NAT后面的客户端向远程主机发起流量时,NAT路由器会记住这一点。这样,从远程主机到本地客户端的响应可以重定向到客户端。

如果NAT后面的服务器没有转发侦听端口,路由器将丢弃该端口的任何传入流量:NAT 后面没有先前的流量到该客户端,所以没有什么可记住的,就路由器而言无需转发。

答案 1 :(得分:1)

@ CodeCaster的回答是正确的,我会尝试提供更多细节。

所以我们这里有2个案例:1)NAT后面的Web浏览器2)NAT后面的Web服务器。它们之间的主要区别在于第一个数据包的方向。

在(1)网络浏览器中启动通信,因此通过路由器发送数据包。路由器中的NAT将此数据包注册为将源IP /端口映射到目标IP /端口的表中的条目。当路由器收到来自Web服务器的回复时,它会在NAT表中查找该条目以确定转发数据包的位置,然后您的Web浏览器会收到回复。

在(2)路由器中的NAT不知道您的Web服务器存在。外部Web浏览器使用您的公共IP向您的Web服务器发送请求,因此数据包将到达路由器。现在路由器不知道如何处理数据包,因为NAT表和端口转发都没有注册端口80。因此,换句话说,NAT会自动处理传出连接,对于传入连接,您需要配置端口转发。