【思唯网络学院】网络基本概念之HTTP协议
首页 > >   作者:浙江思唯网络  2020年7月29日 15:14 星期三  字号:   评论:0 条
时间:2020-7-29 15:14   评论:0 条 

HTTP基本概念


HTTP,全称为 HyperText Transfer Protocol,即为超文本传输协议。是互联网应用最为广泛的一种网络协议,所有的 www 文件都必须遵守这个标准。

HTTP 特性:

  • HTTP 是无连接无状态的

  • HTTP 一般构建于 TCP/IP 协议之上,默认端口号是 80

HTTP 可以分为两个部分,即请求和响应。

HTTP 请求:

HTTP 定义了在与服务器交互的不同方式,最常用的方法有 4 种,分别是 GET,POST,PUT, DELETE。URL 全称为资源描述符,可以这么认为:一个 URL 地址,对应着一个网络上的资源,而 HTTP 中的 GET,POST,PUT,DELETE 就对应着对这个资源的查询,修改,增添,删除4个操作。

HTTP 请求由 3 个部分构成,分别是:状态行,请求头(Request Header),请求正文。

GET 请求报文实例:


640.png

  • 状态行由请求方式,路径、协议等构成,各元素之间以空格分隔。对应到图中即为 GET、/books/?sex=man&name=Professional、 HTTP/1.1

  • 请求头提供一些参数比如:Cookie,用户代理信息,主机名等等。(图中即从第二行到最后一行)

  • 请求正文就放一些发送的数据,一般 GET 请求会将参数放在 URL 中,也就是在请求头中而请求正文一般为空,而 POST 请求将参数放在请求正文中。请求正文可以传一些 json 数据或者字符串等等。

GET 一般用于信息获取,比如刚才我们浏览百度首页,其使用的就是GET方法。

GET 请求一般不会产生副作用,它仅仅只是获取资源信息,就像数据库查询一样,不会修改、增加数据,不会影响资源的状态,并且对同一个 URL 的多次GET请求应该返回相同的结果。

而 POST 请求表示可能会修改服务器上的资源。

640 (1).png

GET 请求和 POST 请求的区别:


  1. GET 和 POST 请求参数位置不同,从上面两个请求报文可以看出,GET 请求对应的参数放在 URL 中,而 POST 请求对应的参数放在 HTTP 请求主体中。(但是这只是一种约定,GET 请求中出现 Body 也是被允许的)

  2. 虽然 HTTP 协议的 RFC规范 并没有详细规定 URL 的最大字符长度限制,但实际上,在浏览器或者服务器中总会存在限制的,这就导致了 GET 请求中参数数量是有限的。

  3. 处于安全考虑,在一些涉及安全的请求比如:登录请求需要用 POST 提交表单,而GET 请求一般用来获取静态资源。

  4. GET 请求可以被缓存,可以被收藏为书签,但 POST 可以被缓存,但不能被收藏为书签。

  5. GET 请求的参数在 URL 中,因此绝不能用 GET 请求传输敏感数据。POST 请求数据则写在 HTTP 的请求头中,安全性略高于 GET 请求。

 HTTP响应

HTTP 响应是服务器在客户端发送 HTTP 请求后经过一些处理而做出的响应,HTTP 响应和 HTTP 请求相似,也是由三个部分构成。分别是:状态行,响应头(Response Header),响应正文。

下面是一个 HTTP 响应的例子:

640 (2).png

HTTP 响应中包含一个状态码,用来表示服务器对客户端响应的结果。


状态码一般由3位构成:

  • 1xx : 表示请求已经接受了,继续处理。

  • 2xx : 表示请求已经处理掉了。

  • 3xx : 重定向。

  • 4xx : 一般表示客户端有错误,请求无法实现。

  • 5xx : 一般为服务器端的错误。

比如常见的状态码:

  • 200 OK 客户端请求成功。

  • 301 Moved Permanently 请求永久重定向。

  • 302 Moved Temporarily 请求临时重定向。

  • 304 Not Modified 文件未修改,可以直接使用缓存的文件。

  • 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。

  • 401 Unauthorized 请求未经授权,无法访问。

  • 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因。

  • 404 Not Found 请求的资源不存在,比如输入了错误的URL。

  • 500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。

  • 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

知道了 HTTP 请求和响应后,一个完整的流程一般是这样的:

通常,由 HTTP 客户端发起一个请求,建立一个到服务器指定端口(默认是 80 端口)的 TCP 连接。HTTP 服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

HTTP头信息

HTTP 请求头:

比如以请求百度首页为例:

640 (3).png

 Accept:指定客户端能够接收的内容类型,如常见的 text/html 等,最后返回的百度首页也是个 HTML 文件。

Accept-Encoding:表示浏览器有能力解码的编码类型。

640 (4).png

  • Accept-Language:表示浏览器所支持的语言类型。(这里指中文、简体中文和英文)

  • Cache-Control:指定请求和响应遵循的缓存机制。(这里表示不需要缓存)

  • Connection:表示是否需要持久连接。(HTTP 1.1 默认进行持久连接即为 keep-alive, HTTP 1.0 则默认为 close)

  • Cookie:用于会话追踪,在本文后面就继续介绍。

  • Host:表示请求的服务器网址

  • User-Agent:用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

还有另外还有一些常见的请求头:

  • Content-Length: 请求的内容长度

  • Referer: 先前访问的网页的地址,当前请求网页紧随其后,说明你是先前是从哪个网址点击访问到该页面的,如果没有则不填。

  • Content-Type:内容的类型,GET 请求无该字段,POST 请求中常见的有 application/x-www-form-urlencoded 为普通的表单提交,还有文件上传为 multipart/form-data

关注微信公众号思唯网络学院,回复资料就可以领取学习资料一份,先到先得噢!来跟我一起交流网络吧!

思唯网络学院公众号二维码.jpg


 您阅读这篇文章共花了: 
 本文无需标签!
二维码加载中...
技术交流:欢迎在本文下方留言或加入QQ群:859273036 互相学习。     
本文地址:http://www.023wg.com/999.html
版权声明:若无注明,本文皆为“思唯网络学院博客”原创,转载请保留文章出处。

返回顶部    首页   
版权所有:思唯网络学院博客    浙江思唯网络