当我将数据从一台机器传输到另一台机器时,根据 ifconfig 和 ip -s link,我看到 RX 字节和 TX 字节都在增加:
传输之前,在发送节点:
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP qlen 1000
link/ether 18:a9:05:44:c2:e4 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
**1553791138** 1916309 0 0 0 0
TX: bytes packets errors dropped carrier collsns
**1035423346** 1330442 0 0 0 0
用于发送数据的命令(另一端使用监听套接字):
dd if=/dev/zero bs=400000 count=50 | netcat 14.4.12.5 20000
传输后,在发送节点:
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP qlen 1000
link/ether 18:a9:05:44:c2:e4 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
**1574414164** 1921752 0 0 0 0
TX: bytes packets errors dropped carrier collsns
**1055706644** 1334263 0 0 0 0
可以看到,TX 字节和 RX 字节都增加了相同的量。接收节点也是如此。
我的理解是 TX 是发送,RX 是接收。那么为什么它们在单向传输中都会增加呢?如果我指定 UDP,那么它会按预期工作 - TX 在发送节点上增加,RX 在接收节点上增加。但这不可能只是由于 TCP 中的控制消息,因为不应该有 20MB 那么多?我遗漏了什么?这是在亚马逊 EC2 实例之间,而且我还看到这种行为在联网的两个物理刀片之间。