HTTP协议简介

        HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,用于从万维网服务器传输超文本到本地浏览器。(本地浏览器通过解析超文本从而在本地浏览器显示内容)。

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。

URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。

URL

        URL是Uniform Resource Locator(统一资源定位符),用于标识互联网上资源的地址。URI,全称是Uniform Resource Identifiers(统一资源标识符)。URL是一种特殊的URI,是URI的子类。HTTP使用URL来传输数据。

        完整的URL的组成,以下面的地址为例:

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

        协议:“http:”,标识使用HTTP协议。“//”为分隔符;

        域名:“www.baidu.com”,也可以使用IP地址作为域名使用;

        端口:“8080”,域名和端口之间使用“:”分隔。可以不提供,省略的话将采用默认端口;

        虚拟目录:“news”,域名后的第一个“/”到最后一个“/”中间的部分。非必须;

        文件名:“index.asp”,从域名后的最后一个“/”到“?”(如果没有“?”则到“#”)之间的部分(如果没有“?”和“#”,则从最后一个“/”到结束都是)。如果省略则使用默认文件名;

        参数:“boardID=5&ID=24618&page=1”,从“?”到“#”之间的部分,又称为“搜索部分”或“查询部分”。可以有多个参数,参数之间用“&”进行分隔;

        :“name”,从“#”开始到最后。非必须。

HTTP请求过程

        一次完整的HTTP请求主要过程如下:

        1、进行DNS域名解析。依次检索,浏览器自身DNS缓存、系统DNS缓存、hosts文件、域名服务器,直到域名被正确解析成IP地址;

        DNS,是Domain Name System(域名系统)的简写。将域名和IP地址进行相互映射,用于将域名解析成IP地址。通过域名与IP的对应关系,用户在访问网络的时候就可以直接通过域名,而不是记住纯数字、没什么含义的IP地址。

        2、建立 TCP 连接。HTTP是比TCP更加高层的协议,他的连接和通讯是通过TCP完成的。因此需要先通过三次握手建立TCP连接后,才能继续工作;

        3、客户端发起HTTP请求;

        4、服务器响应HTTP请求;

        5、客户端通过浏览器解析服务器返回的htmp代码,并请求html代码中的资源,如,遇到js/css/image等静态资源时,就向服务器端去请求下载。

        6、客户端浏览器渲染展示内容;

        7、重复3~6过程,或者关闭TCP连接。正常情况,当服务器返回了请求数据,则连接就会关闭。而如果在请求时加入“Connection:keep-alive”,则表示请求长连接。当服务器也同意保持时,则可以继续进行3~6步骤,重复发起请求和处理返回结果。

HTTP相关的网络攻击

DNS劫持

        DNS劫持就是通过劫持DNS服务器,修改域名的解析结果。导致对该域名的访问由原IP地址转入到修改后的IP。从而窃取资料或者破坏原有的服务。

        DNS劫持常见于使用自动的DNS地址,所以,尽量不要使用运营商默认的DNS。

HTTP劫持

        在运营商的路由器节点上,设置协议检测。发现是html类型的HTTP请求,则拦截处理。进行:1、类似DNS劫持返回302让用户浏览器跳转到另外的地址;2、是在服务器返回的HTML数据中插入js或dom节点(广告),如我们常见的广告弹窗。  

        防HTTP劫持可采取的方法:

        1、使用https协议,该协议会对报文进行加密。但是https多了ssl握手的过程,会耗费一定的时间和性能;

        2、对URL进行加密,使用对称加密算法加密整个url,相较于https,url加密性能更好。

HTTP各版本简单介绍

        HTTP1.0:1996年,较为简单的网页上和网络请求

        HTTP1.1:1999年,当前广泛使用,支持长连接、增加错误响应码、更多的缓存策略、带宽优化允许请求部分资源(range头域)、支持断点续传;

        HTTP2.0:协议解析采用二进制、连接共享一个连接上可以有多个request、header(请求头)压缩使header体积更小。

        HTTPS: HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。与HTTP不同主要有:以https:// 开头、安全的、标准端口是443(HTTP是80)、工作在传输层(HTTP在应用程序)、对传输数据进行加密、要CA机构颁发的SSL证书。

HTTPS数据请求过程

        1、客户端请求与Web服务器建立SSL连接;

        2、Web服务器收到客户端请求后,将网站的数字证书信息(包含服务器公钥)发送给客户端;

        数字证书:服务端将公钥发给数字证书认证机构进行认证并对公钥进行数字签名,公钥和签名组合即是数字证书。在和客户端通信时,服务端将数字证书发给客户端,客户端通过第三方安全认证机构(一般会在浏览器开发时,内置在浏览器中)对数字证书上的签名进行验证。

        3、客户端与Web服务器协商SSL连接安全等级;

        4、根据上一步协商的安全等级,建立会话密钥(会话用的是对称加密),用服务器公钥将会话密钥加密(此处使用的是非对称加密),传送给服务器;

        5、服务器用私钥解密出会话密钥;

        6、服务器用会话密钥与客户端之间的通信。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值