# 计算机网络基础
## TCP/IP 模型和 OSI 模型分别是什么?它们之间有什么区别?

例如osi模型,用电脑软件给朋友发送一条信息,会首先应用层为聊天界面,然后表示层翻译为网络可以识别的格式,然后建立会话和传输,在传输的过程中有tcp和udp两种,tcp完整有序,udp不会保证这个,然后网络层在这层会根据ip找到对方路由器,然后数据链路层,这层会根据mac地址找到具体的电脑,最后再物理层进行光纤信息的传输。对方想要读取的话就反过来进行剥离。 **会话层的工作依赖于传输层和网络层的支持**,而这些底层功能在实际操作中先于会话层发生。
## 什么是网络分层模型?它在网络通信中有什么作用?
**网络分层模型**是一种将网络通信过程分解为多个层次的设计方法,每一层都有特定的功能和协议。 分层模型通过分割复杂的网络通信任务,简化网络的设计、实现和维护
### **OSI 模型的七层结构**
OSI 模型定义了网络通信的 **七层结构**,从底层到顶层分别是:
| **层次** | **功能** | **常见协议/技术** |
| :------------: | :----------------------------------------------------------: | :--------------------------: |
| **物理层** | 负责硬件信号的传输,包括电缆、光纤、无线信号等。 | Ethernet、Wi-Fi、Bluetooth |
| **数据链路层** | 负责数据帧的传输和错误检测,管理物理地址(MAC 地址)。 | Ethernet、PPP、HDLC |
| **网络层** | 负责逻辑地址(IP 地址)的分配,提供路由选择功能,支持跨网段通信。 | IP(IPv4、IPv6)、ICMP、ARP |
| **传输层** | 负责端到端的传输,确保数据的可靠性、完整性和顺序。 | TCP、UDP、SCTP |
| **会话层** | 负责建立、管理和终止会话,支持多用户之间的连接。 | TLS/SSL、NetBIOS |
| **表示层** | 负责数据的格式化、加密和解密,确保发送方和接收方能正确理解数据。 | TLS/SSL、JPEG、MPEG、ASCII |
| **应用层** | 提供用户和网络之间的接口,支持各种网络服务。 | HTTP、FTP、SMTP、DNS、Telnet |
------
### **TCP/IP 模型的四层结构**
TCP/IP 模型是互联网的实际标准,其 **四层结构** 和 OSI 模型的关系如下:
| **TCP/IP层** | **OSI层** | **功能** |
| :----------: | :--------------------: | :--------------------------------------------: |
| **应用层** | 应用层、表示层、会话层 | 提供用户应用接口,支持数据的表示、加密和解密。 |
| **传输层** | 传输层 | 提供端到端的可靠或快速数据传输服务。 |
| **网络层** | 网络层 | 提供逻辑地址的分配和跨网段的数据传输。 |
| **链路层** | 数据链路层、物理层 | 管理数据帧传输,处理硬件信号的物理传输。 |
## 什么是网络协议?它在网络通信中有什么作用?
- **定义**:网络协议是一组规则和标准,用于确定计算机之间如何进行通信。它定义了数据的格式、传输方式和错误处理等方面。
- **作用**:它确保不同设备和系统之间可以互相理解并正确交换数据,是实现网络通信的基础。没有协议,设备之间无法有效地交换信息。
## 什么是 ARP 协议?它在网络通信中有什么作用?
#### 知识索引
- **计算机网络** - 数据链路层与网络层交互
- **协议** - 地址解析协议(ARP,Address Resolution Protocol)
------
#### 简要回答
1. **ARP协议**:一种用于将网络层IP地址解析为数据链路层MAC地址的协议。
2. **作用**:在局域网中,帮助设备通过已知的IP地址找到对应的MAC地址,从而实现网络通信。
3. 工作流程
:- 设备发送ARP请求广播,询问目标IP地址的MAC地址。
- 目标设备通过ARP响应单播返回其MAC地址。
4. **常见问题**:ARP缓存中可能存在被攻击者伪造的记录,导致ARP欺骗。
------
#### 详细回答
1. ARP协议定义与背景
:
- 在网络通信中,数据链路层使用MAC地址传递数据帧,而网络层使用IP地址定位设备。ARP协议充当桥梁,完成IP到MAC的地址解析。
- 只适用于同一个局域网,因为广播包无法跨网段。
2. 工作流程
:
1. **发送ARP请求**:源设备构造一个ARP请求包,其中包含目标IP地址,并通过广播发送到局域网内所有设备。
2. **接收ARP响应**:目标设备接收请求后,检查是否与自己的IP地址匹配,若匹配则构造响应包(包含目标MAC地址)单播发送给源设备。
3. **缓存记录**:源设备在接收到响应后,将目标设备的IP-MAC映射存储在ARP缓存中,以备后续使用,避免重复查询。
3. 作用
:
- **设备间通信**:确保以太网设备能够通过IP地址定位并通信。
- **提高效率**:通过ARP缓存减少频繁的地址解析操作。
4. 常见安全问题
:
- **ARP欺骗攻击**:攻击者伪造ARP响应,将自身MAC地址冒充为网关MAC地址,劫持网络流量。
- **缓解措施**:启用静态ARP表、使用安全ARP协议(如GARP)、部署ARP防护设备。
------
#### 延申问答
1. 问题1
:ARP协议的局限性有哪些?
- 回答
:- 无法跨子网工作,需要网关设备中转。
- 易受ARP欺骗攻击。
- ARP广播增加局域网内的通信负担。
2. 问题2
:什么是ARP缓存中毒?
- **回答**:攻击者通过伪造的ARP响应向目标设备注入错误的IP-MAC映射,从而劫持通信或进行中间人攻击。
3. 问题3
:如何防止ARP欺骗?
- 回答
:- 配置静态ARP表,手动绑定IP-MAC对。
- 使用交换机的动态ARP检测功能(DAI)。
- 在网络中启用IP/MAC绑定的安全策略。
## IP 地址和 MAC 地址有什么区别?它们在网络通信中各自扮演什么角色?
#### **IP地址**
**定义**:IP地址(Internet Protocol Address)是分配给每个联网设备的逻辑地址,用于标识设备在网络中的位置。 **作用**: 用于定位设备在网络中的位置。
#### **MAC地址**
**定义**: MAC地址(Media Access Control Address)是网卡的物理地址,由设备制造商烧录到硬件中,通常是全球唯一的。 **作用**: 用于在同一局域网(LAN)中标识设备。
| **特性** | **IP地址** | **MAC地址** |
| :------------: | :-----------------------------------------------: | :--------------------------------------: |
| **层次** | 属于网络层(OSI 模型第 3 层) | 属于链路层(OSI 模型第 2 层) |
| **作用范围** | 标识设备在网络中的逻辑位置,可跨网段使用 | 标识设备的物理位置,仅用于局域网通信 |
| **地址形式** | IPv4: 点分十进制(如 `192.168.1.1`) | 16 进制(如 `00:1A:2B:3C:4D:5E`) |
| | IPv6: 冒号分隔的 16 进制(如 `2001:0db8::1`) | |
| **静态/动态** | 可静态分配(手动配置)或动态分配(DHCP 自动分配) | 静态分配,由硬件制造商确定,通常不会改变 |
| **唯一性** | 在同一个网络中唯一,不同网络可重复 | 全球唯一 |
| **是否可修改** | 用户可更改 IP 地址 | 一般不可更改(可通过软件手段伪造) |
| **主要用途** | 用于路由选择和设备定位 | 用于数据链路层的帧传输 |
| **生命周期** | IP 地址可以随网络变化而变化 | MAC 地址通常是设备的固定属性 |
#### 作用
##### **IP地址**
- **互联网通信**:- 通过公共 IP 地址访问网站。
- **局域网通信**:- 使用私有 IP 地址进行设备互联。
- **动态分配**:- 使用 DHCP 服务器动态分配 IP 地址。
##### **MAC地址**
- **局域网设备识别**:- 在以太网、Wi-Fi 网络中,用于标识物理设备。
- **访问控制**:- 通过 MAC 地址白名单限制设备接入网络。
- **安全监控**:- 用于追踪网络中设备的活动。
## 什么是 NAT(网络地址转换)?它在网络通信中有什么作用?
**理论:** NAT(网络地址转换,Network Address Translation)是一种将私有网络IP地址转换为公共网络IP地址的技术。它主要用于解决IPv4地址枯竭问题,同时提供一定的安全性。 **作用:**
1. 节约IP地址
:
- 通过在内部网络中使用私有IP地址(如192.168.x.x),多个内部设备可以共享一个或少数几个公共IP地址,减少对公网IP地址的需求。
2. 隐藏内部网络结构
:
- NAT隐藏了内部网络的IP地址,使得外部网络无法直接访问内部设备,提高了网络的安全性。
3. 允许多个设备共享一个公共IP
:
- 通过端口号的映射,NAT能够让多个内部设备通过同一个公共IP地址与外部网络通信。
**工作原理:** NAT设备(通常是路由器)在数据包通过时修改其源或目的IP地址:
- **源地址转换(SNAT)**:将内部设备的私有IP地址转换为公共IP地址。
- **目的地址转换(DNAT)**:将公共IP地址转换为内部设备的私有IP地址,通常用于端口转发。
**类型:**
1. **静态NAT**:- 一对一的地址映射,固定的私有IP与公共IP对应。
2. **动态NAT**:- 多个私有IP动态映射到一个公共IP池中的可用IP。
3. **端口地址转换(PAT)**:- 多个私有IP通过不同的端口号共享一个公共IP地址,常用于家庭和小型办公室网络。
**示例:**
- 家庭网络使用NAT
:
- 家庭中有多台设备(如手机、电脑、平板)使用私有IP地址(如192.168.1.x)。
- 路由器通过NAT将这些私有IP地址转换为一个公共IP地址(如203.0.113.1)。
- 当家庭设备访问互联网时,路由器负责转换地址,确保外部服务器能够正确响应。
- 企业网络的端口转发
:
- 企业内部有一台Web服务器,私有IP为192.168.1.10。
- NAT设备配置端口转发,将外部访问公共IP的80端口请求转发到内部的192.168.1.10:80。
- 外部用户通过访问公共IP的80端口即可访问内部的Web服务器。
## TCP/IP 模型中,数据链路层和网络层各有哪些主要协议?它们的作用是什么?
| **层** | **协议** | **作用** |
| :------------: | :--------------: | :----------------------------------------: |
| **数据链路层** | Ethernet | 提供局域网中的数据传输和设备寻址。 |
| | Wi-Fi | 支持无线网络通信。 |
| | ARP | 将 IP 地址解析为 MAC 地址。 |
| | PPP | 提供点对点数据链路通信。 |
| **网络层** | IP | 提供逻辑地址和路由选择功能。 |
| | ICMP | 提供网络层的错误报告和诊断。 |
| | DHCP | 动态分配 IP 地址和网络参数。 |
| | NAT | 实现私有 IP 和公共 IP 地址的映射。 |
| | OSPF / BGP / RIP | 提供动态路由选择,优化网络数据包传输路径。 |
## OSI 模型中,哪一层负责数据的加密和解密?哪一层负责数据的传输?
| **功能** | **负责的OSI层** | **具体描述** |
| :----------------: | :-------------------: | :----------------------------------------------------------: |
| **数据加密和解密** | **表示层(第 6 层)** | 确保数据的机密性,使用加密算法保护数据,接收方负责解密。 |
| **数据传输** | **传输层(第 4 层)** | 负责端到端的数据传输,确保数据完整、无差错地从发送方传输到接收方。 |
| **加密会话的管理** | **会话层(第 5 层)** | 负责加密通信会话的建立和管理,协调加密协议的运行 |
**理论:** OSI(开放系统互联,Open Systems Interconnection)模型是一个分层的网络通信模型,共有七层。每一层都有其特定的功能。
- 数据的加密和解密
:
- **表现层(第6层)**:负责数据的表示、转换和加密/解密。表现层确保不同系统之间的数据格式兼容,并处理数据的加密和解密,以保障数据的安全性。
- 数据的传输
:
- **物理层(第1层)
和
数据链路层(第2层)**负责数据的实际传输。-
物理层
:负责数据在物理媒介上的传输,如电缆、光纤的信号传输。
- **数据链路层**:负责在同一网络节点之间可靠地传输数据帧,进行错误检测和纠正。
**详细说明:**
- 表现层(第6层)
:
- 主要处理数据的表示和语法,负责数据的加密、解密、压缩和转换。
- 示例:SSL/TLS协议在表现层实现加密和解密,确保数据在传输过程中的安全性。
- 传输层(第4层)
:
- 虽然传输层负责端到端的数据传输,但加密和解密主要由表现层处理,以保证传输层传递的数据已经是加密后的形式。
**示例:**
- 数据加密和解密
:
- 当用户通过HTTPS访问网站时,SSL/TLS协议在表现层对HTTP数据进行加密,确保数据在网络上传输时的安全性。接收端的表现层负责解密这些数据,以供应用层使用。
- 数据传输
:
- 在一个局域网内,数据通过物理层的以太网电缆传输,数据链路层通过以太网协议(如IEEE 802.3)负责将数据帧可靠地发送到目标设备。
## 什么是网络拥塞?TCP 是如何应对网络拥塞的?
网络拥塞是指在计算机网络中,由于数据流量超过网络设备或链路的处理能力,导致数据包的传输延迟增加、丢失或网络性能下降的情况。拥塞会影响网络的正常工作,可能导致以下问题:
1. **数据包丢失**:当网络设备的缓冲区满时,新到达的数据包会被丢弃。
2. **延迟增加**:数据包在网络中排队等待处理,导致传输延迟增加。
3. **带宽降低**:有效的传输速率下降,影响应用程序的性能。
TCP 如何应对网络拥塞?
TCP(传输控制协议)通过多种机制来检测和应对网络拥塞,主要包括以下几个方面:
1. 拥塞控制算法
:
- 慢启动(Slow Start)
:
- TCP 在连接开始时设置一个较小的拥塞窗口(cwnd),每收到一个 ACK,窗口大小增加一倍。这样可以迅速增加发送的数据量,直到达到网络的承载能力。
- 拥塞避免(Congestion Avoidance)
:
- 一旦达到阈值(ssthresh),进入拥塞避免阶段,窗口每经过一个 RTT(往返时间)仅增加一个 MSS(最大报文段大小),以更加稳健地增长。
- 快速重传(Fast Retransmit)
:
- 当发送方连续收到三个相同的 ACK(表明某个数据包丢失),立即重传丢失的数据包,而不是等待重传定时器超时。
- 快速恢复(Fast Recovery)
:
- 在快速重传之后,将拥塞窗口调整为 `ssthresh + 3 * MSS`,进入拥塞避免阶段,避免窗口立即减小。
2. 拥塞窗口(cwnd)
:
- TCP 使用一个称为拥塞窗口的变量来控制可以发送的未确认数据量。拥塞窗口的大小根据网络状况动态调整,以适应当前的网络能力。
3. 重传定时器
:
- TCP 设置一个重传定时器,如果未收到特定数据包的 ACK,则会重传该数据包。定时器的设置基于 RTT 的估计值。
4. 流量控制
:
- 除了拥塞控制外,TCP 还通过流量控制机制(使用接收窗口 rcv_wnd)来确保接收方不会被过多的数据淹没,从而降低了拥塞的可能性。
5. 拥塞控制算法的选择
:
- TCP 实现了多种拥塞控制算法(如 Reno、New Reno、CUBIC 等),这些算法在不同的网络条件下表现不同,TCP 可以根据网络状况选择合适的算法进行拥塞控制。
## CDN 是什么?它在网络传输中有什么作用?
CDN是一种分布式网络服务,通过将内容存储在分布式的服务器上,使用户可以从距离较近的服务器获取所需的内容,加快内容获取的速度。
- **就近访问**:CDN 在全球范围内部署了多个服务器节点,用户的请求会被路由到距离最近的 CDN 节点,来获取资源。
- **内容缓存**:CDN 服务器会缓存静态资源,如图片、样式表等。当用户请求访问这些资源时,CDN 会首先检查是否已经缓存了该资源。如果有缓存,CDN 节点会直接返回缓存的资源,如果没有缓存所需资源,它会从源服务器(原始服务器)回源获取资源,并将资源缓存到节点中,以便以后的请求。
- **可用性**:即使某些节点出现问题,用户请求可以被重定向到其他健康的节点。