计算机网络

计算机网络

June 1, 2022
network

三次握手 #

  1. client 发送 syn(Synchronize Sequence Number)到 server,表示想要建立 tcp 连接
  2. Server 发送(syn+ ack)
  3. client 发送 ack 给 server,连接建立

四次挥手 #

  1. client 发送 FIN
  2. server 接收到 FIN,发送 ack
  3. server 发送 FIN
  4. client 发送 ack

网络分层 #

TCP/IP 模型 #

  1. 应用层
  2. 传输层
  3. 网络层
  4. 链路层

OSI 模型 #

  1. 应用层
  2. 展示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 链接层
  7. 物理层

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

XMLHttpRequest #