计算机网络
June 1, 2022
三次握手 #
- client 发送 syn(Synchronize Sequence Number)到 server,表示想要建立 tcp 连接
- Server 发送(syn+ ack)
- client 发送 ack 给 server,连接建立
四次挥手 #
- client 发送 FIN
- server 接收到 FIN,发送 ack
- server 发送 FIN
- client 发送 ack
网络分层 #
TCP/IP 模型 #
- 应用层
- 传输层
- 网络层
- 链路层
OSI 模型 #
- 应用层
- 展示层
- 会话层
- 传输层
- 网络层
- 链接层
- 物理层
HTTP 1.1 #
缺点:
队首阻塞、浏览器并发请求数限制
即使是为了请求一个非常少的数据,也可能需要完整经历:建立 TCP 连接 => 发送 HTTP 请求 => 服务端处理 => 返回响应数据整个过程
状态码 #
-
301
Moved Permanently
代表资源的永久重定向
-
302
Found
代表资源的临时重定向
-
304
Not Modified
请求方法 #
-
Post
新建资源
-
Put
更新资源
HTTP 2.0 #
-
二进制传输
HTTP/1.1使用文本格式传输数据,而HTTP/2.0采用二进制格式,更加高效
二进制分帧
-
TCP 多路复用
可以在同一个TCP连接中处理多个请求和响应,减少连接数量,提高性能
HTTP/1.1中,每个请求都需要建立一个TCP连接
-
服务端推送
可以主动向客户端推送资源,提高性能和用户体验
-
头部压缩
HTTP/1.1中每个请求和响应都会携带大量的首部信息,HTTP/2.0采用首部压缩技术,减少了数据传输的大小,提高了效率
-
优先级
HTTP/2.0支持请求优先级,可以对不同的请求进行优先级排序,从而优化资源的分配和调度
HTTPS #
TLS 握手过程:
-
Client hello,发过去 TLS 版本,cipher suites, 随机数,加密方法
-
Server Ack
-
Server hello,返回随机数,跟 Client 一样支持的 TLS 版本号,cipher suites,加密方法
-
Server 返回证书,server 的公钥
-
Server hello 结束
-
Client Ack
-
Client 校验 server 的证书,生成 pre-master sercret,并发给服务端
-
Server 用私钥获取 pre-master secret
-
Server 利用 pre-master secret 和 随机数 计算 master secret,
-
Client 跟服务端一样计算 master secret
后续所有的消息通信都是用 master sercret 进行加密
浏览器网络请求 #
fetch #
选项参数
-
mode
cors:
no-cors: only allows a limited set of headers in the request
Accept Accept-Language Content-Language Content-Type with a value of application/x-www-form-urlencoded, multipart/form-data, or text/plain