///|
/// 解析 TCP 头:src port 0 / dst port 2 / Data Offset 字节 12 高 4 位
fn parse_tcp(data : Bytes, off : Int, ip_payload : Int) -> (Int, Int, Int)? {
  guard ip_payload >= 20 else { return None }
  let sport = u16(data, off)
  let dport = u16(data, off + 2)
  let data_offset = (data[off + 12].to_int() >> 4) * 4
  guard data_offset >= 20 && data_offset <= ip_payload else { return None }
  Some((sport, dport, ip_payload - data_offset))
}