快速的http通信

时间:2015-06-24 21:01:29

标签: sockets http tcp network-programming udp

我希望远程服务器通过已建立的持久TCP连接快速发送和处理http消息 如何优化沟通?

我有一些想法,但我对网络知识不足以了解它们是否有意义:

  • HTTP位于TCP之上。但它如何正常工作?具体来说,如果我发送1条http消息,它是否只转换为1 tcp消息? (我知道最初的握手需要3次往返时间,但我不关心这一点,因为连接已经建立)。我想这取决于服务器可以接受的最大段大小?
  • 如果需要,我可以要求服务器提供更大的最大段大小吗?我怎么能这样做(我使用python,httplib和socket模块,这将是这种语言的理想选择。)
  • 远程服务器使用TCP,但我可以尝试发送UDP消息吗?我知道UDP速度更快,但这个想法有用吗?

1 个答案:

答案 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来说是必要的。