数据如何划分为数据包?

边垫

您好,抱歉,如果这是一个愚蠢的问题(我刚刚开始学习网络编程),但我一直在Google各处搜索有关文件/数据如何划分为数据包的信息。我到处都读到,通过OSI模型,文件以某种方式分解为数据包会应用标头/页脚,并通过电线发送,接收方基本上会反向操作并删除标头。

我的问题是文件/数据如何精确地分解为数据包,以及如何在另一端重新组装它们?

重新组装的内容如何知道最后一个数据包何时到达等?

是否可以重组从另一台计算机捕获的数据包?如果是这样怎么办?

(如果还有什么意思,我最感兴趣的是如何处理TCP类型的数据包)

我还通过WireShark从计算机上的应用程序捕获了一些数据包,它们被标记为TCP协议,我要做的是将它们重新组装回原始数据,但是如何分辨哪些数据包属于哪组数据?

任何指向资源的指针都非常感谢,谢谢!

用户名

我的问题是文件/数据究竟如何分解为数据包

通过网络发送的内容不一定是文件。在这情况下一个文件,也有可能将文件发送几种不同的协议,而问题的答案取决于协议。

对于FTP和HTTP,文件的全部内容可能以单个数据流的形式通过TCP发送(对于HTTP,则为标头;对于FTP,则为原始格式)。

对于TCP,客户端和服务器会根据诸如服务器和客户端之间各种网络上的最大数据包大小之类的因素来协商“最大段大小”,并且文件数据按大小依次为块的顺序发送受最大数据包大小以及IP和TCP标头的大小限制。

对于诸如SMB,NFS和AFP之类的远程文件访问协议,通过网络进行的是“文件读取”和“文件写入”请求。对“文件读取”请求的回复包括一些回复标头,如果读取成功,则包含读取请求所请求的文件数据块,而“文件写入”请求则包含一些请求标头和文件数据块被写。那些不是按顺序保证是整个文件,但是如果读取或写入文件的程序是按顺序读取或写入整个文件,则整个文件的数据将可用。数据包的大小将取决于读取答复/写入请求标头的大小以及所使用的读取或写入大小。根据TCP“最大段大小”以及IP和TCP标头的大小,这些数据包可能会分成多个TCP段。

我的问题是文件/数据究竟如何分解为数据包

对于FTP,当TCP连接的正在传输数据的一侧关闭时,数据的接收者知道没有更多的数据。

对于HTTP,当正在通过其传输数据的TCP连接的一侧关闭时,或者如果该连接处于“持久”状态(即,对于更多请求保持打开状态,并且答复)时,在“ Content-Size:”标头指定的数据量已发送之前(或其他类似的机制,例如用于分块编码的“最后一个块”指示)。

对于文件访问协议,没有真正的“我们在数据尽头”的指示;对于SMB,AFP和NFSv4,最接近的近似值是“文件关闭”操作。

是否可以重组从另一台计算机捕获的数据包?如果是这样怎么办?

它取决于协议,但是,对于HTTP和SMB,如果捕获已读取到Wireshark中(并且所有文件数据都在捕获中!),则可以使用“导出对象”菜单,对于某些协议,您也许还可以使用tcpflow

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将比特流划分为数据包

来自分类Dev

UDP数据包可以分为几个较小的数据包吗

来自分类Dev

C ++ Stop CAsyncSocket将单个大数据包拆分为多个小数据包

来自分类Dev

如何使用php将视频拆分为多个数据包?

来自分类Dev

如何使用php将视频拆分为多个数据包?

来自分类Dev

栅格数据包将图像拆分为多个

来自分类Dev

如何正确读取/发送数据包?

来自分类Dev

如何侦听ICMP数据包?

来自分类Dev

如何使用bpf返回数据包

来自分类Dev

如何确定数据包的大小

来自分类Dev

如何接收多播数据包?

来自分类Dev

如何管理大量传入数据包

来自分类Dev

如何使用被scapy嗅到的数据包

来自分类Dev

实际的数据包应如何构造?

来自分类Dev

TCP 数据包的缓冲是如何工作的?

来自分类Dev

iptables后如何记录数据包?

来自分类Dev

如何从蓝牙数据包数据中提取数据?

来自分类Dev

OpenSSL服务器数据包分为每个数据包270个字节

来自分类Dev

如何将数据包类的实例拆分为多个块,然后使用socket_sendto函数将其发送?

来自分类Dev

Scapy-如何检查嗅探到的数据包的数据包类型

来自分类Dev

如何有效地发送大数据包/合并小数据包?

来自分类Dev

如何从ejabberd数据包对象获取数据?

来自分类Dev

Python如何拆分数据包以提取数据

来自分类Dev

如何从ICMP Time Exceeded数据包中取回数据?

来自分类Dev

如何保护udp数据包免于丢包?

来自分类Dev

pandas如何将数据划分为夜间数据和白天数据

来自分类Dev

识别组数据包?

来自分类Dev

应答UDP数据包

来自分类Dev

UDP数据包分片