笼统聊聊网络的一些基础知识

这是一篇讲述网络基础知识的文章。

网络/网站基础知识概述

网关(Gateway):将不同网络连接起来的设备

  1. 例如连接局域网和互联网的路由器
  2. 一般来说,局域网内的主机的网关是路由器的IP地址

子网(Subnet):将一个大的IP地址段划分为多个小的IP地址段

  1. 区分192.168.1.1192.168.1.0/24255.255.255.0
  2. 子网掩码用于判断两个IP地址是否在同一个子网中

NAT(Network Address Translation):网络地址转换技术

  1. 用于将局域网内的多个主机共享一个公网IP地址
  2. 通过修改IP数据包的源目地址来实现

端口(Port):软件层面的通信端点,与IP地址构成网络通信的基础

  1. IP识别机器,端口识别进程(服务)
  2. TCP和UDP的端口是分开的,也就是说,同一个端口可以同时用于TCP和UDP协议
  3. 端口范围:065535,其中01023为系统保留端口,102449151为知名端口,4915265535为动态/私有端口

域名(Domain Name):用于以一种人类可读的方式标识互联网上的计算机

  1. 是一串用“.”分割的字符串组成
  2. 从最右侧依次为顶级域名(.com,.org,.net等)、二级域名(如www)、三级域名(如www.baidu.com)等
  3. 拥有一个域名需要去域名注册商(阿里云、腾讯云、GoDaddy、cloudflare等)购买,注册费用一般在几十到几千不等
  4. 只拥有一个域名不代表就可以访问了,还需要服务器等

DNS(Domain Name System):域名解析服务器,用于将域名转换为IP地址

  1. nslookup命令可以查看域名解析过程
  2. 访问一个域名的时候,计算机会向DNS服务器查询域名所对应的IP地址,DNS服务器一般会缓存查询结果,也有可能会向其他DNS服务器查询
  3. DNS的分配端口是TCP/UDP的53号端口

URL(Uniform Resource Locator):统一资源定位符

  1. 用于定位互联网上的资源
  2. 格式一般为:https://www.exmaple.com:443/path/to/resource?query=123#flag
  3. 按顺序依次是:协议、域名(主机)、端口、路径、查询(参数)、片段(锚点)

HTTP(Hypertext Transfer Protocol):超文本传输协议

  1. 基于文本的协议,用于在客户端和服务器之间传输网页
  2. 两个通信节点的任意一个中间节点都可以窃听并干预通信内容
  3. HTTP/1.1:基于TCP的文本协议。一个连接处理一个请求,即请求和响应是串行的,容易受到TCP慢启动和阻塞机制的影响
  4. HTTP/2:基于TCP的二进制协议,通过压缩标头和多路复用等技术提高性能。多个请求可以在同一个连接上并行处理
  5. HTTP/3:基于QUIC协议,达到了连接的可靠性与低延迟。抛弃了TCP而建立在UDP之上,通过其他手段来克服UDP的不可靠性。

HTTPS(Hypertext Transfer Protocol Secure):安全版HTTP

  1. 在HTTP的基础上加入SSL/TLS加密层,实现了对传输内容的加密
  2. 一般使用443端口

对称加密

  1. 加密和解密使用同一个密钥
  2. 优点:计算量小,加密速度快
  3. 缺点:通信双方必须使用同一个密钥,安全性较低

Diffie-Hellman密钥交换(现代密码学)

  1. 基于离散对数问题,即采用abc(modp)a^b\equiv c\pmod p,是难以求解bb
  2. 通信双方各自确定一个密钥值,再确定一个公开的参数p和g,所有运算都在模p下进行,通信者a计算gag^a,通信者b计算gbg^b,然后a计算(ga)b(g^a)^b,b计算(gb)a(g^b)^a
  3. 即使有人查看了所有的通信内容,也无法推导出双方的私钥
  4. 优点:安全性高,通信双方不需要共享密钥,可以防止中间人攻击
  5. 缺点:计算量大,通信速度慢

非对称加密(RSA与ECC)

  1. 公钥加密,私钥解密,私钥只能由拥有者解密
  2. RSA:基于大整数难以进行因数分解,比如p和q相乘很简单,但是要把pqpq分解成p和q很困难
  3. ECC:椭圆曲线加密算法,基于椭圆曲线离散对数问题,可以计算出共享密钥,有点类似于DH算法。相较于RSA,ECC可以在更短的密钥长度下提供同样的安全性
  4. 后量子密码学:由于量子计算机获得的计算能力提升,先行的加密算法可能存在被暴力破解的可能,有AES等对称加密算法不受量子计算机的影响

TLS证书和CA

  1. TLS证书:用于验证服务器的身份,数字签名的公钥
  2. CA:证书认证机构,颁发TLS证书,CA验证服务器的身份,并对服务器的公钥进行数字签名
  3. CA是通信双方都相信的权威机构,使用安全手段验证网站为其身份和安全性背书。网站在做密钥交换时,发出自己的证书,以此证明自己是真的官方网站

C/S架构:客户端/服务器架构

  1. 任何一台计算机都可以作为服务器
  2. 发起请求的机器称为客户端,接收请求的机器称为服务器
  3. 服务器无法主动发起连接,只能等待客户端的连接请求
  4. 服务器可以同时处理多个客户端的连接
  5. 客户端在本地选取一个空闲的高端口作为自己的连接端口,连接到服务器的指定端口(例如client:49152 -> server:80)
  6. DDos攻击:分布式拒绝服务攻击,通过大量的请求占用服务器资源,导致服务器无法响应正常请求

HTML JavaScript CSS:网页的三大件

  1. HTML:标记语言,用于定义网页的结构和内容
  2. CSS:样式语言,用于定义网页的外观和布局
  3. JavaScript:脚本语言,用于实现网页的动态效果
  4. WebAssembly:可能是JavaScript的未来,用于在浏览器上运行高性能的应用,且能跨平台能与JS交互