# TCP/IP 网络模型

TCP/IP 网络通常是由上到下分成 4 层，分别是**应用层，传输层，网络层**和**网络接口层**。

## 应用层 <a href="#ying-yong-ceng" id="ying-yong-ceng"></a>

**应用层只需要专注于为用户提供应用功能，不用去关心数据是如何传输的**。

常见的应用层协议有：HTTP、FTP、Telnet、DNS、SMTP 等。

## 传输层 <a href="#chuan-shu-ceng" id="chuan-shu-ceng"></a>

应用层的数据包会传给传输层，**传输层（*****Transport Layer*****）是为应用层提供网络支持的**。

在传输层会有两个传输协议，分别是 **TCP** 和 **UDP**：

* <mark style="color:blue;">**TCP**</mark> 的全称叫**传输控制协议（*****Transmission Control Protocol*****）：**&#x54;CP 相比 UDP 多了很多特性，比如流量控制、超时重传、拥塞控制等，这些都是为了**保证数据包能可靠地传输给对方**。
* <mark style="color:blue;">**UDP**</mark> 的全称叫**用户数据报协议（*****User Datagram Protocol*****）**：只负责发送数据包，不保证数据包是否能抵达对方，但它实时性相对更好，传输效率也高。

当设备作为接收方时，传输层则要负责把数据包传给应用，但是一台设备上可能会有很多应用在接收或者传输数据，因此需要用一个编号将应用区分开来，这个编号就是<mark style="color:blue;">**端口号**</mark>。

## 网络层 <a href="#wang-luo-ceng" id="wang-luo-ceng"></a>

**网络层负责将数据从一个设备传输到另一个设备**，网络层最常使用的是 **IP 协议（*****Internet Protocol*****）**。

> <mark style="color:blue;">**IP 地址**</mark>
>
> 一般用 IP 地址给设备进行编号，对于 IPv4 协议， IP 地址共 32 位，分成了四段（比如，192.168.100.1 ），每段是 8 位。
>
> 为了便于寻址，将 IP 地址分成两段：
>
> * 一个是**网络号**，负责标识该 IP 地址是属于哪个 「子网」 的；
> * 一个是**主机号**，负责标识同一 「子网」 下的不同主机；
>
> <mark style="color:blue;">**子网掩码**</mark>
>
> 将 IP 地址与子网掩码进行按位与运算，得到 IP 地址所属的网络号

除了寻址能力， IP 协议还有另一个重要的能力就是**路由**。实际场景中，两台设备并不是用一条网线连接起来的，而是通过很多网关、路由器、交换机等众多网络设备连接起来的，那么就会形成很多条网络的路径，因此**当数据包到达一个网络节点**，就**需要通过路由算法决定下一步走哪条路径**。

## 网络接口层 <a href="#wang-luo-jie-kou-ceng" id="wang-luo-jie-kou-ceng"></a>

IP 头部中的接收方 IP 地址表示网络包的目的地，通过这个地址我们就可以判断要将包发到哪里，但在**以太网**的世界中，这个思路是行不通的。

以太网在判断网络包目的地时和 IP 的方式不同，因此必须采用相匹配的方式才能在以太网中将包发往目的地，**在以太网进行通讯要用到 MAC 地址**。

> **可以通过 ARP 协议获取目标 IP 对应的的 MAC 地址。**

**网络接口层主要为网络层提供 「链路级别」 传输的服务，负责在以太网、WiFi 这样的底层网络上发送原始数据包，工作在网卡这个层次，使用 MAC 地址来标识网络上的设备。**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bohans.gitbook.io/ji-chu/network/tcpip-wang-luo-mo-xing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
