Я хотел бы отправить несколько сырых битов по кабелю Ethernet между двумя компьютерами. Ошибки в данных, возникшие во время передачи, исправляются с помощью последовательности проверки кадров Ethernet (FCS) (например, CRC: проверка избыточности цикла) и дальнейших проверок верхними уровнями, такими как TCP.
Но я не хочу, чтобы применялись какие-либо методы исправления ошибок. Я хочу видеть точные биты, полученные с ошибками, возникающими при передаче. Я видел несколько статей (например, http://hacked10bits.blogspot.in/2011/12/sending-raw-ethernet-frames-in-6-easy.html) при отправке сырых кадров Ethernet, но я думаю, что они также проходят FCS, как проверки CRC. Можно ли отправить данные без исправления таких ошибок. Спасибо.
Изменить 1
Я подключаю два компьютера напрямую друг к другу с помощью кабеля Ethernet (без коммутаторов или маршрутизатора между ними). Кабель Ethernet - «CAT 5E», помеченный как «Сетевой коммутационный кабель B CAT 5E 24AWG 4PR-ETL TIA / EIA-568B».
Результат lspci -v (почти одинаковый для обоих компьютеров):
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
Subsystem: Lenovo RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
Flags: bus master, fast devsel, latency 0, IRQ 28
I/O ports at e000 [size=256]
Memory at f7c04000 (64-bit, non-prefetchable) [size=4K]
Memory at f7c00000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
Capabilities: [170] Latency Tolerance Reporting
Kernel driver in use: r8169
Kernel modules: r8169
Я использовал следующую команду, чтобы показать FCS и не отбрасывать плохие кадры
sudo ethtool -K eth0 rx-fcs on rx-all on
Тем не менее я не получаю никаких ошибок / плохих кадров. Я отправляю 1000 бит нулей в каждом кадре, и ни один из полученных битов не имеет единиц. Нужно ли мне постоянно отправлять много таких кадров, чтобы получить плохой кадр? (Поскольку частота ошибок по битам, вероятно, намного меньше для кабеля CAT 5E) Кроме того, могу ли я реализовать свой собственный протокол локальной сети с тем же текущим сетевым адаптером и кабелем Ethernet?
По сути, я хочу получить как можно больше ошибок во время передачи и обнаружить их все.