> For the complete documentation index, see [llms.txt](https://lfool.gitbook.io/computer-network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lfool.gitbook.io/computer-network/di-wu-zhang-chuan-shu-ceng/1.-chuan-shu-ceng-gai-shu.md).

# 1. 传输层概述

传输层是只有**主机**才有的层次，路由器只有下三层（物理层、数据链路层、网络层）

传输层**承上启下**：为应用层提供通信服务，使用网络层的服务

**传输层的功能：**

1. **传输层**提供**进程和进程之间的逻辑通信**

   **网络层**提供**主机和主机之间的逻辑通信**
2. 复用 & 分用

   **复用：**&#x591A;个进程的数据打包成一个报文发出

   **分用：**&#x5230;了目的地，一个报文分成多个进程的数据发送给相应的进程
3. 传输层对收到的报文进行**差错控制**
4. 传输层的两种协&#x8BAE;**（UDP、TCP）**

## 1. 传输层的两个协议

### 1.1 面向连接的传输控制协议 TCP

**过程：**&#x4F20;输数据之前必须建立连接，数据传送结束后要释放连接。不提供广播或多播服务。由于 TCP 要提供可靠的面向连接的传输服务，因此不可避免增加了许多开销：确认、流量控制、计时器、连接管理等

**特点：**&#x53EF;靠，面向连接，时延大，适用于大文件

### 1.2 无连接的用户数据报协议 UDP

**过程：**&#x4F20;送数据之前不需要建立连接，收到 UDP 报文后也不需要给出任何确认

**特点：**&#x4E0D;可靠，无连接，时延小，适用于小文件

## 2. 传输层的寻址与端口

**复用：**&#x5E94;用层所有的应用进程都可以通过传输层再传输到网络层

**分用：**&#x4F20;输层从网络层收到数据后交付指明的应用进程

端口：传输层的 SAP，标识主机中的应用进程

* 端口号只有本地意义，在因特网中不同计算机的相同端口是没有联系的
* 端口号长度为 16bit，能表示 65536 个不同的端口号

**端口号分类：**

* **服务端**使用的端口号
  * **熟知**端口号：给 TCP/IP 最重要的一些应用程序，让所有用户都知道（0 \~ 1023）
  * **登记**端口号：为没有熟知端口号的应用程序使用（1024 \~ 49151）
* **客户端**使用的端口号
  * 仅在客户进程运行时才动态选择的端口号（49152 \~ 65535）

|  应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
| :---: | :-: | :----: | :--: | :-: | :--: | :--: | :--: |
| 熟知端口号 |  21 |   23   |  25  |  53 |  69  |  80  |  161 |

在网络中采用发送方和接收方的套接字组合来识别端点，**套接字**唯一标识了网络中的一个主机和它上面的一个进程。

* **套接字 Socket = （主机 IP 地址，端口号）**
