为什么主机B发送数据时没有发送序列号?

img


主机B除了发送的第一条数据和最后一条都没有加序列号,主机A也没有写确认号,这样是可以的吗

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7705709
  • 这篇博客你也可以参考下:B站最好的计算机网络视频-计算机网络概述
  • 除此之外, 这篇博客: 在下图所示的网络配置中,发现工作站B无法与服务器A通信,()故障影响了两者之间的通信中的 原因分析: 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    在网络协议中,主机B在发送数据时没有发送序列号的原因是因为TCP协议已经为每个数据包添加了序列号和确认号的字段。主机A在接收数据时,会根据序列号确认是否按顺序接收到数据,并通过确认号告知主机B已经成功接收数据。

    下面是TCP协议中序列号和确认号的工作原理:

    1. 主机A发送数据给主机B时,TCP协议会为每个数据包分配一个序列号,该序列号用于标识发送数据包在整个数据流中的相对位置。这个序列号是递增的,确保按照正确的顺序接收数据包。

    2. 主机B接收到数据包后,会发送一个确认号给主机A,确认号表示主机B已经成功接收到了序列号之前的所有数据,并期望接收下一个序列号的数据。如果主机B没有正确接收某个序列号的数据或有数据丢失,它会通知主机A重新发送丢失的数据。

    3. 主机A在收到主机B发送的确认号后,会继续发送下一个序列号的数据包。如果主机A没有收到主机B发送的确认号,它会认为数据包没有成功发送,会重新发送。

    这种设计下数据传输是可靠的原因在于,TCP协议使用了可靠的确认机制。主机A发送数据后,会等待主机B发送的确认号,如果没有收到确认号,就会超时重传。

    为什么主机B在发送数据时不添加序列号?

    主机B在发送数据时不需要添加序列号,是因为主机A和主机B建立连接时,TCP协议已经为双方的数据包添加了序列号字段。主机B只需要按照这个序列号的顺序发送数据包即可。主机B无需额外的工作来添加序列号。

    为什么主机A不写确认号?

    主机A在接收到数据包后会向主机B发送确认号,表示已接收到数据。主机A不写确认号是因为确认号是响应数据的一部分,并且会在TCP协议的头部发送给主机B。主机A无需在发送数据时写确认号。

    综上所述,通过TCP协议的序列号和确认号机制,主机A和主机B可以保证数据传输的可靠性和完整性。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^