type
status
date
slug
summary
tags
category
icon
password
网络模型OSI模型七层架构TCP/IP网络模型TCP/IP网络模型应用层Application Layer传输层Transport Layer网络层Internet Layer网络接口层 Link Layer网络流量传输流程HTTP - 浏览器解析URLDNS域名 - 真实地址查询协议栈TCP - 可靠传输IP - 远程定位MAC - 两点传输网卡 - 出口交换机路由器路由器和交换机的区别是什么服务器与客户端HTTP基本概念-HTTP是什么GET与POSTGET方法POST 方法HTTP缓存技术强制缓存协商缓存HTTP与HTTPS区别HTTPS解决HTTP哪些问题HTTPS解决方法 - 混合加密数据加密 - 公钥和私钥HTTPS解决方法 - 摘要算法(Hash Algorithm) HTTPS解决方法 - 数字签名数据加密与数字签名的区别摘要算法与数字签名的区别HTTPS解决方法 - 数字证书HTTPS - SSL/TLS 协议HTTPS 一定安全可靠吗?TCP三次握手握手丢失情况第一次握手丢失第二次握手丢失第三次握手丢失为什么不是两次握手四次挥手为什么是四次挥手?IP网络层(IP)与数据链路层(MAC)区别IP 地址的分类广播地址 公有 IP 地址与私有 IP 地址私有 IP 地址公有 IP 地址IPv4和IPv6子网掩码示例说明CIDR表示法常见的子网掩码子网掩码的用途IP 协议相关技术DNSARPDHCP相关知识Cookie是什么主要作用和特点工作原理分类
网络模型

OSI模型七层架构
太复杂了,只是理论
TCP/IP网络模型
最常见的
TCP/IP网络模型
设备多样所以需要一套通用的网络协议

应用层Application Layer
- 专注于为用户提供应用功能,HTTP、FTP、DNS、SMTP
传输层Transport Layer
- TCP:保证数据可靠传递
- UDP:只负责发送,不负责能否抵达
- 当传输层数据过大,会将数据包分块
- 端口:一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来。传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用
网络层Internet Layer
- 传输层只负责服务应用,实际传输功能由网络层决定
- IP协议:将传输层报文加上IP头部(过大再拆)

- 子网掩码:10.100.122.0/24,算出 IP 地址 的网络号和主机号
网络接口层 Link Layer
- MAC address:在IP头部添加MAC地址
- 封装成数据帧发送给网络
网络流量传输流程
当键入网址后,到网页显示,其间发生了什么

HTTP - 浏览器解析URL
- 生成HTTP信息
DNS域名 - 真实地址查询
根 DNS 服务器(.)
顶级域 DNS 服务器(.com)
权威 DNS 服务器(server.com)
- 查询服务器域名对应的IP地址
- DNS服务器保存了Web服务器域名与IP的对应关系
- 域名解析工作流程
- 客户端发送DNS请求,问www.server.com的IP是啥,并发送给本地DNS服务器(TCP/IP的应用层)
- 本地DNS服务器查找,有就返回IP,没有就去问根DNS服务器
- 根DNS收到请求,发现是.com,给他.com的顶级域 DNS服务器IP
- 本地DNS收到,去问顶级域DNS服务器
- 顶级域DNS服务器发现是server.com,给他权威 DNS 服务器IP
- 本地DNS收到,去问权威 DNS 服务器
- 权威 DNS 服务器查到对应IP地址X.X.X.X,给本地DNS
- 本地DNS将IP地址返回给客户端,客户端和目标端建立连接
协议栈
TCP、UDP、IP组成
- 浏览器调用Socket委托协议栈工作
- 协议栈执行TCP和UDP接受应用层委托的操作
- 协议栈后半部分由IP协议控制收发包

TCP - 可靠传输
HTTP 是基于 TCP 协议传输的
IP - 远程定位
在 IP 协议里面需要有源地址 IP 和 目标地址 IP:
- 源地址IP,即是客户端输出的 IP 地址
- 目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP
MAC - 两点传输
接收方和发送方的 MAC 地址
网卡 - 出口
将数字信息转换为电信号
交换机
- 电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号
路由器
- 因为路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址
- 而交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址。
路由器和交换机的区别是什么
- 工作原理:
- 路由器:基于网络层信息(如IP地址),通过路由表来决定数据包的最佳转发路径,使数据包能够跨越不同的网络进行传输。
- 交换机:基于数据链路层信息(如MAC地址),在同一局域网内部通过交换机表(MAC表)来决定数据包从哪个端口转发到目标设备,实现局域网内部设备之间的快速数据传输。
- 适用场景:
- 路由器通常用于连接不同网络,比如连接到互联网的边界,或者连接到不同部门的局域网之间。
- 交换机通常用于同一局域网内部的设备连接,如连接多台计算机、打印机、服务器等设备,以实现内部设备间的快速通信和数据交换。
服务器与客户端
发送端/客户端从 应用层 → 网络接口层 不断加数据头
接收端/服务器端从 网络接口层 → 应用层不断删除数据头解析
HTTP
基本概念-HTTP是什么
超文本传输协议
HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」
- 协议:交流通信的规范协议
- 传输:双向的
- 超文本:文字、图片、视频混合
GET与POST
GET方法
- 用途:从服务器获取数据
- 参数传递:通过URL传递参数,参数会显示在URL中
- 安全性:因为参数显示在URL中,所以不适合传递敏感信息
- 缓存:GET请求可以被浏览器缓存,适合用于获取不变的数据
- 大小限制:URL长度有限制(具体限制依赖于浏览器和服务器)
POST 方法
- 用途:向服务器发送数据,通常会引起服务器状态的改变
- 参数传递:参数放在请求体中,而不是URL中,URL中不会显示参数。
- 安全性:相对来说更安全,因为参数不会显示在URL中,但仍需通过HTTPS加密来保护敏感信息
- 缓存:POST请求一般不会被浏览器缓存
- 大小限制:POST请求没有URL长度的限制
HTTP缓存技术
强制缓存
只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存
协商缓存
通过服务端告知客户端是否可以使用缓存的方式被称为协商缓存
HTTP与HTTPS
区别
- HTTP 信息是明文传输,HTTPS 在 TCP 和 HTTP 网络层之间加入 SSL/TLS 安全协议,进行加密
- HTTPS 在TCP 三次握手后多了 SSL/TSL 握手
- HTTP 端口是80, HTTPS 默认端口是443
HTTPS解决HTTP哪些问题
- 窃听 - 信息加密
- 篡改 - 校验机制
- 冒充 - 身份验证
HTTPS解决方法 - 混合加密
- 在通信建立前采用非对称加密:两个密钥,公钥和私钥
- 通信过程使用对称加密:只使用一个密钥,运算速度快
数据加密 - 公钥和私钥
- 公钥:对外公开,可以被任何人获取和使用。用于加密数据,只有对应的私钥才能解密这些数据
私钥:用于解密由对应公钥加密的数据,不可泄漏
- 一对密钥由一个公钥和一个私钥组成
- 发送方用公钥进行加密,接收方用私钥解密
HTTPS解决方法 - 摘要算法(Hash Algorithm)
- 定义:摘要算法是一种将任意长度的输入数据转换为固定长度的输出数据(称为摘要或哈希值)的算法
- 特点:哈希值无法反推出原始数据,唯一性
常见的摘要算法有SHA-256、SHA-3
HTTPS解决方法 - 数字签名
- 定义:数字签名是基于公钥加密技术,用于验证数据的真实性和完整性,以及验证发送者身份的一种加密签名
- 原理
- 发送方生成原数据的哈希值,用私钥生成签名,发送数据和签名
- 接收方用相同的摘要算法生成数据的哈希值
- 接收方使用发送方的公钥对数字签名进行解密,得到发送方加密的哈希值
- 比较哈希值
常见的数字签名算法有RSA、DSA、ECDSA
数据加密与数字签名的区别
- 数据加密
- 发送方用接收方的公钥加密数据
- 接收方用自己的私钥解密数据
- 数字签名
- 发送方用自己的私钥对数据的哈希值加密生成签名
- 接收方用发送方的公钥解密签名,并验证数据的完整性和发送方的身份
- 加密数据的目的是确保数据的保密性,而数字签名的目的是确保数据的完整性和真实性
摘要算法与数字签名的区别
摘要算法(哈希算法)保证消息的完整性 - 不能保证来源是正确的,所以要结合非堆成加密
可以通过数字签名来保证消息的来源可靠性
HTTPS解决方法 - 数字证书
万一公钥是伪造的呢?
由一个可信任的第三方机构(称为证书颁发机构,CA)签发
HTTPS - SSL/TLS 协议
过程
- 握手阶段
- 客户端和服务器交换信息确认身份和加密方式 - RSA算法
- 客户端验证服务器证书,并生成加密用的“会话密钥”
- 加密通信
- 使用“会话密钥”加密和解密数据,确保安全传输
- 连接终止
HTTPS 一定安全可靠吗?
HTTPS 协议本身到目前为止还是没有任何漏洞的,即使你成功进行中间人攻击,本质上是利用了客户端的漏洞(用户点击继续访问或者被恶意导入伪造的根证书),并不是 HTTPS 不够安全
如何避免被中间人抓取数据?
HTTPS 双向认证
TCP
TCP 是面向连接的、可靠的、基于字节流的传输层通信协议
三次握手

- 第一步(SYN):
- 客户端发送一个 SYN(同步)标志位给服务器
- 此时客户端进入 SYN_SENT 状态,表示客户端已经发送了连接请求
- 第二步(SYN + ACK):
- 服务器收到回复一个 ACK(确认)数据包
- 此时服务器进入 SYN_RCVD 状态,表示服务器已经接收到客户端的连接请求
- 第三步(ACK):
- 客户端收到服务器发送的 SYN + ACK 数据包后,会向服务器发送一个确认数据包(ACK),确认服务器的连接响应
握手丢失情况
第一次握手丢失
客户端没收到SYN+ACK,超时重传SYN
第二次握手丢失
- 客户端没收到SYN+ACK,超时重传SYN
- 服务端也没收到ACK,超时重传SYN+ACK
第三次握手丢失
服务端没收到ACK,超时重传SYN+ACK
为什么不是两次握手
- 可能一个第一SYN包因为网络阻塞,客户端又发送第二个SYN包,服务端回复一个SYN+ACK,成功和建立客户端建立。但是第一个包此时又成功到达服务端,最终造成客户端认为只有一个连接,而服务端认为有两个连接
- 三次握手确保TCP在不可靠的信道里建立有效的连接
四次挥手
目的是客户端和服务端都可以请求关闭连接

- 第一次挥手:
- 客户端向服务器发送FIN(Finish)报文
- 作用:表示自己已经没有数据要发送
- 第二次挥手:
- 服务器收到后恢复ACK报文,表示确认收到
- 第三次挥手:
- 服务器发送完数据后,向客户端发送FIN
- 表示自己也准备关闭了
- 第四次挥手:
- 客户端收到 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)中正确路由数据包
示例说明
- IP地址:192.168.1.10,对应的二进制表示是:
11000000.10101000.00000001.00001010
- 子网掩码:255.255.255.0,对应的二进制表示是:
11111111.11111111.11111111.00000000
- 网络部分和主机部分:
- 子网掩码的前24位是1,表示网络部分。
- 子网掩码的后8位是0,表示主机部分。
- 结合起来:
- 网络部分:192.168.1(前24位)
- 主机部分:10(后8位)
- 所以,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类网络,默认子网掩码
子网掩码的用途
- 划分子网:在一个大网络中划分成多个小的子网,提高网络的管理和安全性。
- 确定网络范围:用于确定一个IP地址属于哪个子网,从而决定数据包的转发路径。
- IP地址分配:在局域网中,通过子网掩码可以更高效地分配和管理IP地址。
IP 协议相关技术
DNS
帮助用户在浏览器中输入域名时,将其转换为计算机能够识别和处理的IP地址
ARP
通过广播请求来查询目标设备的物理地址,并将结果存储在本地缓存中,以提高数据传输的效率和准确性
DHCP
允许计算机和其他设备在加入网络时自动获取IP地址、子网掩码、网关地址、DNS服务器等网络配置,从而简化了网络管理和配置的过程
相关知识
Cookie是什么
Cookie(HTTP cookie)是服务器存储在用户浏览器中的小型文本文件,用于跟踪、识别和存储用户在网站上的信息和偏好设置。它通常由服务器发送给浏览器,并存储在用户的计算机上,随后每次浏览器向服务器发送请求时,都会将相应的 Cookie 数据包含在请求中
主要作用和特点
- 会话管理:用于识别用户会话状态,比如登录状态,使得用户在不同页面之间保持登录状态。
- 个性化设置:用于存储用户的个性化偏好设置,如语言选择、字体大小等。
- 跟踪和分析:用于分析用户行为,进行用户行为跟踪和统计分析,以改进网站的服务和内容。
- 广告定向:用于广告商进行定向广告投放,基于用户的兴趣和行为历史。
工作原理
- 服务器端:当服务器收到来自浏览器的请求时,可以在响应中附带 Set-Cookie 头部,将要存储的 Cookie 数据发送给客户端
- 客户端(浏览器):浏览器接收到 Cookie 后,会将其存储在用户的本地文件系统中
分类
- 会话 Cookie:存储在浏览器内存中,浏览器关闭时会被删除
- 持久 Cookie:存储在用户硬盘上,过期时间可以设置较长,浏览器关闭后仍然存在
- 作者:Boomshakalaka
- 链接:https://www.cjyblog.icu/article/1b8a7176-fc43-8079-88bd-c3d0d7b1fe03
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。