第 1 层到第 4 层包括 OS 开发人员在 OS 中实现的网络堆栈,但他们从未真正实现第 5 到 7 层。由应用程序开发人员在其应用程序中提供这些服务。这意味着第 4 层协议没有标准化的方法来了解其上任何层中的内容。
第 2 层协议可以有地址,例如 MAC 地址,第 3 层协议向第 2 层注册,以便第 2 层知道将第 2 层帧的有效载荷发送到哪里,例如以太网在帧中具有 EtherType 字段标题。第 2 层协议不会查看帧负载以了解它是什么,这意味着我们可以将任意数量的第 3 层协议与第 2 层一起使用。
第 3 层协议有地址,例如 IPv4 地址,它们与第 2 层协议具有相同的类型,例如 IPv4 在 IPv4 报头中具有协议字段。第 3 层协议不查看数据包有效载荷以了解它是什么,这意味着我们可以将任意数量的第 4 层协议与第 3 层一起使用。
第 4 层协议具有地址,例如 TCP 端口。应用程序向第 4 层端口注册,表示任何到达该端口的内容都将传送到该端口。第 4 层协议不会查看帧有效载荷以了解它是什么,这意味着我们可以将任意数量的应用程序与第 4 层一起使用。
由于 OS 中没有定义第 5 层,因此第 4 层协议没有标准的方式让第 5 层协议向它们注册,并且第 4 层头中没有字段来注册第 5 层协议。相反,根据共识,某些应用程序使用了众所周知的端口,但这并不意味着与众所周知的应用程序不同的应用程序如果当前未在使用,则不能使用其中一个众所周知的端口. 例如,我可以编写一个使用端口 80(众所周知的 Web 服务器)的应用程序。如果我运行我的应用程序,然后尝试运行 Web 服务器,Web 服务器将无法在众所周知的端口上工作,因为它已在使用中。