如何找到较低层使用的协议?

How to find which protocol is used by lower layers?

当我们键入 https://whosebug.com/ 时,发送到此服务器的所有数据都将在传输级别使用 HTTPS 协议

那么我是否有可能知道我的机器和位于中间节点的较低(物理、数据 link、网络)层通常使用哪些错误检测、流量控制或协议在从我的机器到目标服务器的路径中(假设中间节点很少)。

为了弄清楚使用了什么样的底层,我总是使用 WireShark。

启动 Wireshark,输入“tls”作为过滤器(因为 WireShark 中没有“https”过滤器),您将获得大量网络流量,如下所示:

查看“应用数据”网络包的详细信息,

您将看到网络堆栈(从上到下):

  1. 传输层安全性 (TLS):用于在 TCP 连接之上安全传输数据
  2. 传输控制协议 (TCP):它用于在通过互联网连接的两个不同主机上的两个网络应用程序 运行 之间可靠地传输数据。 [传输层]
  3. 互联网协议(IP):它用于在通过互联网连接的主机之间传输数据。 [网络层]
  4. 以太网II:用于在底层以太网物理层传输上传输数据。 [数据Link层]

您可以选择其中任何一项查看详细信息。

对于“错误检测”、“流量控制”,您可以通过 Wireshark 提供的 TCP 过滤器过滤网络流量,

如:

"tcp.analysis.retransmission", 

"tcp.analysis.window_full", 

"tcp.analysis.window_update",

and so on. 

如果你对TCP有很好的了解,你可以轻松阅读它们。:)

您通常无法从数据路径中的其他设备获取如此低级别的信息。您可以在本地网络内部获取一些第 2 层信息,但无法从路由器之后的设备(即 LAN 外部)获取此类数据。

有时可以根据检测到的路径中的 MTU (PMTU)、延迟问题、缓冲行为或基于某些设备的已知行为异常或特性引起的奇怪问题做出一些假设,但没有通用的方法来访问此类较低级别的信息。