# 端口号

两个计算机中的进程要互相通信，不仅必须知道对方的 IP 地址（为了找到对方的计算机），而且要知道对方的端口号（为了找到对方计算机中的应用进程）。

> TCP/IP 的传输层用一个 **16 位端口号**来标志一个端口，16 位的端口号可允许有 **65535** 个不同的端口号。

互联网上的计算机通信是采用<mark style="color:blue;">**客户-服务器**</mark>方式。客户在发起通信请求时，必须先知道对方服务器的 IP 地址和端口号。因此运输层的端口号分为下面的两大类：

* **服务器端使用的端口号**
  * **熟知端口号 （well-known port number）**&#x6216;**系统端口号** ，数值为 **0～1023**。这些数值可在网址 [www.iana.org](http://www.iana.org) 查到。
  * **登记端口号**，数值为 1024～49151。
* **客户端使用的端口号，**&#x6570;值为 49152～65535。由于这类端口号仅在客户进程运行时才动态选择，因此又叫做**短暂端口号**。

  这类端口号留给客户进程选择暂时使用，当服务器进程收到客户进程的报文时，就知道了客户进程所使用的端口号，因而可以把数据发送给客户进程。**通信结束后，刚才已使用过的客户端口号就不复存在，这个端口号就可以供其他客户进程使用。**

## 常用的熟知端口号

| 服务          | 端口号      | 协议  |
| ----------- | -------- | --- |
| HTTP        | 80/TCP   | TCP |
| HTTPS       | 443/TCP  | TCP |
| FTP Data    | 20/TCP   | TCP |
| FTP Control | 21/TCP   | TCP |
| SSH         | 22/TCP   | TCP |
| Telnet      | 23/TCP   | TCP |
| SMTP        | 25/TCP   | TCP |
| DNS         | 53/UDP   | UDP |
| DHCP Server | 67/UDP   | UDP |
| DHCP Client | 68/UDP   | UDP |
| HTTP Proxy  | 8080/TCP | TCP |
| POP3        | 110/TCP  | TCP |
| IMAP        | 143/TCP  | TCP |
| HTTPS Proxy | 8443/TCP | TCP |
