一.什么是http协议
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网WWW(World Wide Web)的数据通信的基础。
超文本:图片,音乐,视频,定位,地图。
http端口号:80
https:443
二.http的三个时代
与之前依赖于成熟的TCP的版本不同,HTTP3.0使用QUIC,一种基于UDP的多路传输协议。
三.http请求
1.请求行
请求行:HTTP请求的起始行称为请求行,它由方法、路径和HTTP版本组成,形如
GET /index.html HTTP/1.1
。请求行是HTTP请求的关键部分,它定义了请求的类型(如GET、POST等)、请求的资源路径以及使用的HTTP协议版本。提供了请求的基本信息和类型。
请求行中的请求方式:GET,POST,HEAD,DELETE,PUT,TRACT....
get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示暑假内容,不安全,但高效。
post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全但不高效。
请求行中的内容如下:
2.消息头
消息头:消息头由多个键值对组成,使用CRLF作为分隔符,包含了关于请求或响应的一些附加信息。消息头可以包含多种信息,如Content-Type、Content-Length等,这些信息对于服务器处理请求或客户端解析响应至关重要。提供了更多的细节和附加信息。
消息头包含的部分内容:
四.http响应
http响应通常由状态行,响应头,响应体三部分组成。
状态行:包括HTTP版本号、状态码和状态消息。
响应头:包含多个响应头字段
响应体:包含服务器返回的数据,可能是纯数据或HTML页面,具体取决于请求的内容和服务器配置。
响应头内容如下:
状态码:
思考题:
当你在浏览器中输入地址并回车,页面展示回来,这过程中发生了什么?
当你在浏览器中输入地址并回车,直到页面展示回来,这一系列过程可以大致分为以下几个步骤:
DNS域名解析:浏览器首先将输入的域名解析为对应的服务器IP地址。这一过程包括检查本地hosts文件,如果没有找到对应的映射,则向DNS服务器发送请求以获取IP地址。DNS服务器通过递归查询和迭代查询的方式最终确定IP地址,这个过程涉及多个DNS服务器之间的交互。
建立TCP连接:一旦获取到服务器的IP地址,浏览器会尝试与服务器建立一个TCP连接。这个过程包括三次握手,即客户端发送一个带有SYN标志的数据包给服务器,服务器回应一个带有SYN/ACK标志的数据包,最后客户端再回应一个带ACK标志的数据包,表示连接成功。
发送HTTP请求:TCP连接建立后,浏览器向服务器发送HTTP请求,请求所需网页内容。这个请求包含了请求的资源路径、请求方法等信息。
服务器响应HTTP请求:服务器接收到请求后,返回一个HTTP响应报文,其中包含了请求的资源内容、响应状态码等信息。
浏览器解析HTML代码并请求资源:浏览器接收到HTML代码后,会解析这些代码,并根据HTML中的链接请求其他的资源,如CSS、JavaScript文件或图片等3。
浏览器渲染页面:浏览器对页面进行渲染,将解析后的HTML代码和请求的资源整合,最终呈现给用户。
这个过程涉及多个网络协议和技术的交互,包括DNS解析、TCP连接建立、HTTP请求与响应、以及浏览器的渲染过程,共同协作以提供用户所需的网页内容。