小编Ton*_*hen的帖子

如何在 tcpdump 中捕获 TCP/IP 碎片?

众所周知,MTU是1500,TCP的MSS是1460,所以当recv函数中使用的buf大于1460字节时,TCP会被拆分成很多部分。

我写了一个简单的 echo prog,并想使用 tcpdump 来检查碎片。但是buf小的时候不显示分片,buf在20K左右的时候显示。

这是代码:

服务器:

import socket
import sys
import os

addr = ('10.0.0.2',10086)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(addr)
server.listen(5)

while True:
    connfd, addr= server.accept()
    print 'connection ip:', addr
    data = connfd.recv(8192);
Run Code Online (Sandbox Code Playgroud)

客户:

import socket
import os
import sys

addr = ('10.0.0.2', 10086)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(addr)

data = '';
for num in range(0,8192):
    data += '1'

client.sendall(bytes(data))
Run Code Online (Sandbox Code Playgroud)

这是我使用的 tcpdump cmd:

须藤 tcpdump -i lo 端口 10086 -s 1514 -v

在此处输入图片说明

从代码上看,buf是8192,MSS是1460。所以,在我看来,数据包将被拆分为1460、1460、1460、1460、1460、892。但在截图中没有。

另外,我不确定这是否是由 [DF] 标志引起的。prog 使用的是 python,所以内置的 …

tcp tcpdump fragmentation

0
推荐指数
2
解决办法
9838
查看次数

标签 统计

fragmentation ×1

tcp ×1

tcpdump ×1