HTTP基本原理

概念

超文本

超文本(hypertext)是一种含有特殊标记的文本文件,比如表示网页的HTML源代码、表示图片的二进制数据。

URI、URL和URN

  • URI即统一资源标志符(Uniform Resource Identifier),用于标识某一互联网资源名称的字符串1
  • URL即统一资源定位系统(Uniform Resource Locator),用于指定信息位置的表示方法2
  • URN——已过时3

URL和URN组成URI,URL和URN是并集,关系图4
HTTP基本原理_第1张图片

URL格式

示例:https://www.baidu.com/s?wd=HTTP

标准格式:

[协议类型]://[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]

完整格式:

[协议类型]://[访问资源需要的凭证信息]@[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]

协议类型

URL协议类型最常见的有http或https,其它诸如ftp、sftp、smb等协议。

  • HTTP既超文本传输协议(Hyper Text Transfer Protocol),用于从网络传输超文本数据到本地浏览器的传送协议。
    • HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
    • HTTP的端口号为80。
  • HTTPS是以安全为目标的HTTP通道。
    • HTTPS在HTTP的基础下加入SSL,提供了身份验证与加密通讯方法。
    • HTTPS的端口号为443。

HTTP请求过程

简单来说,请求过程就是客户端向服务器进行request请求,服务器收到后进行处理然后response响应数据给浏览器,就完成了一次请求:
HTTP基本原理_第2张图片

详细过程

详细过程能为工作中解决一些问题提供参考,面试时回答简单过程即可。详细过程不需要死记硬背,把它当成API类的存在即可。

当单击某个超链接或者输入访问地址访问时,HTTP的工作开始:

  1. 触发。如用户点击某个超链接,软件启动时发送的请求,用户在地址栏访问网址等等。
  2. 解析。浏览器解析URL,得到协议类型、域名或服务器地址、资源地址。
  3. DNS查询。浏览器依次检查缓存与Hosts文件,如果没有,则向DNS服务器请求目标服务器的IP地址。
  4. 握手。浏览器向服务器发起TCP的连接请求,TCP经过3次握手以后建立连接。
  5. 请求。建立连接后,浏览器发送一个HTTP请求给服务器。
  6. 响应。服务器处理完后响应HTTP,返回数据给html。
    HTTP基本原理_第3张图片

请求Request

请求行

请求行由请求方法、请求地址URL和HTTP协议版本组成,用空格分割。

  • 请求地址就是URL。
  • 协议版本的格式为:HTTP/主版本号.次版本号。常用的有HTTP/1.0和HTTP/1.1。

请求方法

方法 描述 备注
GET 请求指定的页面信息,并返回实体主体。 常见
POST 向指定资源提交数据进行处理请求。数据被包含在请求体中(例如提交表单或者上传文件) 常见
PUT 从客户端向服务器传送的数据取代指定的文档的内容。 一般
DELETE 请求服务器删除指定的页面。 一般
HEAD 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头 罕见
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 罕见
OPTIONS 允许客户端查看服务器的性能。 罕见
TRACE 回显服务器收到的请求,主要用于测试或诊断。 罕见
PATCH 是对PUT方法的补充,用来对已知资源进行局部更新 。 罕见

请求头

名称 描述 示例
Accept 指定客户端可接受哪些类型的信息。 application/json,*/*
Accept-Language 指定客户端可接受的语言类型。 zh-CN
Accept-Encoding 指定客户端可接受的内容编码。 gzip, deflate, br
Host 用于指定请求资源的主机IP和端口号
Cookie 网站为了辨别用户进行会话跟踪而存储在用户本地的数据。
Referer 用来标识这个请求是从哪个页面发过来的。如作来源统计、防盗链处理等
User-Agent 使服务器识别客户使用的操作系统及版本、浏览器及版本等信息 Mozilla/5.0…
Content-Type 联网媒体类型(Internet Media Type)或者MIME类型 text/plain;charset=UTF-8

表格来源5

请求体

请求体是POST请求中的表单数据,而对于GET请求,请求体则为空。

Content-Type 提交数据的方式
application/x-www-form-urlencoded 表单数据
multipart/form-data 表单文件上传
application/json 序列化JSON数据
text/xml XML数据

响应Response

可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。

响应状态码

如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。

响应头

名称 描述 示例
Date 响应产生的时间。 Mon, 08 Mar 2021 11:11:05 GMT
Last-Modified 指定资源的最后修改时间。 Mon, 08 Mar 2021 09:51:35 GMT
Content-Encoding 指定响应内容的编码。 gzip
Server 包含服务器的信息,比如名称、版本号等。 openresty
Content-Type 文档类型,指定返回的数据类型是什么 text/html,application/x-javascript
Set-Cookie 设置Cookies
Expires 指定响应的过期时间

响应体

请求网页时,响应体是HTML网页。
请求接口时,响应体可能是Json数据。

Q&A

常规问题:

  1. 请简述HTTP原理
  2. 常见的协议类型有哪些
  3. 请简述HTTP和HTTPS,并说明它们的区别
  4. 常见的请求方法有哪些

细节了解:

  1. 请求,也就是Request大概有些什么数据
  2. 响应,也就是Response大概有些什么数据
  3. 在你的记忆中请求头有哪些东西
  4. 请简述请求体是什么
  5. 在你的记忆中响应头有哪些东西
  6. 请简述响应体是什么

请简述HTTP原理

HTTP就是客户端向服务器发送请求,服务器向客户端发送响应数据的一个过程。它包含了请求Request和响应Respouse,请求Request包含了请求头和请求体;请求头比较常用的属性是User-AgentContent-Type,请求体是POST请求中的表单数据,而对于GET请求,请求体则为空。响应Respouse也包含了响应头和响应体,比较常见的是Content-TypeSet-Cookie

请简述HTTP和HTTPS,并说明它们的区别

HTTP既是超文本传输协议,用于从网络传输超文本数据到本地浏览器的协议。HTTPS是以安全为目标的HTTP通道,在其基础上加入了证书机制进行加密。区别在于,一个有证书加密一个没有证书,在安全上具有差异;端口上1也不同,HTTP是80端口,HTTP是443端口。

思维导图

HTTP基本原理_第4张图片
导图链接

参考

  • HTTP基本原理
  • 深入理解HTTP协议、HTTP协议原理分析
  • 一次完整的http请求过程是怎样的?
  • HTTP请求的完全过程

  1. URI ↩︎

  2. 统一资源定位系统 ↩︎

  3. 这一术语的使用已被限制更少的“URI”取代。WIKI ↩︎

  4. 统一资源标志符 ↩︎

  5. HTTP 请求方法 ↩︎

你可能感兴趣的:(寻根问底,http)