我希望远程服务器通过已建立的持久TCP连接快速发送和处理http消息 如何优化沟通?
我有一些想法,但我对网络知识不足以了解它们是否有意义:
答案 0 :(得分:-1)
我会允许自己在文本中发表评论/回答:
我有一些想法,但我对网络知识不够了解 要知道它们是否有意义:
完全!在维基百科上阅读TCP和HTTP,获取初学者资料。这将使事情更容易讨论。可能也比在stackoverflow上询问更快;)
HTTP sits on top of TCP. But how does it work exactly?
嗯,就像协议在分层协议栈中相互协作一样。阅读维基百科的TCP文章,以及OSI / ISO层模型。
具体来说,如果我发送1条http消息,它只会转换为1 tcp消息?
没有。 HTTP本身并不关心(并且不必)涉及多少个较低级别的数据包通信被分割。
(我知道最初的握手需要3次往返时间, 但我并不关心这一点,因为连接已经存在 建立)。
3次?这不是有意义的事情。阅读有关TCP握手以及HTTP如何请求文档的信息。
我猜这取决于最大段大小 服务器可以接受吗?
在许多不同的其他因素中;真的:HTTP不会关心至少!
Can I ask the server for a bigger maximum segment size if needed?
没有。您的网络堆栈很可能会自动使用最大的MTU。
我该怎么做(我使用python,httplib和socket模块,它会 这种语言的理想选择。)
The remote server works with TCP, but could I try sending it UDP messages?
有一些专门的HTTP-over-UDP协议,但它们不是 HTTP。通常,HTTP是通过TCP进行的,但同样,互联网在分层协议栈上运行,而更高级别的协议通常不关心传输数据的内容 - 你可以很好地在运营商pidgeons上进行HTTP会话!
我知道UDP更快,但这个想法有用吗?
不是。这是一种误解。 UDP没有自动重新请求在途中丢失的数据包,对于多媒体或游戏这样的事情可能有意义,但使用TCP会为您提供有序的会话,这对HTTP来说是必要的。