据我所知,如果 A 想要与 B 通信,他们只需选择某种协议并开始通信即可。
比如说他们选择HTTP作为短链接,那么B只需要等待A的请求然后响应A,就这样。
或者他们可以选择 TCP 来保持连接一段时间,以进行一些实时/双向通信,一旦完成,他们就会关闭它,就这样。故事结束。
但是为什么我们需要一个像隧道这样的额外术语以及为什么我们这样称呼它?
如果两点建立连接,那么这就叫做通过某种协议建立连接,为什么会有HTTP隧道或XXX隧道之类的东西呢?
我还读到了OSI
包含 7 层的内容。
我可以这么说吗:
我们在浏览网站的时候,大部分的请求和响应都是基于的HTTP
,对吗?
但HTTP
最上层需要network layer/IP
以及transport layer/TCP
,和我的HTTP packages
将被封装并发送到,IP layer
然后将它们封装到IP packages
和相同的到TCP packages
和一直到physical layer
。
我可以说这个过程就像隧道吗?由于原始包(HTTP packages
)被封装了好几次,以便适合较低的层。
我读过一些维基百科和定义,但所有细节都有点复杂,但在这里我只想知道印象或初衷。
答案1
我们在浏览网站的时候,大多数的请求和响应都是基于HTTP的,对吗?
是的。
但是 HTTP 是最顶层,它需要网络层/IP 以及传输层/TCP,我的 HTTP 包将被封装并发送到 IP 层,然后 IP 层将它们封装成 IP 包,并将其封装成 TCP 包,一直到物理层。
一般来说是的。
HTTP 和 TCP 之间通常会有 SSL/TLS 层;我猜 TLS 可能更适合“会话”层。
我可以说这个过程就像隧道吗?因为原始包(HTTP 包)被封装了好几次,以便适合较低的层。
可能吧,但也不完全是。在大多数情况下,术语“隧道”是指封装下层在同一层或更高层协议内部(即以一种完全不符合模型的方式)。无论哪种情况,封装行为仍然相同,但该术语表示不遵循常规层次结构。
例如,通过 SSH(/内部)隧道传输 HTTP;通过 IPv4 隧道传输 IPv6;通过基于 UDP/IP 的 VPN 隧道传输 L3 IP 甚至 L2 以太网;甚至通过 HTTP 隧道传输 IP – 唯一的限制就是您的想象力...和 MTU。
答案2
快速回答:Atunnel
是一种将一种网络协议封装在另一种网络协议中的方法。VPN 是隧道的一个常见示例:VPN 客户端通过 VPN 协议连接到服务器,然后其他网络协议将其数据包发送到 VPN,VPN 传输这些数据包使用 VPN 协议到 VPN 的另一端,然后按照原始协议重新传输数据包。