如何确定数据包的大小

时间:2014-04-18 18:09:18

标签: networking

假设我为HTTP请求和响应启动TCP连接。完成三路握手过程后,我现在向服务器发送一个请求设置了SYN标志的HTTP数据包的请求。服务器使用ACK标志响应我的请求。完成回复后,它会发给我一个FIN标志。现在,如何确定服务器在请求和响应期间发送给我的数据包的大小?有没有这样做的过程?

1 个答案:

答案 0 :(得分:0)

  

假设我为HTTP请求和响应启动TCP连接。完成三路握手过程后,我现在向服务器发送一个请求设置了SYN标志的HTTP数据包。

不,不。 SYN是在三次握手中发送的第一个数据包中。那已经完成了。在最好的情况下,您将在连接握手的最终ACK数据包上捎带HTTP请求。

  

服务器使用ACK标志响应我的请求。

不,服务器通过HTTP响应响应您的HTTP请求。 ACK在HTTP级别无关紧要。

  

完成回复后,它会向我发送FIN标志。

不,它不会,除非您说的是HTTP 1.0或者您已设置Connection:close标头。否则,它将保持HTTP keepalive的连接打开。

  

现在如何确定服务器在请求和响应期间发送给我的数据包的大小?有没有这样做的过程?

服务器在请求期间没有向您发送任何内容。响应主体的大小由Content-length标头或chunked-encoding节大小的总和给出(如果使用的话)。您需要阅读关于此的HTTP 1.1 RFC,这是非常重要的。

您还需要停止使用TCP混淆HTTP。 HTTP是分层顶部的应用程序协议。