关于 TCP/IP 堆栈,我有一些不明白的地方:端口。有一个 IP 可以识别该机器上特定进程的机器和端口。对我来说,端口与应用层有关;某些进程有一些端口(80 用于 HTTP,25 用于 SMTP 等)。端口与 TCP 层(传输)无关。端口应该在更高级别(应用层)实现。那么为什么说“TCP 端口”而不是“应用程序端口”呢?
谢谢
TCP 或 UDP 端口在 OSI 模型的第 4 层或 TCP/IP 模型的第 3 层中定义,两者都定义为“传输”层。
OSI 第 5 层“会话层”使用第 4 层中定义的端口在通信设备/程序/等之间创建套接字和会话。
关于 OSI 模型的提醒:
这是一个概念模型。这意味着它描述了一组理想化的、抽象的、理论的网络功能。它没有描述某人实际建造的任何东西(至少没有描述今天使用的任何东西)。
它不是唯一的模型。还有其他模型,最著名的是 TCP/IP 协议套件(RFC-1122 和 RFC-1123),它更接近当前使用的模型。
了解 OSI(或任何其他)模型最重要的事情是:
将协议划分为层允许我们分别讨论它们的不同方面。它使协议更容易理解和更容易排除故障。我们可以轻松地隔离特定功能,并将它们与其他协议的类似功能组合在一起。
每个“功能”(广义地说)都封装了它上面的层。网络层封装了它上面的层。数据链路层封装了网络层,以此类推。
层抽象了它下面的层。您的网络浏览器不需要知道您在网络层使用的是 TCP/IP 还是其他东西(好像还有其他东西一样)。对于您的浏览器,较低的层只提供数据流。该流如何设法显示在浏览器中是隐藏的。TCP/IP 不知道(或关心)您使用的是以太网、电缆调制解调器、T1 线路还是卫星。它只是处理数据包。想象一下,设计一个必须处理所有这些问题的应用程序是多么困难。这些层抽象了较低的层,因此软件设计和操作变得更加简单。