http协议详解

来源:互联网 发布:app编程 编辑:程序博客网 时间:2024/05/22 04:27

http协议详解

HTTP 协议永远都是客户端发起请求,服务器回送响应。是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。HTTP 消息由客户端到服务器的请求和服务器到客户端的响应组成。

 

http 协议工作流程:

一次 HTTP 操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接, HTTP 的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符( URL)、

协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和可能的内容。

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

 

HTTT 的连接过程:

1.浏览器向服务器发出连接请求。

2.服务器回应了浏览器的请求,并要求确认。

3.浏览器回应了服务器的确认,连接成功。

4.浏览器发出一个页面 HTTP 请求。

5.服务器确认。

6.服务器发送数据。

7.客户端确认。

8.服务器响应了一个 200 状态,表示成功。

9.客户端发出一个图片 HTTP 请求。

10.服务器响应了一个 304HTTP头,告诉浏览器别打扰它,直接用缓存。

11.客户端又发出一个图片 HTTP 请求。

12.服务器还是响应了一个304HTTP 头。

13.浏览器确认。

14.服务器准备关闭连接,并要求确认。

15.浏览器确认。

16.浏览器准备关闭连接,并要求确认。

17.服务器确认。

 

http协议特点:

1、支持客户/服务器模式

2、无连接:无连接的含义是限制每次连接只处理一个请求。务器处理完客户的请求,并收到客户的应答后,即断开连接。

3、无状态: HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传。

 

http 协议之请求篇:

请求信息由如下三部分组成:请求行、 HTTP 头、 内容。

HTTP 请求的第一部分(请求行), 一个典型的请求行如下:GET www.163.com HTTP/1.1。请求行写法是固定的,由三部分组成,第一部分是请求方法,第二部分是请求网址,第三部分是 HTTP 版本。

HTTP 请求的第二部分( HTTP 头)在 HTTP 请求可以是3 种 HTTP 头: 请求头(request

header)、 普通头(general header)、 实体头(entity header)。通常来说,由于 Get 请求往往不包含内容实体,因此也不会有实体头。

HTTP 请求的第三部分(内容):只在 POST 请求中存在,因为 GET 请求并不包含任何实体。

 

请求的方法种类:

GET:获取URL下的资源、提交表单信息(用户名、密码)

POST:向服务器提交更新数据(创建或更新服务器资源)

PUT:存储一个资源到请求的URL

DELETE:删除给定的URL所标志的资源

HEAD:返回URL标志的头信息

TRACE:返回TRACE请求附带的头字段

OPTION:返回服务器支持的HTTP请求

 

get和post区别:

1、Get是向服务器发获取数据的一种请求,而Post是向服务器提交数据的一种请求。

2、GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连;POST把提交的数据则放置在是HTTP包的包体中。

3、GET方式提交的数据有长度限制容量小,传输数据会受到URL长度的限制。理论上POST没有限制,可传较大量的数据。

4、POST的安全性要比GET的安全性高。通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

 

http 协议之响应篇

HTTP 响应在结构上很类似于 HTTP 请求,也是由三部分组成,分别为:状态行、 HTTP头、返回内容。

首先来看状态行,一个典型的 HTTP 状态如下:HTTP/1.1 200 OK。以上状态行的第一部分是 HTTP 版本,第二部分是响应状态码,第三部分是状态码的描述。

状态码:

信息类 (100-199):一般是告诉客户端,请求已经收到了,正在处理,别急...

响应成功 (200-299):请求收悉、我明白你要的、请求已受理、已经处理完成等信息.

重定向类 (300-399):重定向到其它地方。它让客户端再发起一个请求以完成整个处理。

客户端错误类 (400-499):处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。

服务端错误类 (500-599): 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。

几个常见的状态码:

200 OK :你最希望看到的,即处理成功!

303 See Other :我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。

304 Not Modified :告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!

404 Not Found :你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。

403 Forbidden :是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。该状态表示服务器理解了本次请求但是拒绝执行该任务.

500 Internal Server Error :看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改BUG去吧!

502 Bad Gateway:是指错误网关,无效网关。连接超时 我们向服务器发送请求由于服务器当前链接太多,导致服务器方面无法给于正常的响应

 

第二部分 HTTP 头包括:响应头(response header)、普通头(general header)、实体头(entity header)。

第三部分返回内容就是 HTTP 请求所请求的信息。这个信息可以是一个HTML,也可以是一个图片。

 

http 协议之消息报头篇

HTTP 消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有 CRLF 的行),消息正文(可选)组成。

 

HTTP 消息报头包括普通报头、请求报头、响应报头、实体报头。

普通报头:通用头既可以包含在 HTTP 请求中,也可以包含在 HTTP 响应中。通用头的作用是描述HTTP 协议本身。比如描述 HTTP 是否持久连接的 Connection 头, HTTP 发送日期的 Date 头,描述 HTTP 所在 TCP 连接时间的Keep-Alive 头,用于缓存控制的 Cache-Control 头等。

请求报头:请求头是那些由客户端发往服务端以便帮助服务端更好的满足客户端请求的头。请求头只能出现在 HTTP 请求中。比如告诉服务器只接收某种响应内容的 Accept 头,发送 Cookies 的Cookie 头,显示请求主机域的 HOST 头,用于缓存的 If-Match, If-Match-Since,If-None-Match头,用于只取 HTTP 响应信息中部分信息的 Range 头,用于附属 HTML 相关请求引用的 Referer

头等。

响应报头:HTTP 响应头是那些描述 HTTP 响应本身的头,这里面并不包含描述 HTTP 响应中第三部分也就是 HTTP 信息的头(这部分由实体头负责)。比如说定时刷新的 Refresh 头,当遇到 503错误时自动重试的 Retry-After 头,显示服务器信息的 Server 头,设置 COOKIE 的 Set-Cookie头,告诉客户端可以部分请求的 Accept-Ranges 头等。

实体报头:实体头是那些描述 HTTP 信息的头。既可以出现在 HTTP POST 方法的请求中,也可以出现 在 HTTP 响 应 中 。其 它 还 有 用 于 描 述 实 体 的Content-Language,Content-MD5,Content-Encoding以 及 控 制 实 体 缓 存 的 Expires 和Last-Modifies头等。

 

 

https 协议概述

https 协议简介及主要思想

HTTPS 的全称为 Hypertext Transfer Protocol over Secure Socket Layer,是超文本传输协议和 SSL/TLS 的组合,是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP下加入SSL 层, HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。它是一个 URIscheme(抽象标示符体系),句法类同 http:体系。用于安全的 HTTP 数据传输。 https:URL 表明它使用了HTTP,但 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。

 

HTTPS 的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密套件和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的保护。

HTTPS 的信任继承基于预先安装在浏览器中的证书颁发机构(如 VeriSign、 Microsoft 等)

(意即“ 我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS 连接可被信任, 当且仅当:

1)用户相信他们的浏览器正确实现了HTTPS 且安装了正确的证书颁发机构;

2)用户相信证书颁发机构仅信任合法的网站;

3)被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);

4)该证书正确地验证了被访问的网站(如,访问 https://example 时收到了给“ Example Inc.”而不是其它组织的证书);

5)或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层( TLS 或 SSL)不能被窃听者破坏。

 

https 与 http 的区别

1.HTTP 和HTTPS 使用的是完全不同的链接方式,用的端口也不相同。 HTTP 的 URL 由“ http://”起始且默认使用端口为 80, HTTPS 的 URL 由“ https://”起始且默认使用的端口为443。

2.HTTP 是超文本传输协议,信息是明文传输; HTTPS 则是具有安全性的 ssl 加密传输协议。

3.HTTPS 协议需要到 CA( Certificate Authority,数字证书认证机构)申请证书,一般免费证书很少,需要交费。

4.HTTP 的连接很简单,是无状态的; HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

原创粉丝点击