tcp:在末尾重新组合数据

tcp:在末尾重新组合数据,tcp,Tcp,在保持连接的情况下,TCP如何知道大文件(由TCP分段)的最后一个数据包是哪个。(如ftp或在yahoo messenger上发送mp3) 我的意思是,它如何知道哪个包携带一个.mp3的数据,哪个包携带另一个.mp3的数据 有人吗 谢谢至少有两种可能的方法 预先声明要发送的数据量。类似于声明发送4008字节长消息的数据包 第二种方法是使用终止序列(nastier-to-process) 因此,接收者: 尝试读取声明的金额或 扫描终止序列 TCP是一种流协议,碎片应该对TCP应用程序透明。它

在保持连接的情况下,TCP如何知道大文件(由TCP分段)的最后一个数据包是哪个。(如ftp或在yahoo messenger上发送mp3)

我的意思是,它如何知道哪个包携带一个.mp3的数据,哪个包携带另一个.mp3的数据

有人吗


谢谢

至少有两种可能的方法

  • 预先声明要发送的数据量。类似于声明发送4008字节长消息的数据包
  • 第二种方法是使用终止序列(nastier-to-process)
因此,接收者:

  • 尝试读取声明的金额或
  • 扫描终止序列

TCP是一种流协议,碎片应该对TCP应用程序透明。它对数据流进行操作,而不是数据包。使用序列号将流组装到其预期顺序。应用程序发送的字节序列封装在tcp段中。在将数据传送到应用程序之前,在接收方重新创建流

IP协议可以进行碎片化


每个TCP段都连接到IP层,并可能在那里分段。通过收集所有数据包重新组装数据段,并使用来自报头的偏移字段将其放置在正确的位置

随机评论:通过设计解决这个问题,可惜它没有被更多地使用…我知道。。。但它如何知道形成文件的最后一个数据包是哪一个?我不在乎它是否透明。。现在我指的是不透明的方式,我的理解是它不知道。TCP只发送字节流,不关心它是什么。应用程序必须解释该流并将其划分为文件。它不在数据包上运行。是否在协议头(如ftp/ssh/http等应用程序协议)中指定了长度?但这是非常糟糕的,因为任何人都可以修改标题。