图解http读后感

前言

  去年上计算机网络的时候,没有好好学,很多东西都是懵懵懂懂的,最后草草复习了一下,考过了这门课。但是网络这块的知识在开发中还是蛮重要的,所以就在推荐下买了这本图解http,在这里总结下这本书的内容以及来一篇读后感。

内容整理

1.了解web及网络基础
  web使用HTTP(HyperText Transfer Protocol,超文本传输协议)作为规范,完成客户端到服务端等一系列运作。web是建立在HTTP协议上通信的。
  1989.03,http诞生。1990.11,CERN成功研发世界上第一台Web服务器和Web浏览器。1994.12,网景发布Netscape Nacigator 1.0,1995年微软发布IE1.0/2.0。95年起,两家公司爆发浏览器大战,各自拓展HTML,对Web标准视而不见,还多次新增功能而不出文档说明(web开发兼容性的坑就是从这来的T.T)。2000年后,网景没落,Firefox、chrome、opera、Safari于IE抢占市场份额。1996年5月HTTP标准正式公布,至今广泛应用于服务器端。1997年HTTP/1.1公布,作为目前主流的HTTP协议版本。HTTP/2.0正在制定中。

  TCP/IP是互联网相关的各类协议族的总称。TCP/IP协议族里重要的一点就是分层,按层次分为以下4层:应用层、传输层、网络层和数据链路层。

  应用层:应用层决定了向用户提供应用服务时通信的活动,协议族内预存了各类通用应用服务,如FTP、DNS,HTTP也处于这一层。

  传输层:对上层应用层提供处于网络连接中的两台计算机之间的数据传输。传输层有两个协议TCP和UDP。

  网络层:处理在网络上流动的数据包,数据包是网络传输的最小数据单位,这一层规定了通过怎样的路径到达对方计算机,并把数据包给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项中选择一条传输路线。

  数据链路层:处理连接网络的硬件部分,包括操作系统、硬件的设备驱动及光线等物理可见的部分。硬件上的范畴均在链路层的作用范围之内。

  TCP/IP传输流,通过分层与对方进行通信,发送端应用层自上而下,接收端自下而上,如图:

TCP/IP

  与HTTP密切相关的协议:IP、TCP、DNS,IP协议确保正确发送给对方,通过IP地址和MAC地址,IP地址可动态变换,但MAC地址一般不变。TCP协议采用三次握手策略确保数据能传达给目标。如图:

三次握手

  DNS解析域名,就是把这样的域名blog.wangx.me解析成IP地址1xx.xx.xx.xx3。HTTP通信过程中集中协议的作用如图:

http通信过程

2.http协议(1.1版本)

  http协议用于客户端和服务端通信,方式是客户端发送请求,服务器收到请求返回响应结果。http有get、post、put、options等方法。http在1.1版本提出了持久连接(keep-alive),只要任意一端没有明确提出断开连接,就保持TCP连接状态。http使用cookie进行状态管理。

3.http报文的http信息

  用于HTTP协议交互的信息称为HTTP报文,报文包括报文首部、空行和主体。通过编码来提升传输速率,报文又分请求报文和响应报文。

  请求行:包含上面所说的请求方法,请求URI和HTTP版本。

  状态行:包含表明响应结果的状态码,原因短语和HTTP版本。

  首部字段:包含表示请求和相应的各种条件和属性的各类首部。

4.返回结果的HTTP状态码

  状态码是用来描述客户端向服务器发送请求时返回的请求结果。通过状态码可以知道服务器是正常处理了请求还是出错了。状态码类别:

状态码类别

  常见的状态码:200 OK,表示请求被正常处理了。204 No Content表示已成功处理但没有内容返回。301 Moved Permanently永久重定向。400 Bad Request表明请求报文存在语法错误。401 Unauthorized未获得授权,表明需要认证。403 Forbidden 请求资源被拒绝。404 Not Found表明服务器找不到请求资源。500 Internal Server Error表明请求时服务器发生错误。503 Service Unavailable表明服务器处于超负载或停机维护。

5.与HTTP协作的Web服务器

  一台Web服务器可搭建多个域名的Web网站,当两个域名部署在同一个服务器上时,通过DNS解析后会得到一个相同的IP地址,,所以在请求时必须指定URI。代理、网关、隧道,代理是接收客户端请求转发给服务端,再将服务端响应接收转发给客户端。缓存,缓存服务器保存了源服务器的资源副本,在请求时直接向缓存服务器请求,能节省流量和通信时间,达到加速的效果。

6.HTTP首部

  HTTP协议的请求和响应报文中必定包含HTTP首部。首部字段分为4种通用首部字段、请求首部字段、响应首部字段、实体首部字段。请求首部字段中User-Agent可以告诉我们请求的客户端的信息,包含设备系统、浏览器版本等信息。Authorization是用来告知服务器用户的认证信息。Cookie用来做用户识别和状态管理。

7.确保Web安全的HTTPS

  尽管HTTP具有相当优秀和方便的一面,但是也有它的缺点,使用明文,内容可能会被窃听,不验证通信身份,可能遭遇伪装,无法验证报文完整性,信息可能遭篡改。所以HTTPS=HTTP+加密+认证+完整性保护。HTTPS安全通信的机制:

HTTPS通信机制

8.认证机制

  如果只想让特定的人浏览页面,就需要认证功能。FormBase认证即表单认证是我们最常见的,一个网站大多都需要我们进行注册和登陆才能访问一些资源。当然还有BASIC、DIGEST、SSL认证等认证方式。

9.HTTP新增的功能的协议

  2010年google发布了SPDY,旨在解决HTTP性能瓶颈,缩短web页面加载时间。使用浏览器进行全双工通信的WebSocket,推送功能由服务器向客户端推送数据,减少通信量。WebSocket通信图示:

websocket

10.构建Web内容的技术

  这就没什么好说的了,就是HTML、CSS、JS,当然现在构建Web内容的技术当然不止这些了很多方便开发的库、打包工具等等。还提到了数据格式,XML、JSON等。

11.Web的攻击技术

  互联网的攻击大多都是冲着Web站点来的,主要是利用HTTP不具备安全功能。对Web应用的攻击模式主要有两种主动攻击和被动攻击,SQL注入、OS命令注入、HTTP首部注入、邮件首部注入、目录遍历攻击。还有就是设计上的缺陷引发的安全漏洞,有强制浏览、不正确错误信息处理、开放重定向等。还有因会话管理疏忽引发的安全漏洞,主要有会话劫持、会话固定攻击等。还有一些其他的安全漏洞,密码破解、点击劫持、DOS攻击、后门程序等等。

读后感

  怎么说呢,读完之后对HTTP有了一定的理解,但我觉得还是不够,可能读完这第一遍对我自己在开发中遇到的问题可能印象特别深刻,一些常见的状态码200、301、400、401、404、500等,以及首部字段Authorization、User-Agent、Cookie等。当然还有很多HTTP相关的概念,只是匆匆读过一遍,稍微有了点印象,但不够深刻。另外还有很多没有遇到过的东西,读了之后也有点懵,可能在以后用到了再来读一遍印象会更加的深刻。这本书还是比较好的,推荐阅读。1.2章都是简单的介绍,7.8.9.10.11章也都是简要的进行了介绍,那么主要内容就是3.4.5.6是需要仔细去阅读的。