计算网络体系概述

相关问题

  • 计算机网络为什么要分层?
  • 计算机网络是怎么分层的?
  • 三种计算机网络模型的关系是什么?每一层分别包含哪些协议?
  • 计算机网络中,数据如何在各层中传播?数据在网络各层中的存在形式是怎么样的?

OSI七层模型

OSI(Open Systems Interconnection)是开放系统互连参考模型的缩写,它是一个定义得非常好的协议规范集,它为各种系统定义了一个层次结构和一套用于协调与控制各层活动的规则,模型有七层结构。OSI模型的七层结构及其简要描述:

层次 名称 简要描述
1 物理层 (Physical Layer) 定义了物理设备标准,如网络接口、传输介质等,负责传输原始比特流。
2 数据链路层 (Data Link Layer) 在物理层提供的服务基础上,建立相邻节点之间的数据链路,进行差错控制和流量控制。
3 网络层 (Network Layer) 负责为分组交换网上的不同主机提供通信服务,实现路由选择和分组转发。
4 传输层 (Transport Layer) 提供端到端的通信服务,负责数据的分段、重组和差错控制,确保数据的可靠传输。
5 会话层 (Session Layer) 负责建立、管理和终止会话过程,同步不同设备上的各种表示层实体。
6 表示层 (Presentation Layer) 对应用层数据进行表示和转换,如数据压缩、加密和解密、数据格式转换等。
7 应用层 (Application Layer) 为网络应用提供访问OSI环境的手段,定义应用进程间通信和交互的规则。

这个表格简洁地概述了OSI模型的每一层及其主要功能。需要注意的是,虽然OSI模型在理论上是一个完善的参考模型,但在实际应用中,TCP/IP协议族由于其简洁性和高效性而被广泛采用。

TCP/IP五层协议

五层体系的协议结构是综合了 OSI 和 TCP/IP 优点的一种协议,包括应用层、传输层、网络层、数据链路层和物理层。其中应用层对应 OSI 的上三层,下四层和 OSI 相同。五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构。TCP/IP五层协议栈:

名称 主要功能 主要协议/技术
物理层 负责物理传输介质上比特流的传输 无(依赖于物理介质)
数据链路层 负责将数据封装成帧,进行差错控制和流量控制 以太网、PPP
网络层 负责数据包的路由和转发,实现不同网络之间的通信 IP、ICMP、IGMP、ARP、RARP
传输层 负责端到端的数据传输,提供可靠或不可靠的数据传输服务 TCP、UDP
应用层 提供网络应用服务,处理特定应用的数据格式 HTTP、FTP、SMTP、DNS、SSH

这个表格简要地概括了TCP/IP五层协议栈中每一层的主要功能以及该层使用的主要协议或技术。这些协议共同协作,确保数据能够正确、高效地从源地址传输到目标地址。

数据在各层之间的传输

在TCP/IP五层协议栈中,数据并不是直接在各层之间传输的,而是经历了一个封装和解封装的过程。这个过程确保了数据从源地址到目标地址的可靠传输。以下是数据在各层之间传输的详细步骤:

层次 物理层 数据链路层 网络层 传输层 应用层
数据类型 比特流 帧、数据帧 数据报、数据包 报文段、数据段 报文
添加部分 前导码 MAC头部 IP头部 TCP头部 数据
应用层:
  • 应用层是TCP/IP模型的最上层,直接为用户的应用程序(如浏览器、电子邮件客户端等)提供服务。
  • 在应用层,应用程序(如HTTP服务器或FTP客户端)生成数据,这些数据可能是文本、图片、音频或视频等。
  • 应用层将数据封装成应用层协议所能理解的数据格式,如HTTP请求或FTP命令。
传输层:
  • 传输层负责提供端到端的数据传输服务,包括可靠性和流量控制。
  • 在传输层,数据被封装成传输层协议的数据单元,对于TCP来说是TCP段(segment),对于UDP来说是UDP数据报(datagram)。
  • 封装过程中,传输层会添加源端口号和目的端口号等信息,以便在接收端能够正确地将数据交付给相应的应用程序。
网络层:
  • 网络层负责网络间的通信,主要处理路由和转发。
  • 在网络层,数据被封装成IP数据报(datagram)。封装过程中,会添加源IP地址和目的IP地址等信息。
  • 网络层根据路由选择算法,将数据报从源主机发送到目的主机。
数据链路层:
  • 数据链路层负责处理本地网络的通信,包括帧的构造和解析。
  • 在数据链路层,IP数据报被封装成帧(frame)。封装过程中,会添加帧头(包含源MAC地址和目的MAC地址)和帧尾(包含校验信息)。
  • 数据链路层通过物理层提供的服务,将数据帧从一个节点传输到下一个节点。
物理层:
  • 物理层是TCP/IP模型的最底层,负责将比特流转换成物理信号,并在物理介质上进行传输。
  • 物理层将数据帧转换成适合在物理介质上传输的比特流,如电信号或光信号。
  • 比特流通过物理介质(如电缆、光纤等)传输到目的主机。

应用层

相关问题

  • uri 和 url 的区别 ?
  • dns 是啥工作原理,主要解析过程是啥?
  • 用户输入网址到显示对应页面的全过程是啥?
  • http 头部包含哪些信息?
  • http 方法了解哪些?
  • http 状态码了解哪些?
  • get 和 post 的区别?
  • https 和 https 的区别?
  • https 的加密方式?
  • http 是不保存状态的协议,如何保存用户状态?
  • http 不同版本的区别?

万维网和域名系统

万维网(简称WWW或Web)和域名系统(简称DNS)是互联网中两个重要的组成部分,它们各自在互联网的运作中扮演着关键角色。

P2P和C/S

P2P(Peer-to-Peer)与C/S(Client/Server)是计算机网络中两种常见的通信模式,P2P是一种去中心化的网络架构,适用于资源共享和实时通信;而C/S是一种中心化的架构,适用于需要集中管理和控制的应用场景。

P2P(Peer-to-Peer)

定义:P2P是一种网络架构,其中每个设备(称为“对等点”或“节点”)都可以直接与其他设备通信,而不需要通过中央服务器。

特点:

  • 去中心化:没有中央控制点,每个节点都可以相互通信。
  • 资源共享:节点可以共享文件、带宽等资源。
  • 灵活:节点可以动态地加入或离开网络。

应用场景:文件共享(如BitTorrent)、即时通讯(如Skype或某些在线游戏)。

C/S(Client/Server)

定义:C/S架构中,有一个或多个服务器负责存储数据和处理请求,而客户端设备(如电脑、手机等)则发送请求给服务器并接收响应。

特点:

  • 集中管理:数据和服务由服务器集中提供。
  • 安全性:服务器可以提供安全控制和数据完整性检查。
  • 响应速度快:客户端与服务器直接通信,响应通常较快。

应用场景:Web应用(如网站)、数据库系统、电子邮件服务等。

Web结构组件

web结构组件指的是构成Web系统的基础元素,这些组件共同协作,使得Web应用能够正常运行并提供服务,以下是一些Web结构组件:

组件名称 定义 作用
代理(Proxy) 中间服务器,用于转发客户端和服务器之间的请求和响应 提高性能、安全性或进行内容过滤
缓存(Cache) 存储常用页面副本的地方,以减少网络带宽使用和加快页面加载速度 提高Web应用的响应速度
网关(Gateway) 连接其他应用或服务的服务器,例如连接Web服务器到FTP服务器的中间件 协议转换和服务集成
Agent代理 发起HTTP请求的Web客户端,如浏览器、网络爬虫等 代表用户或系统发送HTTP请求
Web组件(Web Components) 封装好的可复用的自定义元素,用于构建Web应用 提高Web开发的效率和可维护性
网络协议(Network Protocols) 计算机之间通信的规则,如HTTP和HTTPS 确保客户端和服务器之间能够正确通信
域名系统(DNS) 将域名转换为IP地址的系统 使人们可以通过易记的域名来访问网站
DNS

域名服务器(Domain Name Server,简称DNS)是互联网中至关重要的基础设施之一,它负责将人类可读的域名(如example.com)映射到与之对应的IP地址(如192.0.2.1)。

工作原理

假设一个客户端 A,想要查询 a.leetcode.cn 的 ip 地址,考虑缓存的情况。

  • 客户端 A 首先查询本地的 hosts 文件,查询是否有网址映射关系,如果没有,进行下一步查找。
  • 查找本地的 dns 解析器缓存,如果没有进行下一步。
  • 根据 tcp/ip 参数查找设置好的首选 dns 服务器 ip 地址,一般叫做本地 dns 服务器,查询本地 dns 服务器。本地 dns 服务器如果没有,它就会进行下一步操作。
  • 本地dns会访问根服务器 ,然后根据后缀名,从根服务器中查找对应的顶级域名服务器的 ip ,然后以此向下查找域名服务器的 ip ,然后查找网址映射关系,直到找到为止。

http

http(超文本传输协议)是互联网上应用最为广泛的一种网络协议。HTTP 协议是用于从 Web 服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP 的工作原理是基于客户端-服务器架构。客户端(例如,Web 浏览器)向服务器(例如,Web 服务器)发送 HTTP 请求以获取资源(如 HTML 页面、图片、CSS 样式表、JavaScript 脚本等)。服务器响应这些请求,通过发送 HTTP 响应来提供所需的资源。

HTTPS(HTTP Secure)是在 HTTP 基础上加入了 SSL/TLS 加密技术,提供了安全的数据传输方式。

主要特点包括:
  • 无连接:HTTP 协议是无连接的,即每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  • 无状态:HTTP 协议是无状态的,协议对于事务处理没有记忆能力。服务器不知道客户端之前发送过什么请求,也不知道客户端下一次会发送什么请求。

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、POST、PUT、DELETE 等。每种方法规定了客户端与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。

  • 支持 B/S 模式:HTTP 支持客户端/服务器模式,客户端可以通过 HTTP 协议向服务器发送请求,服务器也可以通过 HTTP 协议将请求的内容返回给客户端。

网络编程socket

网络编程中的 socket 是一种抽象层,它允许应用程序(通常称为“客户端”和“服务器”)通过计算机网络进行通信。socket 提供了一种跨平台、跨语言的网络编程接口,使得在不同的操作系统和编程语言中都可以使用类似的方式进行网络通信。

基本概念
  1. IP 地址:用于唯一标识网络中的设备。
  2. 端口号:用于标识运行在同一台设备上的不同应用程序。每个端口号对应一个特定的服务或应用程序。
  3. TCP/UDP:两种主要的传输层协议。TCP 是面向连接的协议,提供可靠的数据传输服务;UDP 是无连接的协议,提供不可靠的数据传输服务,但速度更快。
工作原理
  1. 创建 socket:应用程序首先创建一个 socket 对象,指定使用的协议(TCP 或 UDP)和本地端口号(如果需要)。
  2. 绑定 socket:对于服务器端的 socket,需要将其绑定到一个特定的 IP 地址和端口号上,以便客户端能够找到并连接到它。
  3. 监听和接受连接(仅适用于 TCP):服务器端的 socket 开始监听来自客户端的连接请求。当有客户端连接时,服务器接受连接并创建一个新的 socket 对象来处理与该客户端的通信。
  4. 发送和接收数据:通过 socket 对象,应用程序可以发送和接收数据。对于 TCP,数据以字节流的形式传输;对于 UDP,数据以数据报的形式传输。
  5. 关闭 socket:当通信完成后,应用程序关闭 socket 对象以释放资源。
示例(基于 Python)
服务器端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import socket

# 创建一个 TCP socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定到 IP 地址和端口号
server_address = ('localhost', 12345)
server_socket.bind(server_address)

# 开始监听连接请求
server_socket.listen(1)

while True:
# 接受连接请求并返回一个新的 socket 对象和客户端地址
client_socket, client_address = server_socket.accept()
print(f"Accepted connection from {client_address}")

# 接收并处理数据(这里只是简单地回显数据)
data = client_socket.recv(1024)
if data:
print(f"Received: {data.decode()}")
client_socket.sendall(data) # 回显数据给客户端

# 关闭连接
client_socket.close()
客户端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import socket

# 创建一个 TCP socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器
server_address = ('localhost', 12345)
client_socket.connect(server_address)

try:
# 发送数据
message = b'Hello, server!'
client_socket.sendall(message)

# 接收数据
data = client_socket.recv(1024)
print(f"Received: {data.decode()}")
finally:
# 关闭连接
client_socket.close()

在这个示例中,服务器端创建一个 TCP socket 对象并绑定到本地地址和端口号上,然后开始监听连接请求。客户端也创建一个 TCP socket 对象并连接到服务器。一旦连接建立,客户端发送数据给服务器,服务器接收数据并回显给客户端。最后,双方关闭连接以释放资源。

传输层

传输层(Transport Layer)是计算机网络体系结构中的关键层次之一,主要负责两台计算机之间(或更准确地说,是两个主机中进程之间)的数据通信服务。

  • 为什么要进行三次握手?两次握手可以吗?
  • 为什么要四次挥手?
  • CTIME-WAIT 为什么是 2MSL?
  • TCP 和 UDP 的区别?
  • TCP 是如何保证可靠性的,UDP 为什么是不可靠的 ?
  • TCP 报文包含哪些信息 ?
  • UDP 包含哪些信息
  • 三次握手和四次挥手过程中,网络断开会发生什么?

端口号的使用

  • 传输层使用端口号来区分不同的应用进程。端口号是一个16位的整数,范围从0到65535。其中,0到1023为知名端口(Well-Known Ports),由IANA注册,用于特定的服务;1024到65535为动态/私有端口,可由用户自由分配。
  • 通过“IP地址+端口号”的组合,传输层能够唯一标识网络中的一个通信端口,从而实现数据的准确传输。

UDP协议

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的、面向数据报的传输层协议。它工作在OSI模型的传输层,为应用层提供了一种简单的、直接的数据传输服务。

特点:
  1. 无连接
    • UDP在发送数据之前不需要建立连接。发送方和接收方之间不保持连接状态,每个数据报都是独立传输的。
  2. 不可靠
    • UDP不保证数据报的顺序、完整性或是否到达。如果数据报在传输过程中丢失或损坏,UDP不会进行重传或恢复。
  3. 面向数据报
    • UDP将应用层交下来的数据封装成一个个的数据报(Datagram),并添加UDP头部信息,然后交给网络层进行传输。每个数据报都是一个独立的单元,携带完整的源地址和目的地址信息。
  4. 开销小
    • UDP头部只有8个字节,相对于TCP的20字节头部来说更小,因此UDP的传输开销更低,传输效率更高。
  5. 支持多播和广播
    • UDP支持向多个目的地址发送相同的数据报,即多播(Multicast)。同时,它还可以将数据报发送给网络中的所有主机,即广播(Broadcast)。
注意事项
  • 由于UDP不提供可靠的数据传输服务,因此在使用UDP时,应用层需要自行处理数据的可靠性问题,如通过应用层协议来确认数据报的接收和重传等。
  • UDP不保证数据报的顺序性,因此接收方可能会以与发送方不同的顺序接收到数据报。如果应用需要保持数据的顺序性,那么应用层需要在发送和接收时进行相应的处理。

TCP协议

TCP(Transmission Control Protocol,传输控制协议)是计算机网络中一种基于连接的、可靠的传输层协议。它提供了一系列机制来确保数据在端到端之间的可靠传输。

特点
  1. 面向连接
    • TCP在数据传输之前需要先建立连接,通过三次握手过程来确保双方都已准备好进行数据传输。
  2. 可靠性
    • TCP通过序列号、确认应答、超时重传等机制来确保数据的完整性和顺序性。如果数据包在传输过程中丢失或损坏,TCP会负责重新发送。
  3. 流控制
    • TCP使用滑动窗口机制来防止发送方发送速度过快,确保接收方能够处理并消化数据。这有助于避免接收方被数据淹没,提高传输效率。
  4. 拥塞控制
    • TCP具有拥塞控制机制,用于适应网络的拥塞情况。当网络出现拥塞时,TCP会自动减少发送速率,以减轻网络负担,避免性能下降。
  5. 面向字节流
    • TCP将传输的数据视为无边界的字节流,而不是像UDP那样按照消息边界进行划分。这意味着发送方可以连续发送数据,而接收方也可以连续接收数据,无需关心数据的原始边界。
  6. 全双工通信
    • TCP连接允许双方在同一时间既能发送数据又能接收数据,提高了通信效率。
工作机制
  1. 三次握手
    • 客户端发送SYN报文给服务器,请求建立连接。
    • 服务器收到SYN报文后,回复SYN+ACK报文给客户端,表示同意建立连接。
    • 客户端收到服务器的SYN+ACK报文后,回复ACK报文给服务器,完成三次握手过程,建立连接。
    • SYN表示标志位,seq表示序列号,ACK表示标志位,Ack表示确认号。
1
2
3
4
5
6
7
8
9
sequenceDiagram
客户端->>服务器:请求建立链接:SYN=1,seq=x
服务器->>客户端:同意建立链接:SYN=1,ACK=1,seq=y,Ack=x+1
客户端->>服务器:表示建立链接:ACK=1,Seq=x+1,Ack=y+1

loop 传输信息
服务器->>客户端:发送数据
客户端->>服务器:发送数据
end
  1. 数据传输
    • 连接建立后,双方可以开始传输数据。TCP通过序列号来标识每个数据包的顺序,并通过确认应答机制来确认数据包的接收情况。
  2. 超时重传
    • 如果客户端在规定时间内没有收到服务器的确认应答,则认为数据包丢失,会重新发送该数据包。
  3. 四次挥手
    • 当一方想要关闭连接时,会发送FIN报文给对方,表示没有数据要发送了。对方收到FIN报文后,会回复ACK报文确认收到,并继续发送完剩余的数据(如果有的话)。当对方也发送完所有数据并想要关闭连接时,也会发送FIN报文给对方。最后,双方通过ACK报文确认连接的关闭。
    • FIN:表示标志位,seq:表示序列号,ACK表示标志位,Ack表示确认号
1
2
3
4
5
6
sequenceDiagram
客户端->>服务器:请求关闭链接:FIN=1,seq=x
服务器->>客户端:同意关闭链接:ACK=1,seq=y,Ack=x+1
服务器->>客户端:结束发送,关闭链接:FIN=1,ACK=1,seq=z,Ack=x+1
客户端->>服务器:结束接受,关闭链接:ACK=1,seq=x+1,Ack=z+1

三次握手与四次挥手
三次握手:确认双方收发能力
  • 第一次握手(SYN):客户端发送一个SYN报文给服务器,表示客户端想要建立连接,并包含一个初始序列号seq=x。这个报文告诉服务器:“我想要连接你,这是我的初始序列号”。
  • 第二次握手(SYN+ACK):服务器收到客户端的SYN报文后,会回复一个SYN+ACK报文给客户端。这个报文包含服务器的初始序列号seq=y,以及对客户端SYN报文的确认号ack=x+1。这个报文告诉客户端:“我收到了你的请求,我想要连接你,这是我的初始序列号,并且我已经确认了你的序列号”。
  • 第三次握手(ACK):客户端收到服务器的SYN+ACK报文后,会回复一个ACK报文给服务器。这个报文包含对服务器SYN报文的确认号ack=y+1,但不包含序列号(因为这是一个纯确认报文)。这个报文告诉服务器:“我收到了你的回复,我已经准备好开始传输数据了”。
四次挥手:确保数据完整传输
  • 当一方想要关闭连接时,它不能直接断开连接,因为可能还有未发送或未接收的数据。因此,它需要发送一个FIN报文给对方,告诉对方:“我已经没有数据要发送了,但请允许我接收你的数据”。
  • 对方收到FIN报文后,会回复一个ACK报文,表示已经收到对方的关闭请求,但自己可能还有数据要发送。此时,连接处于半关闭状态,即一方已经关闭发送通道,但另一方仍然可以发送数据。
  • 当没有数据要发送时,另一方也会发送一个FIN报文给对方,表示自己也想要关闭连接。
  • 最后,对方回复一个ACK报文,确认已经收到对方的FIN报文,此时连接才真正关闭。
确保可靠的机制

TCP(传输控制协议)通过一系列复杂的机制来确保数据的可靠传输。校验和、序列号和确认应答机制保证了数据的完整性和顺序性;超时重传机制避免了因网络原因导致的数据丢失;连接管理(三次握手与四次挥手)确保了连接的可靠建立和正确关闭;流量控制和拥塞控制机制则保证了网络的稳定性和高效性。以下是对这些机制的详细归纳:

1. 校验和
  • 计算方式:在数据传输过程中,TCP将发送的数据段当做一个16位的整数进行累加(进位不丢弃,补在后面),最后取反得到校验和。
  • 作用:发送方在发送数据前计算校验和并填充在报文头中,接收方收到数据后同样计算校验和并与发送方的校验和进行比对。如果比对不一致,则数据一定传输有误。
2. 序列号
  • 作用:TCP为每个字节的数据都进行了编号,这就是序列号。序列号用于确保数据的顺序性和去除重复数据。
  • 确认应答:接收方收到数据后,会向发送方发送ACK报文,其中带有对应的确认序列号,告诉发送方哪些数据已经被成功接收。
3. 确认应答与超时重传
  • 确认应答:TCP传输过程中,每次接收方收到数据后都会发送ACK报文进行确认。
  • 超时重传:如果发送方在发送数据后等待一定时间(如Linux中以500ms为单位,超时时间呈指数增长)仍未收到ACK报文,则会重新发送该数据。这避免了因网络原因导致的数据丢失。
4. 连接管理(三次握手与四次挥手)
  • 三次握手:用于建立连接,确保双方都已准备好进行数据传输。
    1. 客户端发送SYN报文给服务器。
    2. 服务器回复SYN+ACK报文给客户端。
    3. 客户端回复ACK报文给服务器,连接建立成功。
  • 四次挥手:用于关闭连接,确保双方都已正确处理完所有数据。
    1. 客户端发送FIN报文给服务器,表示不再发送数据。
    2. 服务器回复ACK报文给客户端,表示收到FIN报文。
    3. 服务器发送FIN报文给客户端,表示也不再发送数据。
    4. 客户端回复ACK报文给服务器,连接关闭成功。
5. 流量控制
  • 滑动窗口机制:TCP利用滑动窗口机制实现流量控制,通过限制发送方窗口大小来防止发送速度过快导致接收方处理不及时而丢包。

    窗口大小:TCP报头中有一个16位的窗口大小字段,表示接收端接收数据缓冲区的剩余大小。发送方根据接收方发送的窗口大小来调整自己的发送速度。

6. 拥塞控制
  • 慢启动:TCP连接刚建立时,发送方限制自己的初始发送窗口大小,避免发送过多数据导致网络拥塞。窗口大小以指数级别增加,直到达到一个阈值。
  • 拥塞避免:在拥塞避免状态下,TCP发送方每经过一轮传输就增加一个MSS(最大报文段长度)的窗口大小。
  • 拥塞检测与快速恢复:当TCP发送方收到超时重传或失序的确认消息时,会认为网络中出现拥塞,并采取相应的措施(如减小窗口大小、进入慢启动状态或快速恢复状态)来避免拥塞加剧。

网络层

网络层是计算机网络体系结构中至关重要的一层,它位于OSI参考模型的第三层,也被称为网络协议层。网络层的主要功能是在源主机和目标主机之间提供数据通信的路径选择和控制,确保数据包能够正确、高效地传输。

  • IP 协议的定义和作用 ?
  • IPV4 地址不够如何解决 ?
  • ICMP 的应用 ?

常见协议

  1. IP(Internet Protocol)
    • IP协议是网络层的核心协议,负责数据包的寻址和路由。它定义了数据包的格式、寻址方式和路由规则,是互联网通信的基础。
  2. ICMP(Internet Control Message Protocol)
    • ICMP是IP协议的附属协议,用于在IP网络中传递控制消息和错误报告。它常用于网络诊断、错误通知和测量网络的可达性和延迟等。
  3. ARP(Address Resolution Protocol)
    • ARP协议用于将IP地址解析为MAC地址,在局域网中实现数据包的正确传输。
  4. RARP(Reverse Address Resolution Protocol)
    • RARP与ARP相反,用于将MAC地址解析为IP地址,通常用于无盘工作站等设备在启动时获取自己的IP地址。
  5. OSPF(Open Shortest Path First)
    • OSPF是一种链路状态路由协议,用于在IP网络中进行路由选择。它根据链路状态信息计算最短路径,是内部网关协议的一种。
  6. BGP(Border Gateway Protocol)
    • BGP是边界网关协议,用于在不同自治系统之间进行路由选择。它是一种路径矢量协议,用于互联网中的路由选择。

IP协议

IP协议,全称为网际互连协议(Internet Protocol),是TCP/IP体系中的网络层协议。它负责数据在网络中的传输,确保数据能够从一台主机正确地传送到另一台主机。

功能特点
  • 路由与转发:IP协议通过IP地址和路由表实现数据包的路由和转发,确保数据包能够跨越多个网络到达目标主机。
  • 分片与重组:当数据包的大小超过网络的最大传输单元(MTU)时,IP协议会将数据包进行分片,并在接收端进行重组。
  • 错误检测与报告:通过ICMP协议,IP协议能够检测网络中的错误,并向发送方报告错误信息。
  • 流量控制:虽然流量控制主要是传输层的任务,但IP协议通过路由选择和拥塞控制机制间接参与流量控制。
IP地址

IP地址是互联网中用于唯一标识每一台设备(如计算机、打印机、智能手机等)的逻辑地址。

IPv4/IPv6

历史上,IP地址被分为几个版本,目前最常用的是IPv4和IPv6。

  1. IPv4:
    • IPv4地址由32位二进制数组成,通常用点分十进制表示法表示,即4个8位二进制数(每个数取值范围为0-255)用点号(.)分隔,如192.168.1.1。
    • IPv4地址空间有限,理论上只有约43亿个地址,随着互联网的快速发展,IPv4地址已经接近枯竭。
  2. IPv6:
    • 为了解决IPv4地址耗尽的问题,IPv6被设计出来。IPv6地址由128位二进制数组成,比IPv4地址空间要大得多,几乎可以为地球上的每一粒沙子分配一个IP地址。
    • IPv6地址的表示方法更为复杂,通常使用十六进制数表示,并且采用了冒号分隔的八组四位数格式,如2001:0db8:85a3:0000:0000:8a2e:0370:7334。为了简化表示,IPv6地址允许使用零压缩法(将连续的零省略为一个“::”)来缩短地址长度。
IP地址分类和划分

IPv4地址根据用途被分为五类,其中A、B、C三类地址用于单播通信,D类地址用于多播(组播)通信,E类地址保留为未来使用。

  • A类地址:范围从1.0.0.0到126.255.255.255,主要用于大型网络。
  • B类地址:范围从128.0.0.0到191.255.255.255,适用于中等规模的网络。
  • C类地址:范围从192.0.0.0到223.255.255.255,主要用于小型网络。
  • D类地址:范围从224.0.0.0到239.255.255.255,用于多播通信。
  • E类地址:范围从240.0.0.0到255.255.255.255,保留为未来使用。

在 IP 地址 3 种主要类型里,各保留了 3 个区域作为私有地址,其地址范围如下:

A 类地址:10.0.0.0~10.255.255.255

B 类地址:172.16.0.0~172.31.255.255

C 类地址:192.168.0.0~192.168.255.255

ARP协议

ARP协议,即地址解析协议(Address Resolution Protocol),是TCP/IP协议族中的一个重要协议,主要用于将网络层(IP层)的IP地址解析为数据链路层(MAC层)的MAC地址。

工作原理
  1. 请求阶段
    • 当主机需要发送数据给另一个主机时,它首先会检查自己的ARP缓存表中是否已存在目标IP地址到MAC地址的映射。
    • 如果不存在,主机将生成一个ARP请求广播包,该包中包含目标IP地址和源IP地址,并广播到局域网上的所有主机。
  2. 响应阶段
    • 收到ARP请求的主机会检查自己的IP地址是否与请求中的目标IP地址相匹配。
    • 如果匹配,该主机将发送一个ARP响应包给源主机,响应包中包含自己的MAC地址。
  3. 更新ARP缓存
    • 源主机收到ARP响应包后,将目标IP地址和MAC地址的映射关系存入自己的ARP缓存中,并保留一定时间(通常为几分钟到几小时不等)。
    • 下次发送数据给同一目标时,将直接查询ARP缓存以节约资源。

数据链路层

数据链路层(Data Link Layer)是OSI参考模型中的第二层,位于物理层和网络层之间。它负责在物理层提供的服务基础上,向网络层提供服务,负责将物理层传输的原始比特流封装成帧(Frame),并通过控制帧的传输来确保数据的可靠传输。

  • MAC 地址和 IP 地址分别有什么作用 ?
  • 数据链路层上的三个基本问题 ?

主要功能

  1. 帧的封装与解封
    • 成帧(帧同步):将数据组合成数据块,并封装成帧。帧是数据链路层的传送单位,通过帧同步技术来识别帧的开始与结束。
    • 帧格式:帧通常包含帧头(包含源地址、目标地址、控制信息等)、数据部分和帧尾(校验序列等)。
  2. 差错控制
    • 通过在帧中加入校验序列(如CRC校验)来检测传输中的错误,并在发现错误时请求重传。
    • 差错控制方式包括前向纠错(FEC)、反馈检测(ARQ)、混合纠错(HEC)和信息反馈(IRQ)等。
  3. 流量控制
    • 控制数据的发送速率,以匹配接收方的处理能力,避免数据丢失。
    • 通过滑动窗口协议、停止等待协议等机制来实现。
  4. 链路控制
    • 包括数据链路的建立、维持和释放。
    • 在通信开始时建立连接,在通信过程中维持连接,在通信结束时释放连接。
  5. MAC寻址
    • 使用MAC地址(物理地址、硬件地址)来识别网络中的设备。
    • MAC地址被烧入每个以太网网卡中,用于在多点连接的网络中确保每一帧都能准确地送到正确的地址。

物理层

物理层(Physical Layer)是计算机网络体系结构中的最底层,它直接面向实际的物理传输介质,如双绞线、同轴电缆、光纤等,负责比特流(即0和1的二进制数据)的透明传输。物理层的主要任务是确定与传输媒体的接口有关的一些特性,确保数据能够在物理链路上正确地、有效地传输。

主要功能

  1. 数据编码(Data Encoding):物理层负责将来自数据链路层的数据比特流转换成适合在物理介质上传输的信号。这包括数字信号的调制和编码过程,以及模拟信号的转换。
  2. 物理接口(Physical Interface):定义物理设备之间连接的机械、电气、功能和规程特性。例如,网络接口卡(NIC)和电缆之间的插头和插座规格,信号电压水平,以及数据传输速率等。
  3. 比特同步(Bit Synchronization):物理层需要解决接收方如何从接收到的信号中准确地恢复出原始的比特流,即比特同步问题。这通常涉及到时钟信号的提取和同步。
  4. 数据速率(Data Rate):物理层还涉及到数据传输速率的控制,即每秒传输的比特数(bps)。不同的物理介质和技术支持不同的数据传输速率。
  5. 传输模式(Transmission Modes):物理层支持多种传输模式,如单工(Simplex)、半双工(Half-Duplex)和全双工(Full-Duplex)等。这些模式决定了数据在物理链路上传输的方向和方式。
  6. 错误检测(Error Detection):虽然物理层的主要任务是比特流的透明传输,但在某些情况下,物理层也会实现一些简单的错误检测机制,如奇偶校验位等,以帮助上层进行更复杂的错误控制。

信道复用

信道复用技术是一种在有限的通信资源中,通过合理地分配和利用信道资源,使多个用户或信号能够同时进行通信的技术。

  1. 时分复用(TDM, Time Division Multiplexing)
    • 原理:将时间分割成若干个时隙,不同用户在各自的时隙中进行通信。
    • 特点
      • 灵活性高:可以根据不同用户的需求灵活分配时隙。
      • 实时性强:保证用户间信息传输的实时性要求。
      • 设备成本低:只需在时间维度上进行划分,无需额外设备。
      • 缺点:在某些时刻只能有一个用户传输数据,时间资源无法完全共享。
  2. 频分复用(FDM, Frequency Division Multiplexing)
    • 原理:将通信频谱分成若干个子信道,每个子信道分配给不同的用户或信号进行传输。
    • 特点
      • 带宽高效:充分利用通信频谱资源,提高频谱利用率。
      • 抗干扰性强:不同子信道之间相互隔离,不会干扰对方。
      • 灵活性低:子信道数量固定,不能根据需求灵活调整。
  3. 码分复用(CDM, Code Division Multiplexing)
    • 原理:利用不同的扩频码将通信信号进行扩频处理,然后在频域上进行叠加传输。
    • 特点
      • 抗干扰性强:不同扩频码使信号相互隔离。
      • 安全性高:可通过加密扩频码增强通信安全性。
      • 复杂性高:需要频谱扩展和解扩处理,对系统硬件和算法要求高。
      • 频谱利用率高:支持大量用户同时通信。
  4. 波分复用(WDM, Wavelength Division Multiplexing)
    • 原理:将不同波长的光信号通过光复用器复用在同一光纤上进行传输。
    • 特点
      • 带宽大:利用不同波长的光信号传输大量数据。
      • 扩展性强:通过增加波长可提高系统容量。
      • 灵活性低:光信号频率固定,不适用于频谱的灵活配置。

计算机网络安全小叙

计算机网络安全是一个复杂而重要的领域,它涉及到保护计算机硬件、软件、数据不因偶然和恶意的原因而遭到破坏、更改和泄露。

  • dos 攻击 和 ddos 攻击是什么,如何防范 ?
  • ARP 攻击的原理 ?
  • AES加密 和 RSA加密 ?

dos和ddos

DoS(Denial of Service,拒绝服务)和DDoS(Distributed Denial of Service,分布式拒绝服务)是两种常见的网络攻击方式,它们通过向目标服务器发送大量的无效或高流量的网络请求,从而耗尽服务器的资源,使其无法正常处理有效的请求

DoS(拒绝服务)和DDoS(分布式拒绝服务)之间的主要区别:

特性 DoS(拒绝服务) DDoS(分布式拒绝服务)
定义 通过单点攻击向目标服务器发送大量请求,使其无法处理而崩溃 利用多个计算机或网络僵尸(Botnet)向目标发送大量无效或高流量请求,耗尽服务器资源
攻击源 单个设备或少量设备 分布式,来自多个源(如僵尸网络)
技术要求 较高,需要针对特定目标进行攻击 复杂,需要组织和控制多个攻击源
攻击效果 相对有限,针对单个目标 影响广泛,可针对多个目标进行大规模攻击
防御难度 适中,可通过网络设备和安全策略进行防御 较高,需要更复杂的防御措施和策略
常见攻击手段 Ping of Death, TearDrop, UDP flood, SYN flood, Land Attack, IP Spoofing等 流量攻击(如TCP、UDP洪水)、应用层攻击(如HTTP请求)、协议攻击(如SYN Flood)等
防御方法 维护系统安全,安装防火墙,限制特定IP请求 增加网络带宽,使用DDoS防护产品,部署防火墙和IDS,准备恢复计划和业务连续性

ARP攻击

ARP攻击,全称“地址解析协议攻击”,是一种针对以太网地址解析协议(ARP)的网络攻击方式,又称为ARP欺骗。ARP攻击的原理主要是基于ARP的漏洞进行欺骗。攻击者会发送伪造的ARP数据包,将自己的IP地址伪装成网络中的其他设备IP地址,同时将自己的MAC地址伪装成目标设备的MAC地址。当网络中的其他设备收到这些伪造的数据包时,由于ARP缓存表采用的是机械制原理,如果表中的某一列长时间不使用,就会被删除。因此,这些伪造的数据包有可能被错误地记录到ARP缓存表中,从而导致网络通信中断或数据泄露等安全问题。

以下是防御ARP攻击最主要的5个手段:

防御手段 描述
静态ARP绑定 将IP地址与MAC地址手动绑定在网络设备上,防止ARP欺骗。
DHCP Snooping 启用DHCP Snooping功能,限制只有经过认证的DHCP服务器才能分配IP地址,防止ARP欺骗攻击者伪造DHCP服务器。
端口安全/MAC地址绑定 在交换机上配置端口安全或MAC地址绑定功能,限制每个端口只能学习到一个或特定的MAC地址,防止ARP欺骗者接入网络。
防火墙与入侵检测 部署防火墙和入侵检测系统,对网络流量进行监控和过滤,及时发现并阻止ARP欺骗攻击。
定期更新与修补 定期更新操作系统、网络设备固件和安全软件,修补已知的安全漏洞,减少被ARP欺骗攻击的风险。

AES和RSA

AES:AES是一种广泛采用的对称加密算法,以其高效性和强大的安全性著称。它使用固定长度的密钥(128位、192位或256位)对数据进行快速加密和解密,非常适合用于保护大量数据的机密性。无论是文件加密、网络通信还是数据存储,AES都能提供可靠的安全保障。

RSA:RSA是一种基于非对称加密原理的算法,它使用一对密钥——公钥和私钥——来进行加密和解密操作。公钥可以公开分享,用于加密数据或验证数字签名;而私钥则保密持有,用于解密数据或生成签名。RSA算法特别适用于需要高安全性的场景,如数字签名、密钥交换和身份验证等。尽管其加密速度相对较慢,但RSA在保护关键数据和确保通信安全方面发挥着不可替代的作用。