互联网上的数据流通常被描述为从一台主机通过至少两个边界路由器到达另一台主机。在这些插图中,主机配备并使用了完整的 Internet 协议栈,而路由器仅被描绘为拥有和使用网络协议和 IP。
如果我没记错的话,BGP是一个应用层协议。
所以我想知道如果路由器只是访问协议栈的一部分,甚至只是拥有协议栈的一部分,那么路由器之间的 BGP 通信是如何发生的?
互联网上的数据流通常被描述为从一台主机通过至少两个边界路由器到达另一台主机。在这些插图中,主机配备并使用了完整的 Internet 协议栈,而路由器仅被描绘为拥有和使用网络协议和 IP。
如果我没记错的话,BGP是一个应用层协议。
所以我想知道如果路由器只是访问协议栈的一部分,甚至只是拥有协议栈的一部分,那么路由器之间的 BGP 通信是如何发生的?
关于这里使用的 OSI 模型的哪一部分存在很多混淆。让我看看我是否可以提供帮助:
请记住,OSI 模型只是一个模型。它不代表实际使用中的任何内容。TCP/IP 模型更适合 Internet 上使用的协议。
“路由器只是被描述为拥有和使用网络协议和 IP”的说法过于简单化了——这就是一些混乱的来源。路由器软件具有完整的堆栈,可以运行 BGP 等路由协议以及管理功能(telnet、SSH、snmp 等)。
BGP是网络协议还是应用协议?在路由器上运行的 BGP 进程与其他路由器上的 BGP 进程进行通信。BGP 使用 TCP/IP 来促进这种通信。它在对等点之间建立会话,并具有自己的消息传递格式和语法。从这个意义上说,BGP 是在路由器上运行的应用程序。
BGP 的目的是填充路由器的转发表。当路由器为 IP 数据包做出转发决定时,它会在表中查找下一跳地址,添加第 2 层报头,并将其发送到接口。该过程仅涉及第 1-3 层。所以如果你在谈论路由器如何路由,这就是你需要讨论的全部——这可能就是混乱的来源。
总之,数据包的转发涉及到第 1-3 层。用于转发数据包的信息来自许多来源——其中之一可能是路由器上运行的 BGP 应用程序。
BGP 是一种路由协议,它应该位于网络层(如果您使用 OSI 模型)或 Internet 层(如果您使用 TCP/IP 模型)。它不是应用层协议。