一个电子邮件应用程序使用不同的端口
Usage of different ports by one email app
我正在学习 TCP、HTTP 和端口,我对它们的使用方式感到困惑。比如说,我想创建一个用于发送和接收电子邮件的移动应用程序。我知道,例如端口 80 用于 HTTP 流量,端口 25 用于电子邮件,端口 22 用于登录。
- 每次用户登录应用程序时,移动应用程序都会使用端口 22 吗?
- 如果电子邮件有图片,该图片是否会作为 HTTP 流量通过端口 80 加载?
- 对于实际的电子邮件数据,应用程序会使用端口 25 吗?
另一件让我很困惑的事情:我听说只有一个程序可以监听一个端口。现在,如果手机 phone 有多个电子邮件应用程序 运行,它们如何设法同时工作? 如果它们都需要监听端口 80 , 22, 25 等等?
这不是一个问题,但让我看看是否可以阐明让您感到困惑的事情。
I know that e.g. port 80 is used for HTTP traffic, and port 25 for
email, and port 22 for login
大部分正确。例如 443 是 HTTPS 端口。无论如何,没有什么能阻止你在 运行 端口 8000 上的 Web 服务器上,或者如果你真的想在 22 上变得讨厌。这些是每个应用程序的推荐端口,它们通常是使用的端口。这样做的原因是,当客户端需要连接到应用程序时,他们需要他们想要连接的应用程序的 IP 和端口号。因此,Web 浏览器尝试连接 80 或 443 是很常见的。但是您也可以始终连接到不同的端口。即,如果您转到 http://some_url:8080,您将连接到端口 8080,而不是 80。端口号等信息由互联网号码分配机构 (IANA) 管理。查看 here 了解有关端口号及其用途的更多信息。
Will the mobile app use port 22 every time the user logs in in the app
安全 shell 应用程序 (SSH) 使用(通常)端口 22。例如,这与您在网站中输入凭据时不同。使用 HTTP(S) 时发生的一切。
If an email has a picture, will this picture be loaded via port 80 as
HTTP traffic?
如果发送电子邮件,它将转到电子邮件服务器(可能 运行 在端口 25 上)。所有电子邮件传输都将使用简单邮件传输协议 (SMTP) 进行,该协议将处理电子邮件负载中的所有内容以及邮件周围的加密(如果有)。如果您对 SMTP 感兴趣,我建议您查看 wikipedia 文章并点击那里的链接。
For the actual email data, will the app use port 25?
我相信这已包含在我之前的回答中。
关于你的最后一个问题。您是对的,单个应用程序只能侦听一个端口。但在这种情况下,“应用程序”将是服务器。举个例子,假设电子邮件服务器托管在 IP 为 1.2.3.4 的机器上,并在端口 25 上运行。
现在,如果您有多个电子邮件 客户端 ,它们都将连接到那个 IP:port 服务器元组。但是,客户端将打开从您的手机 phone 的 IP(比如 5.6.7.8)到该服务器的连接。但是每个连接都将使用不同的 本地端口 ,这就是可以同时建立到同一目的地的多个连接的方式。当您打开两个选项卡并访问同一个网站时,会发生相同的情况。您连接到服务器的同一个 IP:port 元组,但是从您计算机上的不同端口进行连接。
要理解这一点,您需要了解 Internet 上的应用程序使用 IP:port 4 元组来识别连接。 4 元组包含 (Server_IP, Server_Port, Client_IP, Client_Port)
。如果这个 4 元组中的任何一个事物不同,它标识的连接也不同。
我正在学习 TCP、HTTP 和端口,我对它们的使用方式感到困惑。比如说,我想创建一个用于发送和接收电子邮件的移动应用程序。我知道,例如端口 80 用于 HTTP 流量,端口 25 用于电子邮件,端口 22 用于登录。
- 每次用户登录应用程序时,移动应用程序都会使用端口 22 吗?
- 如果电子邮件有图片,该图片是否会作为 HTTP 流量通过端口 80 加载?
- 对于实际的电子邮件数据,应用程序会使用端口 25 吗?
另一件让我很困惑的事情:我听说只有一个程序可以监听一个端口。现在,如果手机 phone 有多个电子邮件应用程序 运行,它们如何设法同时工作? 如果它们都需要监听端口 80 , 22, 25 等等?
这不是一个问题,但让我看看是否可以阐明让您感到困惑的事情。
I know that e.g. port 80 is used for HTTP traffic, and port 25 for email, and port 22 for login
大部分正确。例如 443 是 HTTPS 端口。无论如何,没有什么能阻止你在 运行 端口 8000 上的 Web 服务器上,或者如果你真的想在 22 上变得讨厌。这些是每个应用程序的推荐端口,它们通常是使用的端口。这样做的原因是,当客户端需要连接到应用程序时,他们需要他们想要连接的应用程序的 IP 和端口号。因此,Web 浏览器尝试连接 80 或 443 是很常见的。但是您也可以始终连接到不同的端口。即,如果您转到 http://some_url:8080,您将连接到端口 8080,而不是 80。端口号等信息由互联网号码分配机构 (IANA) 管理。查看 here 了解有关端口号及其用途的更多信息。
Will the mobile app use port 22 every time the user logs in in the app
安全 shell 应用程序 (SSH) 使用(通常)端口 22。例如,这与您在网站中输入凭据时不同。使用 HTTP(S) 时发生的一切。
If an email has a picture, will this picture be loaded via port 80 as HTTP traffic?
如果发送电子邮件,它将转到电子邮件服务器(可能 运行 在端口 25 上)。所有电子邮件传输都将使用简单邮件传输协议 (SMTP) 进行,该协议将处理电子邮件负载中的所有内容以及邮件周围的加密(如果有)。如果您对 SMTP 感兴趣,我建议您查看 wikipedia 文章并点击那里的链接。
For the actual email data, will the app use port 25?
我相信这已包含在我之前的回答中。
关于你的最后一个问题。您是对的,单个应用程序只能侦听一个端口。但在这种情况下,“应用程序”将是服务器。举个例子,假设电子邮件服务器托管在 IP 为 1.2.3.4 的机器上,并在端口 25 上运行。
现在,如果您有多个电子邮件 客户端 ,它们都将连接到那个 IP:port 服务器元组。但是,客户端将打开从您的手机 phone 的 IP(比如 5.6.7.8)到该服务器的连接。但是每个连接都将使用不同的 本地端口 ,这就是可以同时建立到同一目的地的多个连接的方式。当您打开两个选项卡并访问同一个网站时,会发生相同的情况。您连接到服务器的同一个 IP:port 元组,但是从您计算机上的不同端口进行连接。
要理解这一点,您需要了解 Internet 上的应用程序使用 IP:port 4 元组来识别连接。 4 元组包含 (Server_IP, Server_Port, Client_IP, Client_Port)
。如果这个 4 元组中的任何一个事物不同,它标识的连接也不同。