我正在学习Network Protocols,发现最底层的是原始以太网协议:
以太网:这是使用MAC地址将数据发送到本地网络上另一台计算机的基本协议。这是所有其余部分的基石,如果您想与外界通信,则需要将数据发送到路由器。
上面是Internet协议(IP),其中的TCP和UDP是示例。在TCP之上是HTTP,或者在SSL之上可以放置HTTP(即HTTPS)。
似乎浏览器只允许您进入IP级别(TCP用于常规消息传递连接,而UDP用于视频之类的东西)。但是我想知道,是否有可能比浏览器中的更低。如果不是,那么想知道为什么不这样做。如果是这样,那么可能是一个例子。
答案 0 :(得分:4)
“看来,浏览器只能让您浏览到 IP(TCP用于常规消息传递连接,而UDP用于 例如视频)。
首先,TCP和UDP是IP的不是示例。它们是传输层协议,位于IP之上。
5层模型的这种表示应有助于区分:
如果要观察所有流量,则可以使用Wireshark-或Fiddler之类的工具来捕获和检查跨不同层的数据包。
信息从一层到另一层传播,但不会跳过层:
您对网页的请求使用所有图层。它始于应用程序层,即面向用户的层,一直向下到堆栈,直到网络层将您的请求传输到服务器的网络层,然后再向上到达堆栈以获取网页。
的本文中详细了解数据包在协议栈中的传播方式。数据包是信息传输的基本单位 一个网络。数据包至少包括一个带有 发送和接收主机的地址,以及包含数据的正文 转入。当数据包通过TCP / IP协议栈传输时, 每层的协议都可以从基本协议中添加或删除字段 标头。当发送主机上的协议将数据添加到数据包时 标头,此过程称为数据封装。而且,每一层 更改后的数据包具有不同的术语,如下所示 图。
答案 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插件来完成此操作;现在,浏览器无法提供替代产品,因此您基于浏览器的,涉及多播的应用程序已失效。