计算机网络
-
应用层,负责给应用程序提供统一的接口;报文
-
表示层,负责把数据转换成兼容另一个系统能识别的格式;
-
会话层,负责建立、管理和终止表示层实体之间的通信会话;
-
传输层,负责端到端的传输;报文段(TCP)、用户数据报(UDP)
-
网络层,负责路由、转发、分片;分组、数据段、包、IP数据报(IP协议)
-
数据链路层,负责透明传输,封帧成帧,差错检测, MAC 寻址;帧
-
物理层,负责屏蔽硬件和传输媒体的差异;bit
四层模型数据分析
MAC层最大传输1518字节,其中MAC帧头18字节,那么IP数据包最大1500字节。
网络层MTU1500字节,其中IP数据包头部20字节,那么TCP报文段1480
传输层1480字节,其中TCP头部最小20(<=60),MSS最大1460。
为什么有了MTU还要MSS
IP 层就要进行分片,每一个分片都小于 MTU。目标主机的 IP 层来进行重新组装后,再交给上一层 TCP 传输层。
如果一个 IP 分片丢失,整个 IP 报文的所有分片都得重传。
因为 IP 层本身没有超时重传机制,它由传输层的 TCP 来负责超时和重传。
发送方的 TCP 在超时后,就会重发「整个 TCP 报文(头部 + 数据)」。
所以,为了达到最佳的传输效能 TCP 协议在建立连接的时候通常要协商双方的 MSS 值,进行重发时也是以 MSS 为单位
put,patch,get,post
PATCH不是幂等的,是对PUT方法的补充,“局部更新”
put是幂等的,存在就替换,没有就新增
get是幂等的,请求数据
post不是幂等的,新增数据,重复进行结果不一样(自增id)
get:
-
参数在url里,只能url编码,ASCll字符,长度有限
-
有缓存,有历史记录,可书签,幂等的,回退无害,一个数据包
扩展:http明文传输,本质上看get和post都不安全;
GET 请求可以带 body ,POST 请求的 URL 也可以有参数,但是不规范。
HTTP 是明文传输
-
窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
-
篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
-
冒充风险,比如冒充淘宝网站,用户钱容易没。
HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS
协议
-
信息加密:混合加密,建立通信前非对称加密(安全交换密钥),建立通信后对称加密(快)
-
校验机制:摘要算法(哈希函数)的方式来实现完整性
-
身份证书:将服务器公钥放入到数字证书中
https的SSL连接过程
http1.1优点
-
长连接
-
管道传输(解决了请求的队头阻塞(HTTP 层))
http1.2优点(http1.1缺点)
-
服务器推送
-
多路复用
-
二进制传输
-
数据流
-
头部压缩
http1.3优点
基于 UDP 的 QUIC 协议(解决响应的队头阻塞(TCP层))
没有用四元组的方式来“绑定”连接,而是用连接 ID来标记通信的两个端点( 4G 切换到 WIFI , IP 地址变化但不用重连)