0

我想实现一个简化的 TCP/IP 堆栈。现在我正在编写我的tcp_connect函数。在握手步骤中,我可以发送没有 TCP 选项和数据的 TCP 段(仅在客户端发送 TCP 标头)吗?

4

2 回答 2

1

我认为不需要任何选项。但是,如果您不发送最大分段大小选项,则假定的默认 MSS 仅为 576。

TCP 握手段通常不包含任何数据。但是,包含它是合法的,因此如果您的堆栈收到它,它应该接受它。

于 2013-03-18T06:31:40.643 回答
0

RFC793中只描述了三个(实现简单)选项:

  Kind     Length    Meaning
  ----     ------    -------
   0         -       End of option list.
   1         -       No-Operation.
   2         4       Maximum Segment Size.

您可以尝试仅将“选项列表结束”附加到 TCP 标头,或使用预定义的模板。

作为客户端,您可能不会在传出的握手段中添加数据,但您应该能够在接受连接时处理传入的握手段。


我按你说的试过了,但没有得到回应。

您是否尝试在另一端使用 TCPdump 之类的东西?任何传入的段?

于 2013-03-18T15:21:11.560 回答