网络/网站基础知识概述
网关(Gateway):将不同网络连接起来的设备
- 例如连接局域网和互联网的路由器
- 一般来说,局域网内的主机的网关是路由器的IP地址
子网(Subnet):将一个大的IP地址段划分为多个小的IP地址段
- 区分
192.168.1.1
或192.168.1.0/24
或255.255.255.0
- 子网掩码用于判断两个IP地址是否在同一个子网中
NAT(Network Address Translation):网络地址转换技术
- 用于将局域网内的多个主机共享一个公网IP地址
- 通过修改IP数据包的源目地址来实现
端口(Port):软件层面的通信端点,与IP地址构成网络通信的基础
- IP识别机器,端口识别进程(服务)
- TCP和UDP的端口是分开的,也就是说,同一个端口可以同时用于TCP和UDP协议
- 端口范围:0
65535,其中01023为系统保留端口,102449151为知名端口,4915265535为动态/私有端口
域名(Domain Name):用于以一种人类可读的方式标识互联网上的计算机
- 是一串用“.”分割的字符串组成
- 从最右侧依次为顶级域名(.com,.org,.net等)、二级域名(如www)、三级域名(如www.baidu.com)等
- 拥有一个域名需要去域名注册商(阿里云、腾讯云、GoDaddy、cloudflare等)购买,注册费用一般在几十到几千不等
- 只拥有一个域名不代表就可以访问了,还需要服务器等
DNS(Domain Name System):域名解析服务器,用于将域名转换为IP地址
- 用
nslookup
命令可以查看域名解析过程
- 访问一个域名的时候,计算机会向DNS服务器查询域名所对应的IP地址,DNS服务器一般会缓存查询结果,也有可能会向其他DNS服务器查询
- DNS的分配端口是TCP/UDP的53号端口
- 用于定位互联网上的资源
- 格式一般为:
https://www.exmaple.com:443/path/to/resource?query=123#flag
- 按顺序依次是:协议、域名(主机)、端口、路径、查询(参数)、片段(锚点)
HTTP(Hypertext Transfer Protocol):超文本传输协议
- 基于文本的协议,用于在客户端和服务器之间传输网页
- 两个通信节点的任意一个中间节点都可以窃听并干预通信内容
- HTTP/1.1:基于TCP的文本协议。一个连接处理一个请求,即请求和响应是串行的,容易受到TCP慢启动和阻塞机制的影响
- HTTP/2:基于TCP的二进制协议,通过压缩标头和多路复用等技术提高性能。多个请求可以在同一个连接上并行处理
- HTTP/3:基于QUIC协议,达到了连接的可靠性与低延迟。抛弃了TCP而建立在UDP之上,通过其他手段来克服UDP的不可靠性。
HTTPS(Hypertext Transfer Protocol Secure):安全版HTTP
- 在HTTP的基础上加入SSL/TLS加密层,实现了对传输内容的加密
- 一般使用443端口
对称加密
- 加密和解密使用同一个密钥
- 优点:计算量小,加密速度快
- 缺点:通信双方必须使用同一个密钥,安全性较低
Diffie-Hellman密钥交换(现代密码学)
- 基于离散对数问题,即采用ab≡c(modp),是难以求解b的
- 通信双方各自确定一个密钥值,再确定一个公开的参数p和g,所有运算都在模p下进行,通信者a计算ga,通信者b计算gb,然后a计算(ga)b,b计算(gb)a
- 即使有人查看了所有的通信内容,也无法推导出双方的私钥
- 优点:安全性高,通信双方不需要共享密钥,可以防止中间人攻击
- 缺点:计算量大,通信速度慢
非对称加密(RSA与ECC)
- 公钥加密,私钥解密,私钥只能由拥有者解密
- RSA:基于大整数难以进行因数分解,比如p和q相乘很简单,但是要把pq分解成p和q很困难
- ECC:椭圆曲线加密算法,基于椭圆曲线离散对数问题,可以计算出共享密钥,有点类似于DH算法。相较于RSA,ECC可以在更短的密钥长度下提供同样的安全性
- 后量子密码学:由于量子计算机获得的计算能力提升,先行的加密算法可能存在被暴力破解的可能,有AES等对称加密算法不受量子计算机的影响
TLS证书和CA
- TLS证书:用于验证服务器的身份,数字签名的公钥
- CA:证书认证机构,颁发TLS证书,CA验证服务器的身份,并对服务器的公钥进行数字签名
- CA是通信双方都相信的权威机构,使用安全手段验证网站为其身份和安全性背书。网站在做密钥交换时,发出自己的证书,以此证明自己是真的官方网站
C/S架构:客户端/服务器架构
- 任何一台计算机都可以作为服务器
- 发起请求的机器称为客户端,接收请求的机器称为服务器
- 服务器无法主动发起连接,只能等待客户端的连接请求
- 服务器可以同时处理多个客户端的连接
- 客户端在本地选取一个空闲的高端口作为自己的连接端口,连接到服务器的指定端口(例如client:49152 -> server:80)
- DDos攻击:分布式拒绝服务攻击,通过大量的请求占用服务器资源,导致服务器无法响应正常请求
HTML JavaScript CSS:网页的三大件
- HTML:标记语言,用于定义网页的结构和内容
- CSS:样式语言,用于定义网页的外观和布局
- JavaScript:脚本语言,用于实现网页的动态效果
- WebAssembly:可能是JavaScript的未来,用于在浏览器上运行高性能的应用,且能跨平台能与JS交互