1

在本科期间,我选择参加使用 POSIX 套接字 for linux 的网络编程课程。作为参考,我们使用了 Internetworking using TCP/IP (comer and stevens) 一书。2008 年它是一个相当过时且仍然适用的文本,它需要一个通过多个服务器设计。

书中没有真正介绍的一种设计是客户端连接到后端应用程序服务器通过单个 TCP 连接向服务器发送多个请求的情况。由于多个请求通过从属套接字发送到服务器,并且响应通过同一个从属套接字发送。当响应和请求通过同一个套接字接收时,从套接字变得拥塞,是否允许在端点之间建立第二个 TCP 连接以实现全双工通信速度是更好的选择?还可以使用哪些其他架构来提高服务器性能?

4

2 回答 2

2

由于套接字只是附加到数据包的数字(称其为路由号或地址),我无法想象套接字本身会变得拥挤。

您可以处理套接字的代码,但这应该很容易通过在数据包到达时分发数据包来解决。

您还可以对传入和传出的数据包处理进行编码,使其发生在不同的线程上,甚至可以将数据包排队以分发给多个线程。

但我真的不认为最初的假设是完全准确的。我可能是错的...

于 2008-11-12T19:30:20.530 回答
1

TCP 连接已经是全双工的。您可以(简化事情)将 TCP 连接视为一对单向连接(一个发送和一个接收)。

通过单个连接发送多个请求实际上用于提高多个协议的性能(因为重用连接可以避免握手和慢启动开销)。一个例子是 HTTP 保持连接。另一种提高性能的方法是使用流水线(发送多个请求而不等待响应),这显然只能在您为多个请求重用 TCP 连接时才能完成。

于 2008-11-12T19:42:58.070 回答