type
status
date
slug
summary
tags
category
icon
password

网络模型

notion image

OSI模型七层架构

太复杂了,只是理论

TCP/IP网络模型

最常见的

TCP/IP网络模型

设备多样所以需要一套通用的网络协议
notion image

应用层Application Layer

  • 专注于为用户提供应用功能,HTTP、FTP、DNS、SMTP

传输层Transport Layer

  • TCP:保证数据可靠传递
  • UDP:只负责发送,不负责能否抵达
  • 当传输层数据过大,会将数据包分块
  • 端口:一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来。传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用

网络层Internet Layer

  • 传输层只负责服务应用,实际传输功能由网络层决定
  • IP协议:将传输层报文加上IP头部(过大再拆)
    • notion image
  • 子网掩码:10.100.122.0/24,算出 IP 地址 的网络号和主机号

网络接口层 Link Layer

  • MAC address:在IP头部添加MAC地址
  • 封装成数据帧发送给网络

网络流量传输流程

当键入网址后,到网页显示,其间发生了什么
notion image

HTTP - 浏览器解析URL

  • 生成HTTP信息

DNS域名 - 真实地址查询

根 DNS 服务器(.) 顶级域 DNS 服务器(.com) 权威 DNS 服务器(server.com
  • 查询服务器域名对应的IP地址
  • DNS服务器保存了Web服务器域名与IP的对应关系
  • 域名解析工作流程
      1. 客户端发送DNS请求,问www.server.com的IP是啥,并发送给本地DNS服务器(TCP/IP的应用层)
      1. 本地DNS服务器查找,有就返回IP,没有就去问根DNS服务器
      1. 根DNS收到请求,发现是.com,给他.com的顶级域 DNS服务器IP
      1. 本地DNS收到,去问顶级域DNS服务器
      1. 顶级域DNS服务器发现是server.com,给他权威 DNS 服务器IP
      1. 本地DNS收到,去问权威 DNS 服务器
      1. 权威 DNS 服务器查到对应IP地址X.X.X.X,给本地DNS
      1. 本地DNS将IP地址返回给客户端,客户端和目标端建立连接

协议栈

TCP、UDP、IP组成
  • 浏览器调用Socket委托协议栈工作
  • 协议栈执行TCP和UDP接受应用层委托的操作
  • 协议栈后半部分由IP协议控制收发包
notion image

TCP - 可靠传输

HTTP 是基于 TCP 协议传输的

IP - 远程定位

在 IP 协议里面需要有源地址 IP 和 目标地址 IP:
  • 源地址IP,即是客户端输出的 IP 地址
  • 目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP

MAC - 两点传输

接收方和发送方的 MAC 地址

网卡 - 出口

将数字信息转换为电信号

交换机

  • 电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号

路由器

  • 因为路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址
  • 而交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址。
 

路由器和交换机的区别是什么

  1. 工作原理
      • 路由器:基于网络层信息(如IP地址),通过路由表来决定数据包的最佳转发路径,使数据包能够跨越不同的网络进行传输。
      • 交换机:基于数据链路层信息(如MAC地址),在同一局域网内部通过交换机表(MAC表)来决定数据包从哪个端口转发到目标设备,实现局域网内部设备之间的快速数据传输。
  1. 适用场景
      • 路由器通常用于连接不同网络,比如连接到互联网的边界,或者连接到不同部门的局域网之间。
      • 交换机通常用于同一局域网内部的设备连接,如连接多台计算机、打印机、服务器等设备,以实现内部设备间的快速通信和数据交换。

服务器与客户端

发送端/客户端从 应用层 → 网络接口层 不断加数据头
接收端/服务器端从 网络接口层 → 应用层不断删除数据头解析
 

HTTP

基本概念-HTTP是什么

超文本传输协议
HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」
  1. 协议:交流通信的规范协议
  1. 传输:双向的
  1. 超文本:文字、图片、视频混合

GET与POST

GET方法

  1. 用途:从服务器获取数据
  1. 参数传递:通过URL传递参数,参数会显示在URL中
  1. 安全性:因为参数显示在URL中,所以不适合传递敏感信息
  1. 缓存:GET请求可以被浏览器缓存,适合用于获取不变的数据
  1. 大小限制:URL长度有限制(具体限制依赖于浏览器和服务器)

POST 方法

  1. 用途:向服务器发送数据,通常会引起服务器状态的改变
  1. 参数传递:参数放在请求体中,而不是URL中,URL中不会显示参数。
  1. 安全性:相对来说更安全,因为参数不会显示在URL中,但仍需通过HTTPS加密来保护敏感信息
  1. 缓存:POST请求一般不会被浏览器缓存
  1. 大小限制:POST请求没有URL长度的限制

HTTP缓存技术

强制缓存

只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存

协商缓存

通过服务端告知客户端是否可以使用缓存的方式被称为协商缓存

HTTP与HTTPS

区别

  • HTTP 信息是明文传输,HTTPS 在 TCP 和 HTTP 网络层之间加入 SSL/TLS 安全协议,进行加密
  • HTTPS 在TCP 三次握手后多了 SSL/TSL 握手
  • HTTP 端口是80, HTTPS 默认端口是443

HTTPS解决HTTP哪些问题

  • 窃听 - 信息加密
  • 篡改 - 校验机制
  • 冒充 - 身份验证

HTTPS解决方法 - 混合加密

  • 在通信建立前采用非对称加密:两个密钥,公钥和私钥
  • 通信过程使用对称加密:只使用一个密钥,运算速度快

数据加密 - 公钥和私钥

  1. 公钥:对外公开,可以被任何人获取和使用。用于加密数据,只有对应的私钥才能解密这些数据
    1. 私钥:用于解密由对应公钥加密的数据,不可泄漏
  1. 一对密钥由一个公钥和一个私钥组成
  1. 发送方用公钥进行加密,接收方用私钥解密

HTTPS解决方法 - 摘要算法(Hash Algorithm)

  1. 定义:摘要算法是一种将任意长度的输入数据转换为固定长度的输出数据(称为摘要或哈希值)的算法
  1. 特点:哈希值无法反推出原始数据,唯一性
常见的摘要算法有SHA-256、SHA-3

HTTPS解决方法 - 数字签名

  1. 定义:数字签名是基于公钥加密技术,用于验证数据的真实性和完整性,以及验证发送者身份的一种加密签名
  1. 原理
    1. 发送方生成原数据的哈希值,用私钥生成签名,发送数据和签名
    2. 接收方用相同的摘要算法生成数据的哈希值
    3. 接收方使用发送方的公钥对数字签名进行解密,得到发送方加密的哈希值
    4. 比较哈希值
常见的数字签名算法有RSA、DSA、ECDSA

数据加密与数字签名的区别

  • 数据加密
    • 发送方用接收方的公钥加密数据
    • 接收方用自己的私钥解密数据
  • 数字签名
    • 发送方用自己的私钥对数据的哈希值加密生成签名
    • 接收方用发送方的公钥解密签名,并验证数据的完整性和发送方的身份
  • 加密数据的目的是确保数据的保密性,而数字签名的目的是确保数据的完整性和真实性

摘要算法与数字签名的区别

摘要算法(哈希算法)保证消息的完整性 - 不能保证来源是正确的,所以要结合非堆成加密
可以通过数字签名来保证消息的来源可靠性

HTTPS解决方法 - 数字证书

万一公钥是伪造的呢?
由一个可信任的第三方机构(称为证书颁发机构,CA)签发

HTTPS - SSL/TLS 协议

过程
  1. 握手阶段
    1. 客户端和服务器交换信息确认身份和加密方式 - RSA算法
    2. 客户端验证服务器证书,并生成加密用的“会话密钥”
  1. 加密通信
    1. 使用“会话密钥”加密和解密数据,确保安全传输
  1. 连接终止

HTTPS 一定安全可靠吗?

HTTPS 协议本身到目前为止还是没有任何漏洞的,即使你成功进行中间人攻击,本质上是利用了客户端的漏洞(用户点击继续访问或者被恶意导入伪造的根证书),并不是 HTTPS 不够安全
⚠️
如何避免被中间人抓取数据?
HTTPS 双向认证

TCP

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议

三次握手

notion image
  1. 第一步(SYN)
      • 客户端发送一个 SYN(同步)标志位给服务器
      • 此时客户端进入 SYN_SENT 状态,表示客户端已经发送了连接请求
  1. 第二步(SYN + ACK)
      • 服务器收到回复一个 ACK(确认)数据包
      • 此时服务器进入 SYN_RCVD 状态,表示服务器已经接收到客户端的连接请求
  1. 第三步(ACK)
      • 客户端收到服务器发送的 SYN + ACK 数据包后,会向服务器发送一个确认数据包(ACK),确认服务器的连接响应

握手丢失情况

第一次握手丢失

客户端没收到SYN+ACK,超时重传SYN

第二次握手丢失

  • 客户端没收到SYN+ACK,超时重传SYN
  • 服务端也没收到ACK,超时重传SYN+ACK

第三次握手丢失

服务端没收到ACK,超时重传SYN+ACK

为什么不是两次握手

  1. 可能一个第一SYN包因为网络阻塞,客户端又发送第二个SYN包,服务端回复一个SYN+ACK,成功和建立客户端建立。但是第一个包此时又成功到达服务端,最终造成客户端认为只有一个连接,而服务端认为有两个连接
  1. 三次握手确保TCP在不可靠的信道里建立有效的连接

四次挥手

目的是客户端和服务端都可以请求关闭连接
notion image
  1. 第一次挥手:
    1. 客户端向服务器发送FIN(Finish)报文
    2. 作用:表示自己已经没有数据要发送
  1. 第二次挥手:
    1. 服务器收到后恢复ACK报文,表示确认收到
  1. 第三次挥手:
    1. 服务器发送完数据后,向客户端发送FIN
    2. 表示自己也准备关闭了
  1. 第四次挥手:
    1. 客户端收到 FIN 报文后,回复一个 ACK 报文,确认收到被动关闭方的 FIN

为什么是四次挥手?

双方都需要单独关闭发送和接收的通道。每一方需要独立地确认对方不再发送数据,因此需要四次握手来确保双向通信的终止

IP

IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。

网络层(IP)与数据链路层(MAC)区别

  • MAC 的作用则是实现「直连」的两个设备之间通信
  • IP 则负责在「没有直连」的两个网络之间进行通信传输

IP 地址的分类

广播地址

  • 同一个链路中相互连接的主机之间发送数据包
  • 192.168.1.1 ,主机号全为 1 指定某个网络下的所有主机,用于广播

公有 IP 地址与私有 IP 地址

私有 IP 地址

在局域网(LAN)内部使用,不在互联网中传输,通常用于家庭、企业内部网络,可以重复

公有 IP 地址

由互联网服务提供商(ISP)分配,在全球范围内唯一,可以在互联网上直接访问。

IPv4和IPv6

IPv4 地址长度为32位,通常以点分十进制表示
IPv6 地址长度为128位,通常以冒号分隔的十六进制表示

子网掩码

它帮助确定一个IP地址中的哪些位是网络标识,哪些位是主机标识。子网掩码通常与IP地址一起使用,以便在局域网(LAN)和广域网(WAN)中正确路由数据包

示例说明

  1. IP地址:192.168.1.10,对应的二进制表示是:
    1. 11000000.10101000.00000001.00001010
  1. 子网掩码:255.255.255.0,对应的二进制表示是:
    1. 11111111.11111111.11111111.00000000
  1. 网络部分和主机部分:
    1. 子网掩码的前24位是1,表示网络部分。
    2. 子网掩码的后8位是0,表示主机部分。
  1. 结合起来:
    1. 网络部分:192.168.1(前24位)
    2. 主机部分:10(后8位)
  1. 所以,192.168.1.10属于网络192.168.1.0,其中0表示这个网络中的所有主机

CIDR表示法

子网掩码也可以用无类别域间路由(CIDR)表示法来表示
  • 255.255.255.0 可以表示为 /24,因为子网掩码的前24位是1
  • 255.255.0.0 可以表示为 /16

常见的子网掩码

  • /8(255.0.0.0):A类网络,默认子网掩码
  • /16(255.255.0.0):B类网络,默认子网掩码
  • /24(255.255.255.0):C类网络,默认子网掩码

子网掩码的用途

  1. 划分子网:在一个大网络中划分成多个小的子网,提高网络的管理和安全性。
  1. 确定网络范围:用于确定一个IP地址属于哪个子网,从而决定数据包的转发路径。
  1. IP地址分配:在局域网中,通过子网掩码可以更高效地分配和管理IP地址。
 

IP 协议相关技术

DNS

帮助用户在浏览器中输入域名时,将其转换为计算机能够识别和处理的IP地址

ARP

通过广播请求来查询目标设备的物理地址,并将结果存储在本地缓存中,以提高数据传输的效率和准确性

DHCP

允许计算机和其他设备在加入网络时自动获取IP地址、子网掩码、网关地址、DNS服务器等网络配置,从而简化了网络管理和配置的过程

相关知识

Cookie是什么

Cookie(HTTP cookie)是服务器存储在用户浏览器中的小型文本文件,用于跟踪、识别和存储用户在网站上的信息和偏好设置。它通常由服务器发送给浏览器,并存储在用户的计算机上,随后每次浏览器向服务器发送请求时,都会将相应的 Cookie 数据包含在请求中

主要作用和特点

  1. 会话管理:用于识别用户会话状态,比如登录状态,使得用户在不同页面之间保持登录状态。
  1. 个性化设置:用于存储用户的个性化偏好设置,如语言选择、字体大小等。
  1. 跟踪和分析:用于分析用户行为,进行用户行为跟踪和统计分析,以改进网站的服务和内容。
  1. 广告定向:用于广告商进行定向广告投放,基于用户的兴趣和行为历史。

工作原理

  • 服务器端:当服务器收到来自浏览器的请求时,可以在响应中附带 Set-Cookie 头部,将要存储的 Cookie 数据发送给客户端
  • 客户端(浏览器):浏览器接收到 Cookie 后,会将其存储在用户的本地文件系统中

分类

  • 会话 Cookie:存储在浏览器内存中,浏览器关闭时会被删除
  • 持久 Cookie:存储在用户硬盘上,过期时间可以设置较长,浏览器关闭后仍然存在
 
 
 
 
机器学习算法密码学
Loading...
Boomshakalaka
Boomshakalaka
CJY
小红书
最新发布
数据库系统和SQL
2025-3-21
Nodejs Windows安装教程
2025-3-16
计算机网络
2025-3-16
机器学习算法
2025-3-16
云里雾里看梅里-云南
2025-3-16
南半球纽约 - 悉尼
2025-3-16