资讯专栏INFORMATION COLUMN

精读《图解HTTP》

CrazyCodes / 2654人阅读

摘要:所以我十分建议大家去读一下图解和权威指南。图解这本书对互联网基盘协议进行了全面系统的介绍。通过书中大量生动形象的通信图例,我们能够更全面地理解通信过程中客户端与服务器之间的交互情况。返回结果的状态在通讯中,通过转态码,告知客户端的请求状态。

前言

作为一个前端,如果能够深刻理解 HTTP 通信,能够让我们在日常开发工作中快速定位问题。所以我十分建议大家去读一下《图解HTTP》和《HTTP权威指南》。权威指南讲解的十分详细,内容也十分的全面,但是这本书的厚度也让很多同学望而却步。推荐大家从 《图解HTTP》 这本书开始学习,这本书虽然没有权威指南详细,但涵盖了很多我们日常开发需要的知识点,理解他,能让我们的开发效率事半功倍。

《图解HTTP》这本书对互联网基盘—— HTTP 协议进行了全面系统的介绍。作者从 HTTP 发展史开始,严谨地剖析了 HTTP 协议的结构,列举很多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。通过书中大量生动形象的通信图例,我们能够更全面地理解 HTTP 通信过程中客户端与服务器之间的交互情况。在读这本书的过程中我收获颇多,并用思维导图的方式记录下来,方便自己后期温故。如果你刚好没有读过,可以当做度这本书的预习阅读,相信你也会有所收获(思维导图图片可能有点小,记得点开看)

了解 HTTP 协议访问 Web

这一章介绍了 Web 及网络协议的基础,http 通讯被拆分成四层,应用层,传输层,网络层和链路层,每层只要考虑分派给自己的任务,不需要弄清整个协议链路的细节。应用层使我们肉眼能看见的,我们常用的 http 协议和 FTP 协议就处在这一层,往下就是传输层,TCP/IP 协议工作的地方(我们的IP是IP地址,和这里的IP 协议有做区分),再往下是网络层,传输层建立连接之后,网络层负责将数据包的传输(数据包是网络传输的最小单位)。最后是链路层,用来连接网络配件的部分,举个栗子就是我们常说的网卡啊,光纤啊。在一个完整的数据传输中,客户端会按照应用层,传输层,网络层,链路层的顺序进行进行处理,每一层都会加一个首部,服务器端在接收的时候按照链路层,网路层,传输层,应用层的顺序去移除首部。

我们常说的3次握手就是 TCP 协议采用的策略,为了传输方便,TCP 将大数据分割成以报文为单位的数据包,IP 协议负责把数据包发送出去。在发送的过程中常常需要经过多个路由器的中转,这个时候会运用 ARP 协议来查找下一个路由器的地址。

通常用户的习惯会去访问域名而不是IP地址,将域名解析成对应的 IP 就需要用到 DNS 协议域名解析的服务。

简单的 HTTP 协议

日常开发中我们感知不到 http 协议的底层实现,我们所了解的 HTTP 协议总是由客户端发起,服务端接收。我们关注到的请求,常常是请求的URI,协议版本,头部信息,及内容实体,我们常使用的响应信息则包括了响应状态,响应内容。

我们常常会使用不通的 http 方法来执行不同的操作。我们常使用 GET 来获取资源,使用 POST 传输实体主题,使用 PUT 传输文件,使用 DELETE 删除文件,使用 OPTIONS 询问支持的方法(常常在跨域的场景中使用),使用TRACE 获取访问路径,使用 CONNECT 用隧道协议链接代理。

http 协议是一种无状态协议,不会去记录上一次访问状态,这使得当我们要做类似于登录这样的公能的时候,需要通过 cookie 来进行状态的管理。

HTTP 报文内的 HTTP 信息


通常HTTP报文(用于HTTP协议交互的信息)的结构包括,请求行,状态行,首部字段等,从 HTTP 的报文中,我们可以获得很多信息。在 MIME 扩展中会使用一种称为多部分对象集合的方法,来容纳多份不同的数据类型, 在 HTTP 报文中使用多部分对象时,需要在首部字段上加上 Content-type 。

通过设置首部字段,来达到获取部分内容范围请求(请求资源中断后,不需要重新开始请求),将传输内容编码的目的,来提高加载效率。

有的时候不同的场景需要我们获取不同的内容,就比如页面的中英文切换的功能,在HTTP请求中,我们通过设置 accept 类的请求头字段实现,也就是内容协商的方式,返回最合适的内容。协商方式分为,服务器驱动协商,客户端驱动协商,透明协商。

返回结果的 HTTP 状态

在HTTP通讯中,通过转态码,告知客户端的请求状态。状态码大致可以被分为 5 大类,1xx 表示接受的请求正在处理,2xx 表示请求正常处理完毕,3xx 表示需要进行附加操作以完成请求,4xx 表示客户端无法处理请求,5xx 表示服务器处理出错。

在这5大类请求中,我们常用的十几种状态码,需要我们重点去掌握,详细介绍看

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95726.html

相关文章

  • 如何机制地回答浏览器兼容性问题

    摘要:前言有过面试经验的同学应该都被问过浏览器兼容性的问题,对于面试官的问题,常常猝不及防,因为通常他们都是这么问的。来谈谈浏览器兼容的问题吧,你对浏览器的兼容性有了解过吗,那么如何才是我们正确回答这个问题的姿势呢。 前言 有过面试经验的同学应该都被问过浏览器兼容性的问题,对于面试官的问题,常常猝不及防,因为通常他们都是这么问的。来谈谈浏览器兼容的问题吧,你对浏览器的兼容性有了解过吗,那么如...

    leanote 评论0 收藏0
  • 如何机制地回答浏览器兼容性问题

    摘要:前言有过面试经验的同学应该都被问过浏览器兼容性的问题,对于面试官的问题,常常猝不及防,因为通常他们都是这么问的。来谈谈浏览器兼容的问题吧,你对浏览器的兼容性有了解过吗,那么如何才是我们正确回答这个问题的姿势呢。 前言 有过面试经验的同学应该都被问过浏览器兼容性的问题,对于面试官的问题,常常猝不及防,因为通常他们都是这么问的。来谈谈浏览器兼容的问题吧,你对浏览器的兼容性有了解过吗,那么如...

    Rindia 评论0 收藏0
  • 精读《Nodejs V12》

    摘要:更好的安全性随着的发布,从升级到了,更安全且更易配置。通过使用,程序可以减少握手所需时间来提升请求性能。提供诊断报告有一项实验功能,根据用户需求提供诊断报告,包括崩溃性能下降内存泄露使用高等等。前端精读帮你筛选靠谱的内容。 1. 引言 Node12 发布有几个月了,让我们跟随 Nodejs 12 一起看看 Node12 带来了哪些改变。 2. 概述 Node12 与以往的版本不同,带来...

    CoderStudy 评论0 收藏0
  • 精读《js 模块化发展》

    摘要:我是这一期的主持人黄子毅本期精读的文章是。模块化需要保证全局变量尽量干净,目前为止的模块化方案都没有很好的做到这一点。精读本次提出独到观点的同学有流形,黄子毅,苏里约,,杨森,淡苍,留影,精读由此归纳。 这次是前端精读期刊与大家第一次正式碰面,我们每周会精读并分析若干篇精品好文,试图讨论出结论性观点。没错,我们试图通过观点的碰撞,争做无主观精品好文的意见领袖。 我是这一期的主持人 ——...

    Freelander 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<