我知道链路层有以太网,令牌环,FDDI 等协议,
但是如何知道执行特定任务(例如浏览网页)所使用的确切协议?
答案1
首先你必须了解OSI模型可以帮助的一些事情:
你说的协议是应用协议,是在应用层处理的,这一层的内容被封装起来并传递给紧接着的一层(Presentation),依此类推。所以每一层只需要知道与它直接相关的层是什么格式。
这意味着 FTP、HTTP 等应用协议实际上并没有被链路层识别,链路层只关心 MAC 地址以及与网络层和物理层的对话。
如果你想知道某件事在哪一层或用了什么协议,你可以查阅 IANA 长列表或使用维基百科简化清单的协议。
答案2
- 协议是抽象的,因此您不需要知道。
- 即使您确实知道您和第一跳之间使用了什么链路层,它也会在路由上发生变化(以太网 -> PPPoE -> ATM -> 串行 ->....)
有一些技巧可以对什么进行逆向工程可能正在进行。取决于您是尝试访问网页还是执行侦察。
答案3
目前还没有明确的方法来追踪 TCP/IP 传输路径中使用的媒体,该协议专门设计用于从更高级别的协议中抽象出这种方式。有时提示可以通过检查 MTU 大小等内容来收集信息,因为某些传输介质使用略有不同的 MTU,但更高级的路由器会重新组装数据包以隐藏那么多信息。
最好的办法是沿着路径运行跟踪路由。有时,电信公司给出的跳数名称可以告诉您这是哪种类型的链接,然后进行足够的谷歌搜索有时可以告诉您该段上可能采用哪种类型的媒体路径。
请记住,媒体转换会隐藏所有这些。十年前,我遇到过一次令人难忘的故障排除案例,一个以太网段在跳数(路由器 -> 光纤 -> 双绞线 -> 粗网 -> 双绞线 -> 分配交换机)之间转换了 3 次,在查看数据包时看不到这些转换;唯一能说明这种情况发生的线索是数据包间延迟和往返时间,即便如此,也需要查阅网络文档才能弄清楚到底发生了什么。谈到互联网通信时,这种情况会变得更糟。
答案4
我将从可能不同的角度补充我的答案。
查看 coredump 答案中的 OSI 模型。
有这个“网络”层(从下往上为第 3 层)。它的职责是浏览互联网上所有混乱的网络和路由器并“找到到达目的地的方法”。第 3 层数据包通常在从发送设备到接收计算机的整个路径上都是相同的、不变的(请忽略沿途的一些细微调整)。为什么?因为它的工作是:使通信的两个端点能够相互到达,穿越不同的众多网络。
第 2 层协议“数据链路”(以及使用此协议构建的帧)的工作完全不同。它的工作是使两个网卡 (NIC) 相互通信在同一网络上。当您的消息(帧内的数据包)从计算机发送到家庭网络并到达下一个 NIC(我想是在路由器上)时,第 2 层帧将被丢弃,只有第 3 层数据包及以上数据包通过。在路由器的另一侧,将创建另一个全新的第 2 层帧(可能根据不同的协议构建),并携带原始第 3 层数据包。
假设您有一个家庭网络和一个 ADSL 互联网连接。如果您想浏览 facebook.com,您的计算机将始终生成一个 IP 数据包(第 3 层),该数据包将始终封装在以太网帧(第 2 层)内。协议不会改变,它始终是以太网。此帧(包含数据包)将由蓝色电缆传送到您的路由器。在路由器上,仍然在您家中,您的以太网帧将丢弃,并且 IP 数据包将被封装在另一个第 2 层帧中,但这次是 ADSL 帧,而不是以太网帧!
每次您更换网络时(您在互联网海洋中旅行时会多次更换网络!)第 2 层帧都会被丢弃并创建另一个帧。
所以你问这个问题毫无意义”如何知道执行特定任务(如浏览网页)所使用的确切协议“,因为第 2 层协议根本就不知道什么是网页。它们的工作就是把 IP 数据包从同一网络上的 NIC A 带到 NIC B。而使用什么第 2 层协议取决于网络,而不是应用程序(这是第 7 层协议的工作)。
摘要:
- 第 2 层协议(以太网、FDDI 等)与所使用的物理网络技术相关。
- 第 3 层协议(如今主要是 IP)与到达目的地的路径相关。
- 第 3 层数据包在第 2 层帧内传输。
- 第 3 层数据包在整个旅程中都存活下来,第 2 层帧在沿途的每个路由器上都会消失 - 并且您的路径上有多个路由器。
- 协议的第 2 层和第 3 层都不知道应用程序正在做什么。 他们根本不知道!
- 如果您想知道哪些协议用于哪些应用程序,则必须研究第 4 层(传输层)和第 7 层(应用程序)协议。
总结:如果你在家,你的硬件(电缆、网卡、路由器)可能是以太网,所以无论你正在做什么(浏览、FTP、流媒体、聊天等),帧都会始终以以太网的形式离开你的计算机。所以你的问题根本就没有任何意义。