HTTP详解

网络协议

《HTTP权威指南》

《TCP/IP详解》

《图解HTTP》

  • 前端工程师
  • Web 开发
  • UI 框架
  • HTTP协议
  • 网络爬虫
  • 抓包
  • 实现HTTP 服务器
  • 提供网站REST API
  • 修改后端定制框架
  • HTTP 1.1 标准
  • 通信过程
  • HTTP 方法、协议格式、报文结构、首部字段、状态码
  • HTTP 通信过程中代理、网关、隧道
  • SPDY、WebSocket、WebDAV 等HTTP 的扩展功能
  • 无状态(stateless)、301 和302 重定
    向的区别在哪、缓存机制
  • Web 安全
  • HTTPS、SSL、证书认证、加密机制、Web 攻击手段
  • 使用HTTP 协议访问Web
    • 网页浏览器(Web browser),客户端client
    • 地址栏
    • URL统一资源定位符
    • Web 服务器
    • Web 页面呈现
    • 超文本传输协议HTTP(通信协议:规则)
    • Web 是建立在HTTP 协议上通信的
    • www:共享,万维网,WWW 构建技术,HTML,HTTP,URL
    • Web
    • Web 服务器标准之一的Apache,网景通信公司发布了Netscape Navigator 1.0,微软公司发布Internet Explorer 1.0 和2.0,Mozilla 基金会发布了Firefox 浏览器,Chrome、Opera、Safari 等,HTTP/1.0并记载于RFC1945
    • TCP/IP 协议族:计算机网络通信,通信协议,分层,:应用层、传输层、网络层和数据链路层。
    • 应用层
      应用层决定了向用户提供应用服务时通信的活动。
      TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(File
      Transfer Protocol,文件传输协议)和 DNS(Domain Name System,
      域名系统)服务就是其中两类。
      HTTP 协议也处于该层。
    • 传输层
      传输层对上层应用层,提供处于网络连接中的两台计算机之间的
      数据传输。
      在传输层有两个性质不同的协议:TCP(Transmission Control
      Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据
      报协议)。
    • 网络层(又名网络互连层)
      网络层用来处理在网络上流动的数据包。数据包是网络传输的最小
      数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对
      方计算机,并把数据包传送给对方。
      与对方计算机之间通过多台计算机或网络设备进行传输时,网络层
      所起的作用就是在众多的选项内选择一条传输路线。
    • 链路层(又名数据链路层,网络接口层)
      用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱
      动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等硬件
    • 我们用HTTP 举例来说明,首先作为发送端的客户端在应用层
      (HTTP 协议)发出一个想看某个Web 页面的HTTP 请求。
      接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的
      数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端
      口号后转发给网络层。
      在网络层(IP 协议),增加作为通信目的地的MAC 地址后转发给
      链路层。这样一来,发往网络的通信请求就准备齐全了。
      接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP
      请求。
    • 封装(encapsulate
    • ,IP(Internet Protocol)
    • 使用ARP 协议凭借MAC 地址进行通信
    • 路由选择(routing)
    • TCP
    • 报文段(segment)
    • 为了准确无误地将数据送达目标处,TCP 协议采用了三次握手
      (three-way handshaking)策略。用TCP 协议把数据包送出去后,TCP
      不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握
      手过程中使用了TCP 的标志(flag)——SYN(synchronize)和ACK
      (acknowledgement)。
      发送端首先发送一个带SYN 标志的数据包给对方。接收端收到后,
      回传一个带有SYN/ACK 标志的数据包以示传达确认信息。最后,发送
      端再回传一个带ACK 标志的数据包,代表“握手”结束。
    • DNS(Domain Name System)服务
    • URI(统一资源标识符):URI 就是由某个协议方案表示的资源的定位标识符,URI 用字符串标识某一互联网资源,而URL 表示资源的地点(互
      联网上所处的位置)。可见URL 是URI 的子集。
    • URL(Uniform Resource Locator,统一资源定位符
    • 绝对URI 的格式:协议方案名://登录信息(认证)服务器地址服务器端口号文件路径查询字符串 片段标示符
    • 请求报文是由请求方法、请求URI、协议版本、可选的请求首部字
      段和内容实体构成的。
    • 响应报文基本上由协议版本、状态码(表示请求成功或失败的数字
      代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主题构成
    • HTTP 是一种不保存状态,即无状态(stateless)协议
    • Cookie 技术,管理状态
    • GET:获取资源
    • CGI:(Common Gateway Interface,通用网关接
      口)
    • POST 方法:传输实体主体
    • PUT:传输文件
    • REST(Representational
      State Transfer,表征状态转移)标准
    • HEAD 方法和GET 方法一样,只是不返回报文主体部分。用于确认
      URI 的有效性及资源更新的日期时间等。
    • DELETE 方法用来删除文件
    • OPTIONS 方法用来查询针对请求URI 指定的资源支持的方法。
    • TRACE 方法:追踪路径
    • CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道
      协议进行TCP 通信。主要使用SSL(Secure Sockets Layer,安全套接
      层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加
      密后经网络隧道传输。
    • 持久链接
    • 管线化(pipelining)方式
    • Cookie 会根据从服务器端发送的响应报文内的一个叫做Set-Cookie
      的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器
      发送请求时,客户端会自动在请求报文中加入Cookie 值后发送出去。
      服务器端发现客户端发送过来的Cookie 后,会去检查究竟是从哪
      一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前
      的状态信息。
    • 用于HTTP 协议交互的信息被称为HTTP 报文
    • 请求报文,响应端(服务器端)的叫做响应报文
    • 报文首部:服务器端或客户端需处理的请求或响应的内容及属性
    • 报文主体:数据
    • 请求行
      包含用于请求的方法,请求URI 和HTTP 版本。
      状态行
      包含表明响应结果的状态码,原因短语和HTTP 版本。
      首部字段
      包含表示请求和响应的各种条件和属性的各类首部。
    • 其他
      可能包含HTTP 的RFC 里未定义的首部(Cookie 等)。
    • 报文( message)
      是HTTP 通信中的基本单位,由8 位组字节流(octet sequence,
      其中octet 为8 个比特)组成,通过HTTP 通信传输。
      ●●实体( entity)
      作为请求或响应的有效载荷数据(补充项)被传输,其内容由实
      体首部和实体主体组成。
      HTTP 报文的主体用于传输请求或响应的实体主体。
      通常,报文主体等于实体主体。只有当传输中进行编码操作时,实
      体主体的内容发生变化,才导致它和报文主体产生差异。
      报文和实体这两个术语在之后会经常出现,请事先理解两者的差异。
    • 状态码:301永久性重定向
    • HTTP 服务器
    • Web 站点
    • 虚拟主机(Virtual Host
    • HTTP 通信时,除客户端和服务器以外,还有一些用于通信数据转
      发的应用程序,例如代理、网关和隧道。
    • 代理
      代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端
      “中间人”的角色,接收由客户端发送的请求并转发给服务器,同
      时也接收服务器返回的响应并转发给客户端。
      网关
      网关是转发其他服务器通信数据的服务器,接收从客户端发送来的
      请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有
      时客户端可能都不会察觉,自己的通信目标是一个网关。
    • 隧道
      隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双
      方通信连接的应用程序。
    • 缓存
    • HTTP 首部
    • HTTP 主要有这些不足,例举如下。
      ●●通信使用明文(不加密),内容可能会被窃听
      ●●不验证通信方的身份,因此有可能遭遇伪装
      ●●无法证明报文的完整性,所以有可能已遭篡改
    • 与SSL 组合使用的HTTP 被称为HTTPS
    • 。SSL 采用一
      种叫做公开密钥加密(Public-key cryptography)的加密处理方式。
    • 近代的加密方法中加密算法是公开的,而密钥却是保密的。通过这
      种方式得以保持加密方法的安全性。
      加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来
      说,任何人只要持有密钥就能解密了。如果密钥被攻击者获得,那加密
      也就失去了意义。加密和解密同用一个密钥的方式称为共享密钥加密(Common key
      crypto system),也被叫做对称密钥加密。
    • 公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private
      key),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让
      其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。
    • 密钥分发:在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段
      则使用共享密钥加密方式。
    • 证书:公开密钥加密方式还是存在一些问题的。那就是无法证
      明公开密钥本身就是货真价实的公开密钥。可以使用由数字证书认证机构(CA,Certificate
      Authority)和其相关机关颁发的公开密钥证书。首先,服务器的
      运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证机构
      在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然
      后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在
      一起。
      服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户
      端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书或直接
      称为证书。
      接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证
      书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:
      一,认证服务器的公开密钥的是真实有效的数字证书认证机构。。二,服
      务器的公开密钥是值得信赖的,此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式
      时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版
      本时,会事先在内部植入常用认证机关的公开密钥。
  • Web 应用,指通过Web 功能提供的应用程序,比如购物网站、网
    上银行、SNS、BBS、搜索引擎和e-learning 等。互联网(Internet)或
    企业内网(Intranet)上遍布各式各样的Web 应用
  • CGI(Common Gateway Interface,通用网关接口)是指Web 服务器
    在接收到客户端发送过来的请求后转发给程序的一组机制。,CGI下,程序会对请求内容做出相应的动作,比如创建HTML 等动态
    内容。使用CGI 的程序叫做CGI 程序,通常是用Perl、PHP、Ruby 和C
    等编程语言编写而成。
  • ServletA 是一种能在服务器上创建动态内容的程序。Servlet 是用
    Java 语言实现的一个接口, 属于面向企业级Java(JavaEE,Java
    Enterprise Edition)的一部分。Servlet 的运行
    环境叫做Web 容器或Servlet 容器。之前提及的CGI,由于每次接到请求,程序都要跟着启动一次。因
    此一旦访问量过大,Web 服务器要承担相当大的负载。
  • XML(eXtensible Markup Language,可扩展标记语言)是一种可按
    应用目标进行扩展的通用标记语言。旨在通过使用XML,使互联网数
    据共享变得更容易。
  • JSON
  • web安全
  • 主动攻击(active attack);SQL 注入攻击和OS 命令注入攻击
  • 跨站脚本攻击

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值