HTTP

sx-xiaoL / 2023-07-15 / 原文

HTTP

4.1什么是HTTP

HTTP(超文本传输协议)是一种简单的请求-响应协议,它通常运行在TCP之上。

  • 文本:html,字符串

  • 超文本:图片,音乐,视频,定位,地图

  • 默认端口号80

HTTPS:s:安全的 默认端口号443

4.2两个时代

  • http1.0

    • HTTP/1.0客户端可以与web服务器连接后,只能获得一个web资源,断开连接

  • http2.0

    • HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。

4.3HTTP请求

  • 客户端--发送请求(request)--服务器

百度:

Cache-Control:private 缓存控制
Connection:keep-Alive  连接:保持活跃
Content-Encoding:gzip  编码
Content-Type:text/html 类型
Date:Sat,07 Sep 2018 07:02:15 GMT 类型
Expirse:Sat,07 Sep 2018 07:02:15 GMT 类型
Server:BWS/1.1 浏览器服务信息

请求行

  • 请求行中的请求方式:GET

  • 请求方式:Get,Post,HEAD,DELETE,PUT,TRACT

    • Get:请求携带的参数较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效。

    • post:请求携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。

消息头

Accept:告诉浏览器它所支持的数据类型
Accept-Encoding:支持那种编码格式 GBK utf-8 GB2312 IS08859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机...

4.4HTTP响应

  • 客户端--响应--服务器

百度:

1 Cache-Control:private 缓存控制
2 Connection:keep-Alive  连接:保持活跃
3 Content-Encoding:gzip  编码
4 Content-Type:text/html 类型
5 Date:Sat,07 Sep 2018 07:02:15 GMT 类型
6 Expirse:Sat,07 Sep 2018 07:02:15 GMT 类型
7 Server:BWS/1.1 浏览器服务信息

响应体

Accept:告诉浏览器它所支持的数据类型
Accept-Encoding:支持那种编码格式 GBK utf-8 GB2312 IS08859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机...
Refrush:告诉客户端,多久刷新一次
Location:让网页重新定位

响应状态码(重点)

200:请求响应成功

3xx:请求重定向

  • 重定向:你重新到我给你的新位置去。

404:找不到资源

  • 资源不存在

5xx:服务器代码错误 500

  • 502网关错误

常见面试题:当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?

当你在浏览器的地址栏中输入地址并按下回车键后,以下是一般情况下会经历的一些步骤:

1. 解析URL:浏览器会解析输入的URL,将其分解成协议(如HTTP或HTTPS)、主机名和路径等组成部分。

2. DNS解析:浏览器将主机名(例如www.example.com)发送到DNS(Domain Name System)服务器,以获取对应的IP地址。DNS服务器的作用是将主机名转换成IP地址。如果DNS服务器有相关记录并返回IP地址,浏览器将继续向该IP地址发送请求。如果没有相关记录,浏览器还可能向其他DNS服务器发送请求,直到找到IP地址为止。

3. 发起网络连接:浏览器使用解析得到的IP地址,通过互联网向目标服务器发起网络连接。这个过程涉及到经过多个网络节点的路由,以找到合适的路径到达目标服务器。

4. 建立TCP连接:浏览器和服务器之间使用TCP/IP协议进行通信。在建立TCP连接的过程中,经历了三次握手的步骤,以确保双方都能正常通信。

5. 发送HTTP请求:一旦TCP连接建立成功,浏览器将发送一个HTTP请求给服务器。这个请求包含了诸如请求的类型(GET、POST等)、请求头(例如浏览器类型、所需要的数据等)和请求体(在POST请求中包含提交的数据)等信息。

6. 服务器处理请求:服务器收到浏览器发送的请求后,会根据请求的类型和路径等信息进行处理。服务器可能会执行相应的逻辑,从数据库中获取数据,生成动态页面等操作。

7. 返回HTTP响应:服务器处理完请求后,会生成一个HTTP响应,其中包含了响应头(例如状态码、内容类型等)和响应体(实际返回的数据)。服务器将这个响应发送回浏览器。

8. 浏览器渲染页面:浏览器接收到HTTP响应后,会解析响应头和响应体。如果是一个HTML页面,浏览器会根据HTML标记语言的规范解析页面结构,并开始加载和渲染页面中的各个元素(如文本、图像、样式表等)。浏览器还会执行页面中的JavaScript代码,以实现动态交互和功能。

9. 页面展示完成:在加载和渲染完成后,浏览器会将解析的页面内容显示在用户的屏幕上,用户可以看到完整的页面并进行交互操作。

整个过程发生的时间是非常短暂的,通常只需几毫秒至几秒钟,具体时间取决于网络延迟、服务器响应速度和页面内容的复杂程度等因素。