链路层,ip 层都有 type 或 next_header 字段指示下一层的协议类型,那么 TCP 有没有类似的字段。 举个例子,tcp 通过 dst_port 交付给上层应用后,该应用如何识别 payload 是 http 或 tls 乃至其他协议
链路层,ip 层都有 type 或 next_header 字段指示下一层的协议类型,那么 TCP 有没有类似的字段。 举个例子,tcp 通过 dst_port 交付给上层应用后,该应用如何识别 payload 是 http 或 tls 乃至其他协议
|
shibo501cMar 20, 2023 via Android
1
不识别,上层自己识别
|
|
2
@shibo501c 现在有个需求是抓完包后进行解析,如果是 HTTP 需要解析出类似 StatusCode 的信息,如果是 TLS 解析出 Cipher Suite 和证书等,这就需要根据 application 层是哪个协议交给哪个 function 去处理,现在卡在这里了
|
|
NewYearMar 20, 2023
3
运行在 TCP 下的协议千千万,如何预留字段呢,要预留多长呢,谁去规定好这千千万的协议具体用到了什么标志呢……
不要想当然啊哥们。 |
|
MithrilMar 20, 2023
4
@Summ2r 如果只是这俩的话,简单点就靠端口猜,复杂点就靠读一部分 payload 猜。
Wireshark 就是这么干的,实在猜不出来就给你显示个 Data Protocol 。 |
|
LineProMar 20, 2023
5
一般来说是拿到 TCP 流的数据以后,根据协议特征去判断,比如 HTTP/1 可以判断响应数据的前四个字节是不是 HTTP 这样。
Wireshark 是开源的,你可以参考看看它是怎么做的。 https://github.com/wireshark/wireshark |
|
wheat0rMar 20, 2023
6
深度包检测?
|
|
echoechoinMar 20, 2023
7
nDPI
|