不确定关于临时端口的IIS使用情况

我今天在工作上讨论了使用临时端口的问题。 讨论的是如何来自客户端的请求将在端口80上打到服务器(这只是关于HTTP请求的讨论),但将其交给服务器上的临时端口来处理请求。 我以前没有听说过这个,所以我试图做一些研究,但无法find很多文件指出这一点。

这真的是真的吗? 我所看到的一切都提到,短暂的端口用于客户端,但服务器仍然只是端口80.所以,你不应该在服务器端口耗尽这种方式,只有可能在客户端。

我已经看到提及服务器使用这种方法的FTP( https://en.wikipedia.org/wiki/Ephemeral_port )。 虽然从来没有任何HTTP请求。

任何澄清将是伟大的。 谢谢!

在TCP套接字开发中,据我所知(已经有一段时间了,可能有点closures),服务器有一个监听套接字调用bind,listen和accept等待。 一旦有传入连接,接受将解除阻塞并返回另一个套接字对象。 这个第二个套接字对象将像实际连接的句柄一样,可以执行networkingI / O,而原始套接字可以循环回来接受networking连接。 这个操作不会占用一个短暂的端口。

我不确定操作系统在连接pipe理方面的确切内部工作原理,但是对于我来说,networking驱动程序可以在调用accept时将远程ip /端口组合的连接关联到特定的句柄ID。 这允许networking驱动程序成功地将networkingI / O路由到正确的套接字句柄,同时允许来自同一本地端口的新的TCP握手,而不需要真正需要额外的端口而由听众处理不同的远程IP /端口。 侦听器将再次调用accept并为下一个传入连接创build一个新的I / O套接字句柄等等。

这是一个WinSock服务器套接字的例子: 链接 。 这里是accept函数的描述和返回值: link 。