【前端基础】HTTP协议

最近面试潮有些消退了,趁着余热赶一波浪,记录一下面试相关的问题伴着搜集的资料,,知识嘛、多学无意(疑)^_^

我喜欢两个屏,一边写博客一边查资料

第一波:HTTP协议Hyper Text Transfer Protocol(超文本传输协议)应用层的协议
从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议
TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
特点:简单快速、灵活、无连接、无状态

URI:uniform resource identifier:统一资源标识符,标识一个资源
      由访问资源的命名机制、存放资源的主机名、资源名称(由路径表示,强调于资源)组成

URL:Uniform Resource Identifiers统一资源定位器
由协议、主机ip地址(端口号)、主机资源的具体地址(目录、文件名)组成
标识一个资源指明如何加载此资源,标识某一处资源的地址:传输数据、建立连接

https://blog.csdn.net/qq_31382921/article/details/52678183
https://blog.csdn.net/ma15732625261/article/details/79821160
HTTPS协议
blog.csdn.net域名,端口号不是必须,HTTP默认的端口号为80,HTTPS的端口号为443
qq_31**21 虚拟目录:域名后第一个/ 到最后一个/ 不是必须
文件名:最后一个/ 到? ,没有? 则到# 
锚:从?到# 参数、搜索查询用

URN:uniform resource name 统一资源命名,通名字来标识资源

Request请求:

      格式:请求行request line 头部header、空行和请求数据、如下
请求Request

  • 请求行:请求类型 要访问的资源 所使用的HTTP版本
  • 请求头部:用来说明服务器要使用的附加信息

方法:

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

方法 描述
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,可获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)
数据被包含在请求体中;
不知道资源标识符URI时使用POST创建资源;
造成新资源的建立、旧资源的修改;通常是非缓存的请求
状态不统一的方法,在POST请求中做任何处理都是“安全”的
PUT 从客户端向服务器传送的数据取代指定的文档的内容;
当允许客户端指定新建资源的资源标识符URI时要使用PUT
PUT是幂等的,你必须要发送所有可能的值保证幂等性;
(要使用PUT请求,你必须发送所有可访问属性/值,而不仅仅是你想要改变的那些)
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户
OPTIONS 允许客户端查看服务器的性能
服务器针对特定资源所支持的HTTP请求方法
TRACE 回显服务器收到的请求,主要用于测试或诊断。

GET和POST的区别网上有很多资料,简单来书post更安全,传输的数据量较大

状态统一性:

对于执行多次相同的http请求,处理服务端的资源的状态是相同的,GET/HEAD/PUT/DELETE都具有这种特性,POST没有

相应Response

Response
源菜鸟教程

状态行:由HTTP协议版本号, 状态码, 状态消息 三部分组成
    (HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
消息报头:说明客户端需要使用的一些附加信息,上面是服务器端
    Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
空行,消息报头后面的空行是必须的
响应正文,服务器返回给客户端的文本信息

状态码

菜鸟教程:三位数字

  • 1xx:指示信息–表示请求已接收,继续处理
  • 2xx:成功–表示请求已被成功接收、理解、接受
  • 3xx:重定向–要完成请求必须进行更进一步的操作
  • 4xx:客户端错误–请求有语法错误或请求无法实现
  • 5xx:服务器端错误–服务器未能实现合法的请求

HTTP工作原理:

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端;

步骤:

客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。

服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

                                                                                        ——请求/响应模型

有没有发现HTTP/1.1报头字段重复、冗长:易造成TCP连接时延迟

改进:

     2.0在同一连接上交错建立请求和相应消息,使用高效率编码的HTTP报头字段,容许请求的优先级,使得更多的请求快速的完成、提高性能、而且相对减少了TCP连接:与其他流更少的竞争更长时间的连接、更有效利用网络容量;

HTTP2.0

听说HTTP2.0都出来了,百度一查好多资料,要学的东西真是超级多
简单的说一下HTTP2.0,赶下后潮

  • 多路复用、HEAD压缩、服务器推送、优先级请求

概述:

1、基本的协议单位是帧,每个帧有不同的类型和用途
        报头HEADERS和数据DATA帧组成HTTP请求和响应

2、请求多路复用在一个流(相互独立)上分配多个HTTP请求响应交换

3、流量控制和优先级能确保正确使用复用流,流量控制助于确保只传播接受者使用的数据数据

4、新的交互模式,服务器能推送消息给客户端:服务器预测客户端需要

5、帧包含的HTTP报头字段是压缩的

文档结构

四部分:
启动HTTP/2:连接如何初始化
     由客户端发起的运行在TCP连接上的应用层协议
帧、流层:描述HTTP/2流的结构及如何形成复用流的
帧、错误码:定义HTTP/2中使用的流和错误类型的详细内容
HTTP寻址、拓展需求:HTTP语义化是如何由帧和流表达的

详见 HTTP 2.0 中文版

小结:
这是上周日的笔记2018年4月19日08:34:58
那天下午考试,考完试有种解放了的感觉,开心(^▽^)

感谢下列的分享:

幂等:百科
HTTP协议详解
菜鸟教程HTTP协议
pseudo:HTTP协议中使用put和post使用区别
关于HTTP协议,一篇就够了
HTTP代理协议 HTTP/1.1的CONNECT方法
感谢分享,尊重原著、从给出链接做起

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/79944276