如果您可以在浏览器中进入比TCP低的级别

时间:2018-07-22 23:01:53

标签: networking browser tcp ip ethernet

我正在学习Network Protocols,发现最底层的是原始以太网协议:

  

以太网:这是使用MAC地址将数据发送到本地网络上另一台计算机的基本协议。这是所有其余部分的基石,如果您想与外界通信,则需要将数据发送到路由器。

上面是Internet协议(IP),其中的TCP和UDP是示例。在TCP之上是HTTP,或者在SSL之上可以放置HTTP(即HTTPS)。

似乎浏览器只允许您进入IP级别(TCP用于常规消息传递连接,而UDP用于视频之类的东西)。但是我想知道,是否有可能比浏览器中的更低。如果不是,那么想知道为什么不这样做。如果是这样,那么可能是一个例子。

3 个答案:

答案 0 :(得分:4)

  

“看来,浏览器只能让您浏览到   IP(TCP用于常规消息传递连接,而UDP用于   例如视频)。

首先,TCP和UDP是IP的不是示例。它们是传输层协议,位于IP之上。

5层模型的这种表示应有助于区分:

5 Layer Networking Model

  • 第二,如果“下降到以太网级别” ,则表示使用浏览器的开发工具检查数据包,则无法执行此操作。您只能看到HTTP数据包。

如果要观察所有流量,则可以使用Wireshark-或Fiddler之类的工具来捕获和检查跨不同层的数据包。

  • 如果您要询问浏览器是否可以使用 Application Layer 以外的任何层。不,它不能。这就是为什么您只能观察HTTP数据包的原因,因为那是浏览器运行的层。

信息从一层到另一层传播,但不会跳过层:

How packets travels through the TCP/IP stack from the sending host

您对网页的请求使用所有图层。它始于应用程序层,即面向用户的层,一直向下到堆栈,直到网络层将您的请求传输到服务器的网络层,然后再向上到达堆栈以获取网页。

  

数据包是信息传输的基本单位   一个网络。数据包至少包括一个带有   发送和接收主机的地址,以及包含数据的正文   转入。当数据包通过TCP / IP协议栈传输时,   每层的协议都可以从基本协议中添加或删除字段   标头。当发送主机上的协议将数据添加到数据包时   标头,此过程称为数据封装。而且,每一层   更改后的数据包具有不同的术语,如下所示   图。

您可以在有关Data Encapsulation and the TCP/IP Protocol Stack

的本文中详细了解数据包在协议栈中的传播方式。

答案 1 :(得分:1)

出于安全原因,浏览器仅允许使用定义明确的协议集。如果不是这种情况,网站上的Javascript可能会发送任意发送的数据包并造成恶意行为。

因此,浏览器API被限制为仅提供HTTP,websockets和webrtc。

答案 2 :(得分:0)

在过去(直到大约3年前),浏览器通过允许运行第三方插件来解决该问题,并且这些插件有(并且仍然有)API,例如NPAPI和ActiveX控件。因此,您可以创建一个可以执行任何所需操作,使用原始套接字或您自己的协议发送数据的插件。 Flash插件是最好的例子,并且在特定的Web应用程序中使用了很多鲜为人知的插件,例如Web会议,聊天,安全数据交换等。某些浏览器仍支持这些插件-IE,Opera,Firefox和Chrome Edge完全禁用了它们。原因是安全问题-如果您可以将自己的本机代码加载到浏览器中,那么您就可以完全访问OS,拦截浏览器中的所有数据,等等。为了替代这种禁用的自由,一些浏览器尝试发明新的更安全的API,例如Chrome的PPAPI。通常是失败的尝试。浏览器采用websocket可以缓解这种情况,但是仍然无法在浏览器中进行很多联网操作。一个臭名昭著的例子是浏览器中缺少UDP多播支持。以前,您可以使用自己的NPAPI插件来完成此操作;现在,浏览器无法提供替代产品,因此您基于浏览器的,涉及多播的应用程序已失效。