Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在开发一个从 Tap 读取的程序。唯一的问题是,我不知道如何检测到水龙头的一次传输结束和另一次传输的开始。
从水龙头读取是否与 SOCK_STREAM 相同?
Tun/tap 试图看起来像一个普通的以太网控制器,但 tap 设备本身就像任何其他文件描述符一样被访问。
由于它伪装成以太网控制器,因此您必须提前知道传输的以太网帧本身有多大 - 这来自分接设备所连接的软件桥或原始以太网中的“长度”字段框架。
这当然只能是 Tap 设备的 MTU 大小的最大值,通常默认为 1500 字节。
因此,在对分接设备的文件描述符执行 read() 之前,您必须弄清楚以太网帧的实际大小。