我知道这是三个问题,但我把它们放在一起是因为我认为它们之间相互关联。
我知道发送电子邮件时要使用 SMTP 协议。现在端口 25 被称为 SMTP
我的问题是,这些东西如何协同工作?例如,如果您访问 Gmail(HTTPS 的端口 443)并使用 SMTP 发送电子邮件,这个端口 25 是否会以某种方式被使用?这意味着您访问 Gmail(443),然后连接到端口(25)?
也许我理解错了,但是端口的使用方式就好像我是发送方(例如:我想与另一台 PC 建立 ssh 连接,因此我会通过我的端口 22 将此连接发送到其他 PC 端口 22),或者端口仅用于接收所述信息,也就是说端口 21 接收 FTP 信息但不一定通过该端口传输文件?
同样,端口 21 (FTP) 如何使用?每次有使用 FTP 的进程时,只使用这个端口吗?
答案1
现在端口 25 被称为 stmp
不,端口 25 不叫 SMTP。端口 25 只是一个端口。SMTP 是一种协议。
SMTP 通常在服务器的端口 25 上运行。如果服务器和客户端都配置为使用该端口,则可以使用任何其他端口。但为了方便起见,我们都同意 25 是默认服务器端口。
客户端实际上正在使用随机选择的短暂的端口。这是因为没有必要在客户端上使用已知的端口号。客户端正在连接到服务器 - 客户端知道服务器的端口就足够了,然后它可以告诉服务器应该与客户端上的哪个端口通信。
这种方法有两个优点:
- 如果端口 25 已被服务器占用,则可以建立客户端连接。
- 您可以同时建立多个客户端连接。
[1.] 例如,如果您访问 gmail(https 的端口 443)并使用 stmp 发送电子邮件,那么这个端口 25 是否会以某种方式被使用?
如果您在浏览器中通过其 HTTPS Web 界面使用 Gmail,那么您只会在端口 443 上连接到它。您只与一些 HTTP(S) 服务器通信。您不发送电子邮件 - 您指示服务器以您的名义发送电子邮件。服务器可能在内部与外发邮件服务器建立 SMTP 连接,但我们不知道这一点。也许他们使用了不同的方法。
[2.] 也许我理解错了,但是端口的使用方式好像我是发送方(例如:我想与另一台电脑建立 ssh 连接,因此我会通过我的端口 22 将此连接发送到其他电脑的端口 22),或者端口仅用于接收所述信息,也就是说端口 21 接收 ftp 信息但不一定通过该端口传输文件?
端口是双向的。您可以使用它们来发送和接收(客户端的发送是服务器的接收)。发送什么以及如何发送由协议决定。我不会详细介绍 FTP 示例,因为 1) 我想让这个答案集中在网络部分,2) 虽然 FTP 的被动模式相当简单,但还有我不熟悉的主动模式。
[3.] 同样,端口 21(ftp) 是如何使用的?每次有使用 ftp 的进程时,是否只使用这个端口?
在被动模式下,它的工作方式与我在开头解释的 SMTP 示例类似。服务器打开一个已知端口(通常为 21)并监听连接。客户端打开一个随机选择的临时端口并尝试连接到服务器。建立双向 TCP 连接,并根据 FTP 协议进行通信。
再次强调,主动模式有点复杂,我对它不够熟悉,无法解释它。
通过 UDP(而非 TCP)运行的协议类似,只是不建立连接。UDP 只是向另一台计算机发出信息,而不进行任何验证,看消息是否到达。