计算机网络概论
前言
- 计算机网络整体认识
- 网络协议分层认识
- http1,2,3
- cdn运行基本原理
- 网络安全的最基本原则 分析方法:自底向上,自顶向下
计算机网络基础
蟹堡王帝国
家庭路由器,服务器,isp路由器,企业路由器
网络基础
- 主机:提供/接收信息
- 路由器:转发信息
- 网络协议:提供统一格式
网络结构(网络的网络):区域网络(一个本地网络)、城域网(多个本地网络)、广域网(多个城域网)
电路交换&分组交换 丢包:队列满的时候丢弃清空
网络分层(职责):物理层-链路层-网络层(创建)-传输层(传输)-应用层(执行)
HTTP协议——语言:标头和载荷
- 链路层-本地帧头部;IP协议头部;
- 运输层-TCP协议头部
- 应用层-HTTP协议头部
⬆没看懂
小结
- 网络组成部分
- 网络结构
- 信息交换方式
- 网络分层
- 网络协议
web中的网络
HTTP协议组成部分
HTTP协议:请求+协议
请求:起始行GET / HTTP/1.1:请求方法,资源路径,http版本
头部名称: ...(头部值)
响应:状态行HTTP/1.1 200 OK:HTTP版本,状态码,状态信息
头部名称: ...(头部值)
HTTP连接模型:服务器-TCP-HTTP
HTTP报文格式
优点:ascii形式展示,便于人类理解
问题:请求-响应模型:网络利用率不高,无法在一条连接上多路复用;请求头部和响应头部重复,重复发送无法压缩(cookie)
HTTP连接模型演变:短链接-涡轮式(帧)-管线——都无法解决队头堵塞
常用解决方法:建立多个HTTP连接,将请求建立在多个连接。建立连接成本巨大;请求数量超过连接数量时仍然需要排队。
HTTP1.1:无法多路复用
HTTP2:帧
- 1-3字节:载荷长度
- 4:类型
- 5:flags
- 6-9:第一位保留位,2-32位流ID
- 随后的字节都是载荷
好处:调整相应传输的优先级,头部压缩,server push
缺点:在TCP上队头堵塞(TCP丢包重传的特性)
解决方法:TCP连接需要一个RTT,TLS两个RTT。(延迟高)
HTTP3:QUIC
Quick UDP Internet Connection
优点:避免TCP队头堵塞,并将TLS作为自身的一部分,实现第一次只需要1RTT,第二次及以后不需要RTT
外部影响因素
- 无法突破物理极限
- 流量成本
- 服务器承载的网络容量是有限的
->解决方法:CDN(缓存分部服务器)DNS(域名解析系统)劫持
域名解析一般由网站自己代理,需要加速的域名交由CDN厂商进行IP处理,最终域名并不是在本地CDN,而是显示CDN厂商。
WebSocket(在HTTP协议基础上升级得到)
- 有状态的持久连接
- 服务端可以主动推送消息
- 延迟比HTTP低
与HTTP协议关系:在头部多出一个Upgrade: websocket\r\n
例子
小结
- HTTP 1 2 3
- CDN和DNS挟持
- WebSocket
网络安全
三要素:机密性、完整性、身份验证
秘密信息:加密算法和密钥
机密性
加密方式
对称加密和非对称加密:加密和解密使用的密钥是一个还是一对
密码散列函数(哈希函数)
找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上不可能的
完整性和身份验证
完整性和身份验证相互关联。
如何实现
明文通信交换-秘密消息❌
秘密信息-明文通信交换√ + 数字签名(PKI)
HTTPS
HTTPS=HTTP+TLS
TLS=身份验证(服务端PKI,客户端HTTP协议)+加解密
小结
- 网络安全三要素
- 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
- PKI保证普通用户不需要面对面和根证书机构交换根证书
- HTTPS使用PKI完成除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现
没懂的点
- CDN和服务器?
- 链路层、运输层、应用层头部相关
- HTTP协议传输信息是否按照服务器-TCP-HTTP顺序进行?
- HTTP1短链接没有听懂
- HTTP2的好处没看懂
- RTT类似于钥匙,但是RTT是需要人工构建的吗?怎么构建?
- CDN:DNS劫持的理解是否正确?
- websocket的代码语法和解读