gpt4 book ai didi

tcp - 建立 TCP 连接需要多少数据?

转载 作者:可可西里 更新时间:2023-11-01 02:31:21 28 4
gpt4 key购买 nike

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

最佳答案

TCP 三向握手

Device 1 sends its TCP sequence number and maximum segment size to Device 2.

Device 2 responds by sending its sequence number and maximum segment size to Device 1.

Device 1 acknowledges receipt of the sequence number and segment size information.

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

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

IPv4 header 是五个 4 字节 block ,或总共 20 个字节。

TCP 通常通常使用 24 字节 的 header 用于握手(前两个数据包),大约 20 用于正常的数据包传输。

Maximum Segment Size (MSS): 4 bytes

Window Scale (WSCALE): 3 bytes

Timestamp (TS): 10 bytes

No Operation (NOP): 1 byte

Selective Acknowledgment Permitted (SackOK): 2 bytes

Selective Acknowledgment Data: 10 bytes (plus 8 bytes for each additional pair of sequence numbers)

终止连接

尽管使用 3 次握手建立连接只需要传输 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

关于tcp - 建立 TCP 连接需要多少数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31378403/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com