一、概念

协议:协议是指计算机通信网络中两台计算机之间进行通信所必须遵守的规定规则

HTTP协议:通常被翻译为“超文本传输协议”,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议(互联网> 因特网> 万维网)。它允许将超文本标记语言(html)文档从Web服务器传送到客户端的浏览器。HTTP1.1是如今浏览器主流的超文本传输协议版本。HTTP协议是一个应用层协议。

TCP/IP协议族:因特网所有的传输都是通过TCP/IP进行的,HTTP协议是TCP/IP协议族的一个子集。其它的协议有:IEEE,FDDI,ICMP,IP,PPPoE,DNS,UDP,TCP,FTP,HTTP,SNMP,FDDI等。TCP/IP协议族。TCP/IP协议族中最重要的一点就是分层

TCP/IP分层管理:TCP/IP协议族按层次分为:应用层传输层网络层数据链路层

  • 应用层:决定了向用户提供应用服务时通讯活动。FTP,DNS,HTTP都处于应用层。
  • 传输层:为上层应用层提供网络连接中两台计算机的数据传输,TCP,UDP处于传输层。
  • 网络层:该层决定了通过怎样的路径到达目标计算机,并将数据包传送给对方。
  • 链路层:用来处理连接网络的硬件部分,包括操作系统,硬件的设备驱动,网卡等。

二、TCP/IP通信传输流

利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信,发送端从应用层往下,接收端反之

HTTP协议通信举例:

应用层(HTTTP协议)发送web页面http请求,DNS协议解析域名成IP地址 ==>(TLS/SSL协议,https才有这一层) ===> 传输层(TCP协议)将数据分割,加TCP首部 ==> 网络层(IP协议)增加MAC地址,搜索目标地址传送 ==> 链路层 ==> 服务端正好相反过程。

《图解HTTP》中TCP/IP通信传输截图如下:

三、与HTTP关系密切的协议

  • DNS协议,位于应用层,提供域名和IP地址之间的解析服务

  • TCP协议,位于传输层,提供可靠的字节流服务。字节流指:为方便传输将大块数据分割成以报文段为单位的数据包进行管理。可靠指:能够把数据准确可靠的传给对方(为了确认数据的传达,采用了三次握手策略)。

  • IP协议,位于网络层,将各种数据包传送给对方,要想实现需要两个重要的条件:IP地址和MAC地址。IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址,IP地址可以和MAC地址配对,IP地址是可变的,MAC一般是不可变的。

    IP地址之间通信依赖MAC地址,需要经过多台网络设配中转才能连接到目标设备,过程中会利用中转设备的MAC地址搜索下一个中转目标。这时会采用ARP协议,通过IP地址就可以反查出对应的MAC地址。

其它

  • URI/URL

    URI是统一资源标识符;URL是统一资源定位符,是URL的子集。

    URI相当于用身份证来确定一个人。URL是通过住址来确定这个人。

================================

一、概念

HTTP协议:TCP/IP协议族的一个子集,用于客户端和服务端通信必须遵守的规则。通过请求方法请求和相应的交换达成客户端和服务端的通信。

二、请求方法

告知服务器意图的HTTP方法。

  • GET:获取资源
  • POST: 传输实体主体
  • PUT: 传输文件
  • DELETE: 删除文件
  • HEAD、OPTIONS、TRACE、CONNECT

三、HTTP报文

用于HTTP协议交互的信息称为HTTP报文,请求端的HTTP报文称为请求报文,响应端的称为响应报文。HTTP报文本身是字符串文本。

HTTP请求报文主要分为请求行、请求头(首部)、主体。

  • 请求行

    ①方法 ②URI ③HTTP协议

  • 请求头

    请求首部、通用首部、实体首部 (下面分析)

  • 主体

    请求的入参、

HTTP响应报文主要分为状态行、响应头(首部)、主体。

  • 状态行

    ①协议版本 ②状态码 ③原因

  • 响应头

    响应首部、通用首部、实体首部(下面分析)

  • 主体

    响应的出参

关于常用的首部列表如下(参考HTTP全部报文首部字段):

请求首部

首部字段名 说明
Accept 用户代理可处理的媒体类型text/html
Accept-Encoding 优先的内容编码gzip
Accept-Language 优先的语言en-us,zh
Expect 期待服务器的特定行为
Host 请求资源所在服务器www.jianshu.com
if-Match 比较实体标记(ETag)缓存有关
if-Modified-Since 比较资源的更新时间 缓存有关
Referer 对请求中URI的原始获取方法 http://**/f6507
User-Agent HTTP客户端程序的信息 Mozilla/5.0...

通用首部字段

首部字段名 说明
Cache 控制缓存的行为,不读取本地缓存
Connection 逐跳首部、连接的管理,持续连接相关
Date 创建报文的日期时间

响应首部字段

首部字段名 说明
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间 缓存有关
ETag 资源的匹配信息 缓存有关
Location 令客户端重定向至指定的URI

实体首部字段

首部字段名 说明
Content-Range 实体主体的位置范围 “
Content-Type 实体主体的媒体类型 application/json; charset=utf-8
Expires 实体主体过期的日期时间 缓存有关
Last-Modified 资源的最后修改日期时间 缓存有关
Set-Cookie 服务器返回给客户端设置缓存

四、状态码

状态码是用来告知从服务器请求来的结果

状态码 描述
1xx 请求正在处理
2xx 请求正常处理完毕(success)
3xx 重定向
4xx 客户端错误
5xx 服务端错误

只要遵守状态码类别的定义,即使改变RFC2616中定义的状态码,或服务器端自行创建状态码都是没有问题的。

五、持续连接

在HTTP协议初始版本中,每进行一次HTTP通信就要断开一次TCP连接。为了解决这一问题,在HTTP/1.1版本中加入了持续连接(默认是开启的)。

持续连接使得多数请求以管线化方式发送成为可能。这样就可以做到并行发送多个请求。

六、cookie

无状态:HTTP协议是无状态协议,它不对之前发送过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。

最常见的例子是,登录态无法被保持住。为了解决这一问题,引入了cookie技术,cookie技术是通过在请求和响应首部中加入相关信息,从而达到客户端和服务端的相互识别的通信。

客户端发送请求 ==> 服务端生成session,在响应首部加入set-Cookie ==> 第二次请求中带入cookie ==> 检测cookie,识别身份

除了cookie以外,为了服务器性能等提出了tooken技术,具体可参考干掉状态:从session到token

参考

《图解HTTP》

HTTP全部报文首部字段

干掉状态:从session到token

====================================

一、虚拟主机

HTTP1.1规范允许一台HTTP服务器搭建多个web站点,这是利用了虚拟主机的功能。

两个不同的域名,通过DNS协议映射到IP地址(域名解析)从而访问目标站点,此时访问到相同IP地址。因此在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI。

二、数据转发程序

这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器,并能接收从那台服务器发送的响应再转发给客户端。

1.代理

代理服务器的本质是接收客户端发送的请求后转发给其他服务器。代理不改变请求URI,会直接发送给前方持有资源的目标服务器。每次通过代理服务器请求或响应时,会追加写入Via首部信息。

主要功能:

  • 突破自身IP访问限制,访问国外网站。
  • 访问单位内部资源,FTP之类。
  • 提供访问速度,代理服务器设置了缓存。
  • 隐藏真实IP。
  • 针对特定网站的访问控制,已获取访问日志。

2.网关

从一个网络向另一个网络发送信网关息,也必须经过一道“关口”,这道关口就是网关。网关的工作机制和代理十分相似。而网关能使通信线路上的服务器提供非HTTP协议

利用网关是为了提供通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。例如网关可以连接数据库等。

3.隧道

隧道可以按要求建立起一条与其他服务器的通信线路,使用SSL等加密手段进行通信。隧道的目的是为了确保数据交互的安全性。整个过程中不会解析HTTP协议。

三、资源缓存

缓存服务器是代理服务器的一种,当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本。

缓存服务器的优势在于利用缓存可避免多次从服务器获取,而其中缺点是版本更新时可能获取过时的旧资源。为了解决此问题,可以通过设置缓存的有效期等手段,向原服务器确认资源的有效性。

缓存不仅可以存在于缓存服务器,也可以存在客户端的浏览器中。

=======================================

一、Web攻击

简单的HTTP协议本身并不存在安全问题,并不会成为攻击对象,然而应用HTTP协议的服务器客户端,以及运行在服务器上的Web**应用资源**才是攻击目标。

HTTP最初的设计是一个通用的单纯协议机制,具备较多的优势,但是也有明显的安全性方面的劣势。好在如今大多数的Web网站都会使用会话管理(session)、加密处理等安全性方面的功能。

Web应用的攻击模式

  • 主动攻击
  • 被动攻击

【主动攻击】是攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器的资源进行攻击,因此攻击者需要能够访问到那些资源。代表性的攻击有SQL注入攻击OS命令注入攻击

【被动攻击】是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。代表性的攻击有跨站脚本攻击跨站点请求伪造

被动攻击通常的攻击模式如下:

  • 步骤1:攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的HTTP请求。
  • 步骤2:当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱。
  • 步骤3:中招后的用户浏览器会把含有攻击代码的HTTP请求发送给作为攻击目标的Web应用,运行攻击代码。
  • 步骤4:执行完攻击代码,存在安全漏洞的Web应用会成为攻击者的跳板,可能导致用户所持有的Cookie等个人信息被窃取,登录状态中的用户权限被恶意滥用的结果。

SQL注入攻击(主动攻击)

SQL注入是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。

Web应用通常需要用到数据库,当需要对数据库表内的数据进行检索或添加、删除等操作时,会使用SQL语句连接数据库进行特定的操作。如果在调用SQL语句的方式上存在疏漏,就可能执行被恶意注入非法SQL语句。

Web安全之SQL注入攻击技巧与防范

OS命令注入攻击(主动攻击)

是指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就存在被攻击的风险。

跨站脚本攻击(被动攻击)

是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。尤其动态创建(用户输入)的HTML部分有可能隐藏着安全漏洞(富文本编辑器)。

XSS 跨站脚本攻击Cross Site Script)

HTTP首部注入攻击(被动攻击)

是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或者主体的一种攻击。在发送请求时修改Location以及Set- Cookie可强制设置任何Cookie信息以及重定向至任何URL。

还有一种将两个%0D%0A并排插入字符串后发送,利用这两个连续的换行就可作出HTTP首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。这种攻击叫做HTTP响应截断攻击。

其他的攻击还包括:邮件首部注入攻击、目录遍历攻击、远程文件包含漏洞、强制浏览、不正确的错误消息处理、开发重定向、会话劫持、跨站点请求伪造等攻击方式。详细可查看书籍《图解HTTP》。

二、加密处理

近代的加密方法中加密的算法一般是公开的,而密钥却是保密的。通过这种方式得以保持加密方法的安全性。

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

共享密钥加密

又称对称密钥加密,同用一个密钥的方式称为共享密钥加密。

在互联网上转发密钥时,如果通信被监听那么密钥就可能落入攻击者之手,同时失去了加密的意义。

公开密钥加密

公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。

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

而再之后出现了证明公开密钥正确性的证书,会在接下来的HTTPS中详细讲解。

三、安全的HTTPS

前面讲过HTTP在安全性方面有很多缺陷,比如HTTP协议中的请求和响应不会对通信方进行确认。也就是说存在”服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。

SSL协议

虽然使用HTTP协议无法确定通信方,但是如果使用SSL则可以。SSL不仅提供了加密处理,摘要功能,而且还使用了一种被称为证书的手段,可用于确定通信方。

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

HTTPS**并非是应用层的一种新协议**,只是HTTP通信接口部分用SSL(安全套接层)和TLS(安全传输层协议)协议替代而已。所谓的HTTPS,其实就是身披SSL协议这层外壳的HTTP。

数字证书

遗憾的是,公开密钥加密方式还是存在一些问题的。那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。

为了解决上述问题,可以使用由数字证书认证机构和其相关机关颁发的公开密钥证书。首先,服务器的运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。

具体在Web通信中证书如何运作,可以参考下图:

整个HTTPS的通信流程大致如下:

虽说HTTPS通信建立了一个安全通道的信息传输环境,但是也存在一些问题,那就是当使用SSL时,它的处理速度会变慢。HTTPS比HTTP通信要慢2到100倍

HTTP协议简析《图解http》相关推荐

  1. dhcp协议服务器端默认通信端口是,DHCP协议简析

    不知道看官大人是否有过这样的疑惑?一台计算机,插上网线是不是就可以直接上网了呢?其实没有这么简单,需要配置本机IP地址.子网IP地址.网关IP地址和DNS地址等.配置有两种方式,一种是手动配置,采用静 ...

  2. TCP/UDP,SOCKET,HTTP,FTP协议简析

    (一)TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议 传 ...

  3. 802.11--WPS(Wi-Fi Protected Setup)协议简析

    一.概述 WPS全称为Wi-Fi Protected Setup,是WSC规范早期的名字,WSC全称为Wi-Fi Simple Configuration,该项技术用于简化SOHO环境中无线网络的配置 ...

  4. 流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析

    0.前言 流媒体服务器做音视频媒体传输主要就两件事:媒体回话协商,媒体数据传输:下面这几种协议就围绕着这两个需求而产生. 1.rtp协议 rtp的全称是实时传输协议RTP(Real-time Tran ...

  5. QUIC/HTTP3 协议简析

    从 HTTP 的进化历史讲起,细说使用协议的变迁,了解原因发现问题,解码 QUIC 在 HTTP3 中的支撑作用,共同探讨 HTTP3 的未来. HTTP.HTTP2 和 HTTP3 先和大家来回顾一 ...

  6. 【网络编程】网络协议简析

    一.网络模型 P.S.网卡驱动 -- 数据链路层 二.网络协议 2.1 协议的要素 1.多条规则 2.包的格式 2.2 协议间关系 图片:协议包关系 三.相关协议 百闻不如一见 直观体验学习--可使用 ...

  7. 【IoT】蓝牙 GAP 和 GATT 协议简析

    文章背景: 理论知识是实践开发的基础,对于产品研发来说更是如此,理论结合实践才可以开发出满足市场需求的稳定产品. 1.基础简介 1.1.profile profile 可以理解为一种规范,一个标准的通 ...

  8. 网络摄像机编码标准及传输协议简析

    视频监控系统从第一代模拟系统(VCR)到第二代部分数字化系统(DVR/NVR),再到第三代完全数字化系统(网络摄像机,网络视频服务器),三个阶段的发展演变预示着全数字化视频监控系统不久将成为安防市场的 ...

  9. EM算法原理简析——图解

    一. 扯淡 转眼间毕业快一年了,这期间混了两份工作,从游戏开发到算法.感觉自己还是喜欢算法,可能是大学混了几年算法吧!所以不想浪费基础... 我是个懒得写博客的人,混了几年coding,写的博客不超过 ...

最新文章

  1. mac gource_如何使用Gource显示项目的时间表
  2. javascript(arguments)
  3. Scala学习之特殊符号,及函数
  4. Selenium2+python自动化33-文件上传(send_keys)
  5. 分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步...
  6. html内容点击按钮自动复制,HTML页面---复制按钮的使用(包含弹层)
  7. QQ邮箱怎么发送文件夹 怎样在QQ邮箱里发送压缩文件夹
  8. 接口可以继承抽象类吗_Python接口类的多继承以及抽象类的单继承
  9. linux messages日志为空,自定义linux系统日志格式(messages,cron,ssh等日志格式)
  10. 【事件驱动】【数码管识别】 封装成DLL的函数的梳理
  11. KMeans原理和密度聚类
  12. 华为鸿蒙家电物联网,华为“鸿蒙”来了:本身是为了做物联网,将比安卓速度快60%...
  13. 你好,罗茜——爱要怎么说出口
  14. 【宠物商店管理系统】基于SSM的宠物商店系统(ppt+论文+源代码)
  15. PS简单操作快捷键,上手快
  16. MySQL数据库鼠标操作
  17. 计算机夏令营英语自我介绍,夏令营英语自我介绍
  18. 怎么实现在MindMapper中添加便笺
  19. C++(27)——判断数正负
  20. 稀缺性原则适用于软件产品

热门文章

  1. JVM内存设置多大合适?Xmx和Xmn如何设置?JVM内存分配比例
  2. AutoML-第四章-Auto-WEKA
  3. 刺激战场模拟器过检测的被封号了怎么办?电脑控制手机玩游戏了解一下
  4. HTML标记【其他特殊文字样式标记】!
  5. Windows DIB文件操作详解-1.DIB的读入、保存和显示
  6. ArcGISEngine二次开发(4):属性查询(2)
  7. 照片修复软件有哪些?这几款照片修复软件快收好
  8. tomcat put方法任意写文件漏洞
  9. Orcale 查看用户的权限
  10. 19c新特性-rman单表恢复