Sockets 快速http通信

Sockets 快速http通信,sockets,http,tcp,network-programming,udp,Sockets,Http,Tcp,Network Programming,Udp,我希望远程服务器通过已经建立的持久TCP连接快速发送和处理http消息 如何优化沟通 我有一些想法,但我对人际网络了解不够,不知道它们是否有意义: HTTP位于TCP之上。但它究竟是如何工作的呢?具体来说,如果我发送一条http消息,它是否只转换为一条tcp消息?我知道初始握手需要3次往返时间,但我不在乎这一点,因为连接已经建立。我想这取决于服务器可以接受的最大段大小? 如果需要,我可以要求服务器提供更大的最大段大小吗?我该怎么做呢?我使用python、httplib和socket模块,这是这种

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

我有一些想法,但我对人际网络了解不够,不知道它们是否有意义:

HTTP位于TCP之上。但它究竟是如何工作的呢?具体来说,如果我发送一条http消息,它是否只转换为一条tcp消息?我知道初始握手需要3次往返时间,但我不在乎这一点,因为连接已经建立。我想这取决于服务器可以接受的最大段大小? 如果需要,我可以要求服务器提供更大的最大段大小吗?我该怎么做呢?我使用python、httplib和socket模块,这是这种语言的理想选择。 远程服务器使用TCP,但我可以尝试向其发送UDP消息吗?我知道UDP更快,但这个想法行得通吗?
我将允许自己在文本中进行评论/回答:

我有一些想法,但我对网络知识不够 要知道它们是否有意义:

没错!阅读TCP和HTTP,在维基百科上,了解入门知识。这将使事情更容易讨论。可能也比询问stackoverflow更快

嗯,就像协议在分层协议栈中相互作用一样。阅读维基百科的TCP文章,了解OSI/ISO层模型

具体地说,如果我发送1条http消息,它是否只转换为1条 tcp消息

不,HTTP本身并不关心,它也不必考虑到底有多少低层数据包被分离

我知道初次握手需要3次往返时间, 但我不在乎这一点,因为联系已经建立起来了 建立

3次?这是没有道理的。了解TCP握手以及HTTP如何请求文档

我想这取决于 服务器可以接受吗

在许多其他因素中;真的:HTTP根本不在乎

不可以。您的网络堆栈很可能会自动使用工作的最大MTU

我该怎么做呢?我使用python、httplib和socket模块,应该是 这是一种理想的语言

The remote server works with TCP, but could I try sending it UDP messages?
有一些专门的HTTP over UDP协议,但它们不是HTTP。一般来说,HTTP是通过TCP进行的,但同样,internet是在一个分层协议栈上工作的,更高级别的协议通常不关心传输数据的内容-您完全可以通过运营商pidgeons进行HTTP会话

我知道UDP更快,但这个想法行得通吗


不是。这是一种误解。UDP没有自动重新请求途中丢失的数据包,这对于多媒体或游戏可能是有意义的,但使用TCP可以为您提供一个有序的会话,这对于HTTP是必要的。

嗨,Marcus,感谢您的回答。让我重新表述一下:+TCP确实发送了3条消息来建立握手。这就是你可以通过Wireshark这样的工具看到的。可能不是三次往返,但至少三次你说http不关心它被发送了多少tcp数据包。这不是我的问题。我的问题是:如果http消息足够小,它会通过一个数据包发送吗?我能帮点忙吗?+最后,UDP通常被认为速度更快,但在应用程序级别更具损耗性。如果http消息为一个字节或更小,则为“是”。IIRC,该集中没有http消息。@DevShark我仍然不同意。UDP没有比这更快的了。这是一个IP协议,就像TCP一样。因此,交付数据所需的时间完全相同。额外的开销可能来自这样一个事实,即TCP需要首先建立一个连接,如果传输的另一端没有确认太多的数据包,则TCP会阻塞,但这在今天是不相关的,因为传输和接收窗口,除非数据包真的丢失,在这种情况下,如果不是因为TCP的自动恢复,HTTP就会崩溃。@DevShark更多的损失是绝对的。HTTP Transaction要么没有丢失,要么已断开。UDP不能容忍丢失,因此更容易丢失。同样,这是根据。
Can I ask the server for a bigger maximum segment size if needed?
The remote server works with TCP, but could I try sending it UDP messages?