HTTP协议

1.HTTP简介

HTTPHyper Text Transfer Protocol):超文本传输协议

HTTP是一个基于TCP/IP协议来传输数据(HTML文件,图片文件,查询结果等)的,用于万维网(WWWWorld Wide Web)服务器与本地浏览器之间的传输协议。

HTTP是一个应用层协议

HTTP默认端口号是80HTTPS默认端口号是443

现在普遍应用的是HTTP 1.1,最新版本HTTP 2.0

2. HTTP特点

1. 支持客户端/服务器模式:但HTTP协议都是由客户端发送请求后,服务器给予回应。这样就使得服务器无法主动推送消息

2. 简单快速:客户端发送请求只需请求方法和路径。因为HTTP协议简单,使得HTTP服务器的程序规模小,因而通讯很快

3. 灵活:只要客户端和服务器知道如何处理数据内容,HTTP协议允许传输任何类型的数据。正在传输的类型用Content-Type标记

4. HTTP 0.91.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。

5. 无状态:无状态是指协议对事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量大。另一方面,在服务器不需要先前信息时它的应答就很快

 

3. 工作流程

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

(1)首先客户端与服务器建立连接(如:点击某个超链接)

(2)建立连接后,客户端向服务器发送一个Request请求

(3)服务器收到请求后,解析请求返回给客户端一个Response响应

(4)客户端浏览器收到Response解析并展示在窗口

(5)释放TCP连接

Ps:客户端与服务器之间可能存在一个或多个代理服务器

 

4. HTTP消息结构

客户端请求信息(Request

由四个部分组成:请求行(request line),请求头部(header),空行,请求数据

 

图一 Request结构

第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.

第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息

第三部分:空行,请求头部后面的空行是必须的

第四部分:请求数据也叫主体,可以添加任意的其他数据。请求数据也可为空

服务器响应信息(Response

由四个部分组成:状态行,消息报头,空行,响应正文

 

图二 Response结构

第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

第二部分:消息报头,用来说明客户端要使用的一些附加信息

第三部分:空行,消息报头后面的空行是必须的

第四部分:响应正文,服务器返回给客户端的文本信息。

 

5. HTTP请求方法

HTTP1.0定义了三种方法:GET,POST,HEAD

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

 

图三 HTTP请求方法

 

GETPOST的区别:

1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连。如EditPosts.aspx?name=bob&id=666。而POST方法则是把提交的数据放在HTTP包的body中。

2. GET提交的数据大小有限制,最多只能有1024字节(因为浏览器对URL长度有限制),而POST方法提交的数据没有限制。

3. GET方法需要使用Request.QueryString来获得变量的值,而POST方法通过Request.Form来获取变量的值。

4. GET方法提交数据,会带来安全问题,比如一个登录页面,通过GET方法提交数据时,用户的账号密码会出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号密码。

 

6.HTTP状态码

状态码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:提示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受

3xx:重定向--要完成请求必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或请求无法实现

5xx:服务器错误--服务器未能实现合法的请求


常见状态码:

200  OK                    //客户端请求成功

400  Bad Request           //客户端请求有语法错误,不能被服务器理解

401  Unauthorized          //请求未经授权

403  Forbidden             //服务器收到请求,但拒绝提供服务

404  Not Found             //请求资源不存在

500  Internal Server Error //服务器发生不可预期的错误

503  Server Unavailable    //服务器当前不能处理客户端的请求,一段时间后可能正常

更多状态码http://www.runoob.com/http/http-status-codes.html


7.HTTPURL

URIURLURN的概念以及区别

HTTP使用URIUniform Resource Identifiers)统一资源标识符来传输数据和建立连接。URI是一个通用的概念,由两个主要的子集URLURN构成。

URLUniform Resource Locator)统一资源定位器,是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。

URNUniform Resource Name)统一资源命名,是一种通过名字来识别资源,与所处的位置无关

URL是一种强有力的工具。但URL并不完美。它表示的是实际的地址,而不是准确的名字。这种方案的缺点在于如果资源被移走了,URL也就不再有效了。那时,它就无法对对象进行定位了

  如果有了对象的准确名称,则不论其位于何处都可以找到这个对象。就像人一样,只要给定了资源的名称和其他一些情况,无论资源移到何处,都能够追踪到它。为了应对这个问题,无论对象搬移到什么地方,URN都能为对象提供一个稳定的名称。

 

HTTPURL语法格式

http://<host>:<port>/<path>?<query>#<frag>

1. 协议部分:http表示使用的是http协议,协议名是大小写无关的,httpHTTP等价

2. 域名部分:host为要访问的网站域名,也可使用IP地址作为域名

3. 端口部分:port表示要访问的主机端口,若省略端口,则默认采用80端口

4. 路径部分:path表示要访问的资源文件的路径地址

5. 查询部分:query表示查询,可以设置多个参数,参数之间用‘&’作为分隔符

6. 锚部分:frag表示一个资源内部的一个片段,URL可以指向HTML文档中的一个特点的图片或小节

例如:http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

表示使用http协议,访问域名为www.aspfans.com,访问端口号为8080,访问文件路径为news/index.asp,查询参数boardID=5ID=24618page=1,访问index.asp中的name片段。

8.HTTPS

HTTPSHyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道,简单来说就是HTTP的安全版。即在HTTP下加入了SSL

HTTPS的两种基本的加解密算法类型:

1. 对称加密:密钥只有一个,加解密为同一个密码,且加解密速度快,典型的对称加密算法有DES,AES

2. 非对称加密:密钥成对出现(根据公钥无法推知私钥,根据私钥也无法推知公钥),加解密使用不同的密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对于对称加密,速度较慢。典型的非对称加密算法有RSA,DSA

 

图四 HTTPS的通信过程

HTTPS通信的优点:

1.客户端产生的密钥只有客户端和服务器才能得到

2.加密的数据只有客户端和服务器才能得到明文

3.客户端到服务器的通信是安全的

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页