HTTP(1.1)(s)

文章目录

  • HTTP(/1.1)(s)
    • HTTP
      • HTTP简介
      • HTTP特点
      • 报文
      • 状态码
      • 请求方法
        • get和post区别
      • 与HTTP密切相关的协议
        • IP协议
        • ARP协议
        • TCP协议
        • DNS服务
      • 一图胜千言
    • HTTP/1.1
      • 无状态
      • 长连接
    • HTTPS
        • HTTP的不足
        • HTTPS加密方式
        • 验证通信方身份
        • 防止接受到的内容被篡改
        • HTTP + 加密 + 认证 + 完整性保护 = HTTPS
        • 加密机制
        • 通信机制
        • HTTPS慢
    • Web攻击

HTTP(/1.1)(s)

HTTP

HTTP简介

Hyper Text Transfer Protocol(超文本传输协议)。是用于从万维网服务器(www:Wrold Wide Web)传输超文本到本地客户端的应用层传送协议。

HTTP特点

  • 适用范围广 :最初是用于浏览器和服务器的通信协议,基于TCP/IP协议族,现在几乎所有客户端都可以使用http
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

报文

请求报文

HTTP(1.1)(s)_第1张图片

响应报文

HTTP(1.1)(s)_第2张图片

HTTP(1.1)(s)_第3张图片

状态码

  • 1xx:信息提示,表示请求已被成功接收,继续处理。
  • 2xx:请求被成功提交。
  • 3xx:客户端被重定向到其他资源。
  • 4xx:客户端错误状态码,格式错误或者不存在资源。
  • 5xx:描述服务器内部错误。

常见状态码

  • 200:客户端请求成功
  • 302:重定向
  • 404:请求资源不存在
  • 400:客户端请求有语法错误,不能被服务器所理解
  • 401:请求未经授权
  • 403:服务器收到请求,但是拒绝提供服务
  • 500:服务器内部错误
  • 503:服务器当前不能处理客户端的请求

请求方法

  • GET 请求指定的页面信息,并返回实体主体。
  • HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
    POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  • PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    DELETE 请求服务器删除指定的页面。
  • CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  • OPTIONS 允许客户端查看服务器的性能。
  • TRACE 回显服务器收到的请求,主要用于测试或诊断。

get和post区别

  1. 提交数据放置位置不同:get请求是将数据拼接在url后面,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII,且只能是ASCII。

    而post请求是将数据放在请求体中,数据可以是二进制流。

  2. 数据大小不同 :HTTP协议本身对传输数据大小没有限制,但浏览器和服务器以及操作系统会进行限制。

  3. 安全性:POST请求相对来说比GET请求安全些。

  4. 缓存:get请求能够被缓存,post请求不能被缓存,所以get请求相对来说较快。

  5. 行为不同:get请求是获取资源,post请求是改动服务器资源。

与HTTP密切相关的协议

IP协议

IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC 地址(Media Access Control Address)。

IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC 地址基本上不会更改。

HTTP(1.1)(s)_第4张图片

ARP协议

IP地址位于第三层(广域网),MAC地址位于第二层(局域网),局域网中唯一标志某一台设备,ARP协议就是将广域网第三层的IP地址解析成第二层的MAC地址,精准点对点将数据传输到某一台设备。

主机arp表:arp -a

HTTP(1.1)(s)_第5张图片

路由arp表:show arp

HTTP(1.1)(s)_第6张图片

  • 协议:IP协议
  • 地址:IP地址
  • 生存时间:min
  • 硬件地址:mac地址
  • 类型
  • 下一跳、出接口

主机路由表:

netstat -r

HTTP(1.1)(s)_第7张图片

  • 目标网络
  • 网络掩码
  • 网关
  • 下一跳、接口
  • 度量值

路由器路由表

show ip route

  • 协议类型
  • 网络地址
  • 下一跳地址
  • 管理距离、度量值 等等

无论是主机还是路由器的路由表都有网络地址、下一跳等基本属性。

由此可见 ,在广域网中,数据点对点传输是靠IP地址,用路由等设备不断接力寻址,找到目标设备,进入局域网后,mac地址唯一,利用arp协议确定目标设备,实现点对点通信。

TCP协议

位于传输层,提供可靠字节流传输服务,为了方便传输。将大 块数据分割成以报文段(segment)为单位的数据包进行管理。而可 靠的传输服务是指,能够把数据准确可靠地传给对方。

一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

HTTP(1.1)(s)_第8张图片

除了上述三次握手,TCP 协议还有其他各种手段来保证通信的可靠性。

DNS服务

与纯数字IP地址相比,域名更符合人的记忆习惯,所以将域名和IP地址进行映射就依靠DNS域名解析服务。

HTTP(1.1)(s)_第9张图片

一图胜千言

HTTP(1.1)(s)_第10张图片

HTTP/1.1

无状态

在HTTP1.0中,每一个请求都是无状态的,下一个请求与上一个请求没有任何关联,那么登录一个网站后,每一次请求都需要重新登录来保证登录状态。所以在HTTP/1.1引入了cookie和session技术,保持会话。

cookie和session的区别

  • cookie保存在浏览器,session保存在服务器
  • cookie不是很安全,别人可以分析cookie进行cookie欺骗
  • session会在服务器保存一段时间,会给服务器造成压力
  • 单个cookie长度一般不能超过40K,session没有限制大小。

长连接

在纯文本传输中,请求一个资源就断开没什么问题,但是随着互联网发展,html页面越来越精美,其中不仅有文本还有图片资源,每请求一个资源就关闭连接,下一次请求再创建连接,很明显无法复用连接。

在http/1.1引入了长连接,实现连接复用,短时间内请求的资源都走这个连接,极大的减少了连接创建和释放的开销,只要任意一端没有明确表示释放连接,则保持TCP连接。

HTTPS

HTTP的不足

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

    通过抓包软件查看 HTTP 响 应报文的全部内容等一系列的事情都可以做到。

  2. 不验证通信方的身份,因此可能遭遇伪装

  3. 无法证明报文的完整新,所以可能已遭篡改

HTTPS加密方式

加密可以防止请求被窃听,加密的方式有两种:通信加密和内容加密

  • 通信加密

    在HTTP的基础上使用SSL(Secure Socket Layer,安全套接层)和TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容。

    用 SSL建立安全通信线路之后,就可以在这条线路上进行 HTTP 通信了。与 SSL组合使用的 HTTP 被称为HTTPS(HTTP Secure,超文本传输安全协议)或 HTTP over SSL。

    HTTP(1.1)(s)_第11张图片

  • 内容加密

    HTTP(1.1)(s)_第12张图片

为了做到有效的内容加密,前提是要求客户端和服务器同时具备加密和解密机制。主要应用在 Web 服务中。有一点必须 引起注意,由于该方式不同于 SSL或 TLS 将整个通信线路加密 处理,所以内容仍有被篡改的风险。

验证通信方身份

证书认证:证书由值得信任的第三方机构颁发,用以证明服务器和客户端是 实际存在的。另外,伪造证书从技术角度来说是异常困难的一件 事。所以只要能够确认通信方(服务器或客户端)持有的证书, 即可判断通信方的真实意图。

HTTP(1.1)(s)_第13张图片

防止接受到的内容被篡改

HTTP(1.1)(s)_第14张图片

HTTP本身有保证报文完整性的方案,使用MD5、SHA1生成签名的方法。

提供文件下载服务的 Web 网站也会提供相应的以 PGP(Pretty Good Privacy,完美隐私)创建的数字签名及 MD5 算法生成的散列值。PGP 是用来证明创建文件的数字签名,MD5 是由单向函数生成的散列值。

不论使用哪一种方法,都需要操纵客户端的用 户本人亲自检查验证下载的文件是否就是原来服务器上的文件。浏览器无法自动帮用户检查。可惜的是,用这些方法也依然无法百分百保证确认结果正确。

因为 PGP 和 MD5 本身被改写的话,用户是没有办法意识到的。

使用SSL后可以保证通信内容的完整性。

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。

通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通 信,再由 SSL和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的 HTTP。

HTTP(1.1)(s)_第15张图片

加密机制

近代的加密方法中加密算法是公开的,而密钥却是保密的。通过这种方式得以保持加密方法的安全性。加密和解密都会用到密钥。

没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了。如果密钥被攻击者获得,那加密也就失去了意义。

  • 共享秘钥加密

    HTTP(1.1)(s)_第16张图片

    HTTP(1.1)(s)_第17张图片

  • 公开秘钥加密

    公开密钥加密方式很好地解决了共享密钥加密的困难。

    HTTP(1.1)(s)_第18张图片

HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。

若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。 所以应充分利用两者各自的优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

HTTP(1.1)(s)_第19张图片

遗憾的是,公开密钥加密方式还是存在一些问题的。那就是无法证明公开密钥本身就是货真价实的公开密钥。为了解决上述问题,可以使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。

HTTP(1.1)(s)_第20张图片

通信机制

HTTP(1.1)(s)_第21张图片

步骤 1: 客户端通过发送 Client Hello 报文开始 SSL通信。报文中包含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。

步骤 2: 服务器可进行 SSL通信时,会以 Server Hello 报文作为应 154答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的 加密组件内容是从接收到的客户端加密组件内筛选出来的。

步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开密钥证书。

步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶段的 SSL握手协商部分结束。

步骤 5: SSL第一次握手结束之后,客户端以 Client Key Exchange 报 文作为回应。报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。

步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。

步骤 7: 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

步骤 8: 服务器同样发送 Change Cipher Spec 报文。

步骤 9: 服务器同样发送 Finished 报文。

步骤 10: 服务器和客户端的 Finished 报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。

步骤 11: 应用层协议通信,即发送 HTTP 响应。

步骤 12: 最后由客户端断开连接。断开连接时,发送 close_notify 报文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP的通信。

HTTPS慢

HTTPSHTTP 要慢 2100 倍 。通信慢、解密慢。

Web攻击

  • DoS攻击:Denial of Service,同时间大量请求

  • XSS攻击:表单提交js脚本代码

  • SQL注入攻击:利用注释更改查询条件:select * from book where author = ‘aa’ --’ and flag =1;这样–后面的内容被注释掉,少一个查询条件,私密内容可能也被查询出来。

  • OS命令注入攻击:

    HTTP(1.1)(s)_第22张图片

  • 等等

你可能感兴趣的:(网络)