设置TCP连接需要多少数据?

时间:2015-07-13 08:14:37

标签: tcp handshake

我正在构建一个应用程序,我的手机经常将数据发送到我的服务器。由于我将使用我的移动数据,我想知道设置(并拆除?)与我的服务器的TCP连接需要多少数据。

1 个答案:

答案 0 :(得分:5)

TCP三次握手

  

设备1将其TCP序列号和最大段大小发送到设备2。

     

设备2通过向设备1发送其序列号和最大段大小来响应。

     

设备1确认收到了序列号和段大小信息。

每个数据包由IP头和数据(有效负载)组成。在这种情况下,数据部分包含TCP。 TCP标头包含各种字段,包括源和目标端口,序列和确认号,窗口大小,TCP标志,紧急指针和保留位。

与IP标头类似,TCP标头也可能包含选项。 (请注意,TCP选项和IP选项是两个不同的选项。)因为TCP选项会更改TCP标头的长度,所以长度在标头中设置。

IPv4标头是五个4字节的块,或总共20个字节。

TCP通常使用标头的 24字节进行握手(前两个数据包),使用 20 进行正常的数据包传输。

  

最大段大小(MSS):4个字节

     

窗口比例(WSCALE):3个字节

     

时间戳(TS):10个字节

     

无操作(NOP):1个字节

     

允许选择性确认(SackOK):2个字节

     

选择性确认数据:10个字节(每增加一对序列号加8个字节)

终止连接

即使使用三次握手建立连接只需要传输3个数据包,但拆除一个需要4个数据包!

  • 在第一帧中,客户端发送伴随ACK的FIN。 FIN参数已设置,它将通知服务器它没有更多数据要发送。
  • 响应(第2帧)只是服务器确认从客户端发送的FIN。
  • 尽管TCP已在两台计算机之间建立了连接,但这些连接仍然是彼此独立的。因此,服务器也会将FIN传输给客户端。
  • 你猜对了......客户端会在最后一个数据包中确认服务器的FIN。

每个帧的偏移量通常 20个字节。

总结一下。

建立连接:~128-136字节

拆除连接:~160字节

如果您计划使用TLS / SSL握手,估计介于4.5k-6.5k之间。

注意:请同时查看TCP/IP Header Compression

<强>来源:

Inside the TCP Handshake

Explanation of the Three-Way Handshake via TCP/IP

Studying Normal Traffic, Part Three: TCP Headers | Symantec Connect