我正在构建一个应用程序,我的手机经常将数据发送到我的服务器。由于我将使用我的移动数据,我想知道设置(并拆除?)与我的服务器的TCP连接需要多少数据。
答案 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个数据包!
每个帧的偏移量通常 20个字节。
建立连接:~128-136字节
拆除连接:~160字节
如果您计划使用TLS / SSL握手,估计介于4.5k-6.5k之间。
注意:请同时查看TCP/IP Header Compression
<强>来源:强>
Explanation of the Three-Way Handshake via TCP/IP
Studying Normal Traffic, Part Three: TCP Headers | Symantec Connect