首页 > 学院 > 开发设计 > 正文

《图解HTTP》概要

2019-11-06 09:01:20
字体:
来源:转载
供稿:网友

第一章 了解Web及网络基础


Web是建立在Http上通信的TCP/ip协议族按层次分为4层:应用层,传输层,网络层,数据链路层 应用层:决定了向用户提供应用服务时通信的活动,该层的协议有 FTP,DNS,HTTP等传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。协议有TCP,UDP.网络层:处理在网络上流动的数据包,数据包是网络传输的最小数据单位。与对方计算机通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多选项内选择一条传输路线。链路层:处理连接网络的硬件部分,包括控制操作系统,意见的设备驱动,NIC(网卡),及光纤等物理课件部分,硬件上的范畴均在链路层作用范围之内。TCP/IP传输流 TCP/IP传输流 利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往上走。 首先,作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。接着,为了传输方便,在传输层(TCP)把应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层在网络层(IP协议),增加座位通信目的地的MAC地址后转发给链路层。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层,当传输到应用层,才能算真正接受到由客户端发送过来的HTTP请求。在TCP/IP协议族中与HTTP密不可分的3个协议(IP、TCP、DNS) 负责传输的IP协议:IP协议位于网络层,IP协议的作用是把各种数据包传送给对方,从而保证确实传送到对方那里,则需要满足各类条件,其中最重要的条件是IP地址和MAC地址。IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。使用ARP协议凭借MAC地址进行通信:用以解析地址的协议,根据通信方的IP地址可以查出MAC地址。属于网络层,ARP报文是由以太网帧进行封装传输的。没有封装进IP包。确保可靠性的TCP协议:提供可靠的字节流服务。为了传输方便,将大块数据分割成报文段为单位的数据包进行管理。为了准确无误地将数据送达至目标处,TCP采用了三次握手,握手使用的标识:SYN和ACK。三次握手成功之后,客户端和服务器开始传送数据。 TCP三次握手负责域名解析的DNS服务:DNS协议通过域名查找IP地址。 协议间关系

第二章 简单的HTTP协议


HTTP是无状态协议,为了实现保持状态功能,引入Cookie告知服务器意图的HTTP方法。 GET 获取资源 请求:GET /index.html HTTP/1.1 Host:www.hackr.jp 响应:If-Modified-Since:Thu,12,Jul 2012 07:30:00 #仅返回2012年7月12日7点30分以后更新过的index.如果没更新,则以状态码304Not Modified 作为响应。POST :传输实体主体PUT:传输文件。要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。HTTP/1.1自身不带验证机只,一般的Web网站不用该方法。若配合Web应用程序的验证机制,或架构设计采用REST标准的同类Web网站,就可能会开放使用PUT方法。HEAD:获得报文首部。和GET方法一样,只是不返回报文主题部分。用于确认URI的有效性及资源更新的日期时间等。DELETE:删除文件,与PUT相反的方法,按请求URI删除指定的资源。OPTIONS:询问支持的方法,用来查询请求URI指定的资源支持的方法。TRACE:追踪路径,让Web服务器将之前的请求通信环回给客户端的方法。一般不用。且容易引发XST(跨站追踪)攻击CONNET:要求用隧道协议链接代理。在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通信内容加密后网络隧道传输。持久链接节省通信量。 持久连接:在建立1次TCP连接后进行多次请求和响应的交互。只要任一端没有明确提出断开连接,则保持TCP连接状态。管线化:持久连接使的多数请求以管线化方式发送成为可能。能够做到同时并发多个请求,不需要一个接一个等待响应。使用Cookie进行状态管理 Cookie状态管理

第三章 HTTP报文内的HTTP信息


请求报文及响应报文的结构 请求报文 响应报文报文主体和实体主体的区别: 报文:HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。实体:作为请求或响应的有效载荷数据,被传输,其内容由实体首部和实体主体组成。 通常,报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。编码提升传输效率。编码操作需要计算机完成,所以需要消耗更多的cpu等资源 压缩传输的内容编码分割发送的分块传输编码:在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。将实体分割多个部分(块),每一块会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记。分块传输编码的实体主体会由接收的客户端负责解码,恢复到编码前的实体主体。发送多种数据的多部分对象集合 在HTTP报文中使用多部分对象集合时,需要在首部字段上加上Content-type.获取部分内容的范围请求:执行范围 请求时,会用到首部字段Range来指定资源的byte范围。内容协商返回最合适的内容:同一个Web网站可能存在多个相同内容的页面,比如英文版和中文版的页面。 内容协商机制以相应资源的语言、字符集、编码方式等作为判断依据。 服务器驱动协商:以请求的首部字段为参考,在服务器段自动处理。但并不一定能筛选出最优内容客户端驱动协商:由客户端进行内容协商的方式。浏览器显示的可选列表中手动选择。透明协商:服务器驱动和客户端驱动的结合提,是由服务器端和客户端各自进行内容协商的一种方法

第四章 返回结果的HTTP状态码

状态码的类别 状态码的类别2×× 成功: 200 OK204 No Content:服务器接收的请求已经正确处理,但在返回的报文中没有实体的主体部分,也不允许返回任何实体的主体。一般在只需要从客户端忘服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。206 Partial Content:客户端进行了范围请求,服务器也成功执行了这个部分的请求。3×× 重定向: 301 Moved Permanently:永久性重定向。请求的资源已经被分配了新的URI302 Found:临时性重定向。请求的资源已经分配了新的URI,并希望本次使用新的URI访问303 See Other:请求对应的资源还村在另一个URI,应使用GET方法定向获取请求的资源。304 Not Modified:客户端发送附带条件的请求时,服务端允许请求访问资源,但未满足条件的情况,304状态码返回时,不包含任何响应的主体部分。 304虽然被划分在3××类别中,但和重定向无任何关系。307 Temporary Rediret:临时重定向。和Found有着相同的含义。307会按照遵照浏览器标准,不会从GET变成POST4×× 客户端错误: 400 Bad Request:请求中存在语法错误。401 Unauthorized:发送的请求需要有通过HTTP认证的认证信息,如果已经请求过一次,则表示用户认证失败。403 Forbidden:请求的资源的访问被服务器拒绝了。404 Not Found:服务器上无法找到请求的资源。5×× 服务器错误: 500 Internal Server Error:服务器执行请求的时候发生了错误。也有可能是Web应用存在的bug或某些临时的故障。503 Service Unavailable:服务器暂时处于超负载或者正在进行停机维护,现在无法处理请求。

第五章 与HTTP协作的Web服务器


通信数据转发程序:代理、网关、隧道 代理:持有资源实体的服务器被称为源服务器。从源服务器返回的响应经过代理服务器后再传给客户端。每次通过代理服务器转发请求或相应是,会追加写入Via首部信息用以标记经过的主机信息。 缓存代理:会预先将资源的副本(缓存)保存在代理服务器上。当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。透明代理:转发请求或响应时,不对报文做任何加工网关,工作机制和代理十分相似。网关能使通信线路上的服务器提供非HTTP协议服务。利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。比如,网关可以连接数据库,使用 SQL 语句查询数据。另外,在 Web 购物网站上进行信用卡结算时,网关可以和信用卡结算系统联动。隧道,安全的通信线路,可按要求建立起一条与其他服务器的通信线路,届时使用 SSL 等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。隧道本身不会去解析HTTP请求。隧道会在通信双方断开连接时结束。保存资源的缓存:缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可减少对源服务器的访问,因此也就节省了通信流量和通信时间。 即使存在缓存,也会因为客户端的要求、缓存的有效期等因素,向源服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从源服务器上获取“新”资源。缓存不仅可以存在于缓存服务器内,还可以存在客户端浏览器中。

第六章 HTTP首部

使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。

第七章 确保Web安全的HTTPS

HTTP的不足: 通信使用明文,内容可能会被窃听不验证通信方的身份,因此可能遭遇伪装无法证明报文的完整性,可能已遭篡改通信的加密 一种方式就是将通信加密。HTTP 协议中没有加密机制,但可以通过和 SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。与SSL组合使用的HTTP成为HTTPS(HTTP Secure)另一种方式就是将内容加密。通常,HTTP 直接和 TCP 通信。当使用 SSL 时,则演变成先和 SSL 通信,再由 SSL 和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披 SSL 协议这层外壳的 HTTP。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表