HTTP的基本内容

  1. 什么是HTTP协议?
    http协议即超文本传输协议,是一个客户端和服务器端请求和应答的标准,通过使用网络浏览器、网络爬虫或者其他工具,客户端发送一个http请求到服务器指定的端口上(一般默认为80端口),我们称这个客户端为用户代理程序。应答的服务器上存储着一些资源,比如html和一些图片,我们称这个应答服务器为源服务器。在用户代理和源服务器之间可能存在多个中间层,比如代理服务器、网关或者隧道。
    通常,由http客户端发送一个请求,创建一个服务器指定端口的tcp连接,http服务器则在那个端口监听客户端的请求,一旦收到请求,服务器会向客户端返回一个状态,比如“HTTP/1.1 200 OK”,以及返回的内容,比如请求的文件、错误信息或者其它信息。

  2. http协议的主要特点?
    (1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    (2)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    (3)无连接:每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答之后,即断开连接。采用这种方式可以节省传输时间。
    (4)无状态:http协议是无状态协议,服务器端是不能区分两次连接者的身份,因为是无状态的,第一次连接任务完成,第二次再连接,服务端是没有记住状态,所以不能认定是同一个连接。一般网站都知道访问者,是服务端加了一些session手段做到的,不是http协议做到的。

  3. http报文的组成部分?
    (1)请求报文
    请求行:http方法,页面地址,http协议以及版本
    请求头:key:value 告诉服务端我要哪些内容
    空行:告诉服务器不再是请求头部分了
    请求体
    在这里插入图片描述
    (2)响应报文
    状态行:http协议版本,状态码
    响应头:key:value
    空行:告诉服务器不再是响应头部分了
    响应体
    在这里插入图片描述

  4. http方法
    (1)GET:获取资源
    (2)POST:传输资源
    (3)HEAD:获取报文首部,向服务器发出指定资源的请求,但是服务器不传回资源的本文部分。使用这个方法可在不必传输全部内容的情况下,就可以获取其中请求资源的内容。
    (4)PUT:更新资源
    (5)DELETE:删除资源

  5. POST和GET的区别?
    (1) GET在浏览器回退时是无害的,而POST会再次提交请求
    (2)GET请求会被浏览器主动缓存,而POST不会,除非手动设置
    (3)GET请求参数会完整的保留在浏览器历史记录里,而POST的参数不会被保留
    (4)GET请求在URL中传送的参数是有长度限制的,而POST没有限制
    (5)GET参数通过URL传递,POST放在Request body中
    (6)GET产生的URL地址可以被收藏,而POST不可以
    (7)GET请求只能进行url编码,而POST支持多种编码方式。
    (8)对参数的数据类型,GET只接受ASCII字符,而POST没有限制

  6. http的状态码?
    (1)1xx:指示信息----表示请求已接收,继续处理
    (2)2xx:成功—表示请求已成功被接收
    (3)3xx:重定向—要完成请求必须进行更进一步的操作
    (4)4xx—客户端错误–请求有语法错误或请求无法实现
    (5)5xx:服务器错误–服务器未能实现合法的请求
    常见的状态码?
    200 OK:客户端请求成功
    206 Partial Content:客户发送一个带有Range头的GET请求,服务器完成了它(一般是video标签或者音频标签包裹的时候,视频音频过大会返回206)
    301 Moved Permanently:所请求的页面已经转移至新的URL
    302 Found:所请求的页面已经临时转移至新的url
    304 Not Modified:客户端有缓冲的文档并发出一个条件性的请求,服务器告诉客户,原来的缓冲的文档还可以继续使用
    400 Bad Request :客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized:请求未经授权,这个状态码必须和www-Authenticate报头域一起使用
    403 Forbidden:对被请求页面的访问禁止
    404 Not Found :请求资源不存在
    500 Internal Server Error: 服务器发生不可预期的错误,原来缓冲的文档还可以继续使用
    503 Server Unavailable:请求未完成,服务器临时过载或当机,一段时间后可能恢复正常。

  7. 什么是持久连接
    http协议采用请求-应答模式,当使用普通模式,即非keep-alive 模式时,每个请求/应答客户和服务器都要重新建立一个连接,完成之后立即断开连接(http协议为无连接协议)
    当使用keep-alive 模式(持久连接或连接重用)时,keep-alive 的功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,keep-alive 避免了建立或重新建立连接,但是持久连接只有在http 1.1 版本才支持。

  8. 什么是管线化?
    在持久连接下,一次性将请求发送给服务器,相应一次性打包回来,就不会是请求一次响应一次这种。
    (1)管线化机制通过持久连接完成,仅HTTP/1.1支持此技术
    (2)只有GET和HEAD 请求可以进行管线化,而POST则有所限制
    (3)初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议
    (4)管线化不会影响响应到来的顺序,如上的例子所示,响应返回的顺序是未改变的
    (5)HTTP/1.1 要求服务器端支持管线化,但并不要求服务器端也对响应进行管线化管理,只是要求对管线化的请求不失败即可。
    (6)由于上面提到的服务器端问题,开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端和代理程序对管线化的支持并不好,因此现代浏览器如Chrome 和 Firefox 默认未开启管线化支持。

发布了23 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/diwang_718/article/details/104741446