HTTP 复习

155 阅读3分钟

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战」。

http 协议

http(HyperText Transfer Protocol):

超文本传输协议:在客户端和服务器端不仅可以进行文本传输,还可以传递图片,音视频;是浏览器和服务器端之间约定好了的一种规范;双方按照规范传递和接受数据;

https: 加密的传输协议;更安全,在协议中增加了秘钥,不容易被拦截和篡改,大多数对安全有要求的都会使用 https

http: 就像运行在客户端和服务端的快递小哥,可以把客户端的信息传递给服务器(请求: request),然后把服务器整理好的数据通过 http 协议发送给服务端(响应response)

前后端交互模型

在浏览器中输入一个 url, 到用户看到页面都经历了什么?

  • http 请求阶段
    • 浏览器得到了地址栏中的地址,发送给DNS 服务器
    • DNS 服务器进行域名解析,找到域名对应的IP地址
    • 把客户端的请求发送给上一步查出来的服务器地址
  • http 响应阶段
    • 服务器接收到请求之后,根据请求的信息,进行资源的整理,并且吧响应的资源通过http返回给客户端(数据或者html,js,css)
    • 根据资源的类型不同,浏览器会进行不同的操作,如html和css进行资源解析渲染,js进行解析并执行
  • 浏览器的渲染阶段
    • 解析html文件形成DOM树根据节点间关系组织树的节点关系;
    • 解析css形成css树
    • 把DOM树和css树形成render树
    • 接下来交给显卡,绘制成页面展示

http 的三次握手与四次挥手

http 协议建立和断开连接时并不是一次完成的,连接时是通过三次握手,断开时要经历四次挥手;

三次握手
  1. 客户端发送syn码数据包给服务器,客户端要求与服务器建立连接
  2. 服务端接受连接请求后,会发送ack码数据到客户端,表示你的请求我已收到,再次询问客户端是否确认建立连接
  3. 客户端收到服务端传回的ack码以后,校验是否正确,如果正确则再次将ack码发送给服务端,表示确认连接
  4. 三次握手如果成功,客户端和服务器成功建立连接,然后开始传递数据
四次挥手
  1. 当客户端发送数据结束后,会发送fin告知服务器,客户端要给服务器的数据传输完毕了
  2. 服务端返回给客户端一个 ack码,告知客户端已经知道数据传递完成,客户端收到ack后,就会把发送到服务器的数据通道关闭
  3. 服务端数据传输结束后,也会发fin给客户端
  4. 当客户端收到f服务器传回的fin后,会把ack码传回给服务端,表示客户端已经知道服务端的数据传输完毕,服务器收到客户端传回的ack码之后就会放心的把对客户端的数据传输通道关闭

uri\urn\url

  • uri: 统一资源标识符
  • urn: 统一资源名称
  • url: 统一资源定位符

一个url的例子

https://www.dahai.com:443/tech/ai.html?user=mabin&time=1e8239473784#top

url各个部分的意义:
  • http\https : 协议
  • www.baidu.com : 域名
  • :443 : 端口号,(http协议默认80,https默认443)
  • /tech/ai.html : 路径
  • ?user=mabin&time=2323456 : 参数(可以有可以没有,放在?后面的都是告知服务器的数据)
  • #top锚点 : (哈希)