HTTP基本原理

概念

超文本

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

URI、URL和URN

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

URL和URN组成URI,URL和URN是并集,关系图4
在这里插入图片描述

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响应数据给浏览器,就完成了一次请求:
在这里插入图片描述

详细过程

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

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

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

请求Request

请求行

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

  • 请求地址就是URL。
  • 协议版本的格式为:HTTP/主版本号.次版本号。常用的有HTTP/1.0和HTTP/1.1。
请求方法
方法描述备注
GET请求指定的页面信息,并返回实体主体。常见
POST向指定资源提交数据进行处理请求。数据被包含在请求体中(例如提交表单或者上传文件)常见
PUT从客户端向服务器传送的数据取代指定的文档的内容。一般
DELETE请求服务器删除指定的页面。一般
HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头罕见
CONNECTHTTP/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/xmlXML数据

响应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端口。

思维导图

在这里插入图片描述
导图链接

参考


  1. URI ↩︎

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

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

  4. 统一资源标志符 ↩︎

  5. HTTP 请求方法 ↩︎

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值