码迷,mamicode.com
首页 > Web开发 > 详细

《图解HTTP》

时间:2018-07-18 00:37:31      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:操作   pre   连接数   tls   通过   改变   字段   结算   res   

了解web及网络基础   

           TCP/IP协议族各层:

应用层:FTP(文件传输协议);DNS(域名系统)                                                   

传输层:TCP(传输控制协议);UDP(用户数据报协议)

端到端,数据单位:数据段

网络层:IP(网际协议)

主机到主机(可以跨不同链路),数据单位:数据包

寻址:IP地址—>MAC地址(用ARP协议)

路由:维护一张路由表,决定数据的传输路线

链路层:以太网,MAC地址,广播(需要在同一个子网络)

数据单位:帧

物理层:

数据单位:比特流

从页面输入url到页面呈现的过程:

1.浏览器通过DNS解析得到url的ip地址

2.浏览器得到服务器的ip地址后,与服务端建立TCP(三次握手)连接

3.建立TCP连接后,浏览器向服务端发送HTTP请求

4.服务器响应http请求,将请求的资源发送给浏览器

5.浏览器释放TCP连接

                技术分享图片

DNS解析:客户端提出域名解析请求,并将该请求发送给本地域名服务器;

浏览器首先查询本地缓存,若有该记录,直接返回查询结果;

查询顺序:1.浏览器缓存;2.系统缓存;3.路由器缓存

简单的HTTP协议

1.HTTP规定,肯定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送相应。

2.HTTP是无状态协议

(使用session+cookie解决需要记录状态的情景:通过在请求和相应报文中写入cookie信息)

                    技术分享图片

3.HTTP的初始版本中,每进行一次通信就要断开一次连接,而每一次的连接都对应了tcp的三次握手与四次断开连接。

(1.0版本使用持久连接解决,好处:减少了tcp的重复建立和断开造成的额外开销。)

HTTP状态码

1XX:信息性状态码,接收的请求正在处理

2XX:成功状态码,请求正常处理完毕

3XX:重定向状态码,需要进行附加操作以完成请求

4XX:客户端错误状态码,服务器无法处理请求

400:请求报文错误

401:用户须认证

403:服务器拒绝资源的请求,如权限

404:服务器上没有请求的资源

5XX:服务器错误状态码,服务器处理请求出错

与HTTP协作的web服务器

web服务器,可以搭建独立域名的web网站,也可以作为中转服务器。

通信数据转发应用程序:

1.代理:接收客户端的请求,转发给其他服务器,不改变请求url

客户端 —GET /HTTP/1.1—>  代理服务器 —GET /HTTP/1.1—>源服务器(持有资源实体的服务器)

作用:

a. 缓存

b. 针对特定网站的访问控制,如,客户端 —GET /HTTP/1.1—>代理服务器,返回请求无法通过

分类:

a. 缓存代理/非缓存代理,代理转发响应时,预先将资源保存在代理服务器上

b. 透明代理/非透明代理,对报文进行加工

2.网关:使通信线路上的服务器提供非HTTP协议服务

客户端 —HTTP请求—> 网关 —非HTTP协议通信—> 非HTTP服务器

利用网关可以提高通信安全性,因为可在客户端与网关的线路上加密。

如,网关可以连接数据库;可以和信用卡结算系统联动等…

3.隧道:建立一条与其他服务器的通信线路,使用SSL等加密手段通信,隧道本身不会去解析HTTP请求。

HTTP首部

通用首部(请求报文和响应报文都会使用):

connection:管理持久连接,close/keep-alive控制http的长连接

请求首部字段

accept:制定媒体类型

authorization:告知服务器用户代理认证信息(收到401后,客户端发给服务器)

host:相同ip下有多个域名的情况,host指定主机名和端口号

cookie:服务器接收到的cookie信息

响应首部字段

location:重定向(配合302)

proxy-authentication:代理服务器需要的认证信息(代理服务器发给客户端需要认证的信息)

www-authentication:服务器需要的认证信息(服务器发给客户端需要的认证信息)

set-cookie:开始状态管理所使用的cookie信息(字段值:name;expire;path;domain;secure;httponly)

实体首部字段

allow:指定客户端支持的方法,如get,post…

expires:缓存失效日期(源服务器发给缓存服务器,缓存服务器对资源做出相应时间的缓存)

确保web安全的HTTPS

HTTP的不足:

1.通信使用明文(不加密),内容可能被窃听

解决:加密处理防止被监听

可以通过SSL(安全套接层)或TLS(安全传输层协议)的组合使用,加密HTTP的整个通信线路。

2.不验证对方的身份,有可能遭遇伪装。

解决:SSL不仅提供加密,还使用了证书。

3.无法证明报文的完整性,有可能已遭篡改

解决:使用MD5或SHA-1等散列值校验的方法

HTTPS=HTTP+加密+认证+完整性保护(与SSL组合使用的HTTP被称为HTTPS)

通常HTTP直接和TCP通信,使用SSL时,先和SSL通信,再由SSL和TCP通信。

SSL:采用非对称加密(公开密钥加密)方式:

一把叫做私有密钥(解密使用)

另一把叫公开密钥(加密使用)(为了证明公开密钥是可信的,服务器可以向数字证书认证机构CA提出申请)

发送密文的一方,使用对方的公开密钥进行加密处理,对方收到被加密的信息,使用自己的私有密钥进行解密

另外一种对称加密(共享密钥加密)方式:

加密解密使用同一个密钥,所以需要把密钥也发给对方,可是发送密钥也是不安全的

确认访问用户身份的认证

BASIC基本认证

DIGEST摘要认证

SSL客户端认证

FormBase基于表单认证

HTTP的瓶颈

一条连接上只能发送一个请求

请求只能从客户端开始

解决:AJAX,websocket



《图解HTTP》

标签:操作   pre   连接数   tls   通过   改变   字段   结算   res   

原文地址:http://blog.51cto.com/13580976/2146121

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!