六十四、应用层篇-HTTP协议总结和展望

我们已经学习了HTTP中很多知识,尤其是一些重要的首部字段,本篇文章简单做下回顾,并且小小地做下总结,好继续下一阶段的学习。

我们将系列文章串联起来,来看看我们到底学习了哪些HTTP首部字段。

六十四、应用层篇-HTTP协议总结和展望

第一回

六十四、应用层篇-HTTP协议总结和展望四十八、应用层篇-web概述,本文是一篇致敬web之父:Tim Berners-Lee爵士的文章。

Tim Berners-Lee爵士有一个美好的设想:他希望能够有一种工具,让大家能够不管身处何地,都能够通过计算机网络去简单快捷地访问其他人的数据。

进一步地,Tim Berners-Lee爵士构想:互联网应该把众多的计算机资料库都联接起来,成为一个可供所有人共同使用的网络。

经过不断的摸索和修改,蒂姆终于在1990年成功开发出世界上第一个Web服务器和第一个Web客户机,蒂姆为他的发明正式定名为World Wide Web,即我们熟悉的WWW。

1993 年4月30日,CERN宣布开放万维网给所有人使用,从此开启了互联网的时代大门。

六十四、应用层篇-HTTP协议总结和展望

第二回

六十四、应用层篇-HTTP协议总结和展望四十九、应用层篇-实战之当virtualbox遇上Centos7,主要介绍了如何用虚拟机安装linux系统,属于扩展知识。


六十四、应用层篇-HTTP协议总结和展望

第三回

六十四、应用层篇-HTTP协议总结和展望五十、应用层篇-实战之基于Tomcat这只猫做点事~本文运行了一个简单的前后端分离项目,实现了最简单的登录和注册功能,感受实际项目搭建的过程。

六十四、应用层篇-HTTP协议总结和展望

第四回

六十四、应用层篇-HTTP协议总结和展望五十一、应用层篇-HTTP协议报文前世今生,本文介绍了HTTP协议的发展史。

进化史:HTTP/0.9版本–》HTTP/1.0版本–》HTTP/1.1版本–》HTTP/2–》HTTP/3版本

HTTP/1.1和HTTP/2是现在,HTTP/3则是未来。

我们应该去了解每一个版本出现的意义和本身的缺陷,从整体上把握HTTP协议。

六十四、应用层篇-HTTP协议总结和展望

第五回

六十四、应用层篇-HTTP协议总结和展望五十二、应用层篇-HTTP协议报文整体长什么样本文介绍了HTTP协议请求和响应报文的基本结构。

请求报文和响应报文都由四部分组成:起始行、头部、空行以及实体

六十四、应用层篇-HTTP协议总结和展望

第六回

六十四、应用层篇-HTTP协议总结和展望五十三、应用层篇-HTTP之内容数据协商,本文开始,开始接触第一批HTTP首部字段。

本篇文章所介绍的是数据协商问题,具体点是在HTTP协议中,如何来协商客户端和服务端的数据类型、数据压缩格式、语言以及编码问题。

  • 数据类型表示实体数据的内容是什么,使用的是 MIME type,相关的头字段是 Accept和 Content-Type

  • 数据编码表示实体数据的压缩方式,相关的头字段是 Accept-Encoding 和 Content-Encoding

  • 语言类型表示实体数据的自然语言,相关的头字段是 Accept-Language 和 Content-Language

  • 字符集表示实体数据的编码方式,相关的头字段是 Accept-Charset和 Content-Type

六十四、应用层篇-HTTP协议总结和展望

第七回

六十四、应用层篇-HTTP协议总结和展望五十四、应用层篇-HTTP之连接管理,本文主要讨论的是”长连接“问题。

涉及的核心首部字段是:Connection: keep-alive

在 HTTP/1.1 中的连接都会默认启用长连接,除非显示使用 Connection:close 首部禁用长连接。

六十四、应用层篇-HTTP协议总结和展望

第八回

六十四、应用层篇-HTTP协议总结和展望五十五、应用层篇-实现一个简易的web服务器,本文用JAVA语言实现了一个简易的web服务器,为下一篇文章的验证做准备。


六十四、应用层篇-HTTP协议总结和展望

第九回

六十四、应用层篇-HTTP协议总结和展望五十六、应用层篇-HTTP之分块传输,本文探讨的是大文件传输问题。

在无法使用压缩解决问题的情况下,大文件需要拆分为小文件传输。

响应报文里用头字段“Transfer-Encoding: chunked”来表示,意思是报文里的 body 部分不是一次性发过来的,而是分成了许多的块(chunk)逐个发送。

此外,请求头或响应头中有一个字段是:Content-Length字段,标识携带数据是多少字节大小,此字段必须准确,否则会引起一些问题。

六十四、应用层篇-HTTP协议总结和展望

第十回

六十四、应用层篇-HTTP协议总结和展望五十七、应用层篇-HTTP之重定向,本文主要讨论了301和302两个状态码。

301是永久重定向,302是临时重定向,此外还有很多状态码,比如200、500等等。

六十四、应用层篇-HTTP协议总结和展望

第十一回

六十四、应用层篇-HTTP协议总结和展望五十八、应用层篇-HTTP之中介,本文核心讨论的是存在代理的情况。

我们如何知道通信链路中是否经过了中间代理呢?

可以通过 Via 这个通用字段,请求头或响应头里都可以出现。每当报文经过一个代理节点,代理服务器就会把自身的信息追加到字段的末尾,就像是经手人盖了一个章。

此外,为了解决如何获取客户端真实IP这个实际问题,做了探讨和实践,结论如下:

  • 当你确定客户端和服务端之间是直连的,无任何代理,那么就直接使用request.getRemoteAddr()。

  • 当架构是客户端—》nginx反向代理—》真实应用,无其他任何组件,并且nginx的配置也是如此配置的话,那么就可以使用X-Real-IP。

  • 但是当你不清楚客户端和真实应用之间到底经历了多少代理时,请使用X-Forwarded-For获取。

核心涉及两个重要的HTTP头字段:X-Forwarded-For和X-Real-IP

六十四、应用层篇-HTTP协议总结和展望

第十二回

六十四、应用层篇-HTTP协议总结和展望五十九、应用层篇-HTTP之Session、Cookie和Token,本文探讨了如何让无状态的HTTP协议有记忆。

响应报文首部中通过Set-Cookie字段,浏览器自动会将里面的信息写入cookie保存下来。

  • 首先,客户端会发送一个http请求到服务器端

  • 服务器端接受客户端请求后,建立一个session对象,并发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部。该头部包含了sessionId:Set-Cookie:JSESSIONID=XXXXXXX

  • 在客户端发起的第二次请求,假如服务器给了set-Cookie,浏览器会自动在请求头中添加cookie

  • 服务器接收请求,分解cookie,验证信息,核对成功后返回response给客户端

六十四、应用层篇-HTTP协议总结和展望

第十三回

六十四、应用层篇-HTTP协议总结和展望六十、应用层篇-HTTP之URL编码,本文介绍了编码的历史,最后顺便介绍了URL编码是怎么一回事。

与计算机打交道,字符编码问题是永远需要面对的,从编码的概念、字符集进化史一直说到URL编码,大致理清这些基本概念。

六十四、应用层篇-HTTP协议总结和展望

第十四、十五回

六十四、应用层篇-HTTP协议总结和展望六十一、应用层篇-HTTP之缓存控制(上)六十二、应用层篇-HTTP之缓存控制(下),两篇文章主要探讨了缓存控制机制。

涉及到的核心首部字段是:Cache-Control

  • Cache-Control: max-age=30 :缓存过期时间为30秒

  • Cache-Control: no-store :直接禁止游览器缓存数据,每次用户请求该资源,都会向服务器发送一个请求,每次都会下载完整的资源。

  • Cache-Control: no-cache :它的字面含义容易与 no_store 搞混,实际的意思并不是不允许缓存,而是可以缓存,但在使用之前必须要去服务器验证是否过期,是否有最新的版本

还提到了条件请求,涉及到的首部字段有:

  • 第一次请求的响应头带上某个字段:Last-Modified或者Etag

  • 后续请求则会带上对应的请求字段:If-Modified-Since或者If-None-Match

六十四、应用层篇-HTTP协议总结和展望

第十六回

六十四、应用层篇-HTTP协议总结和展望六十三、应用层篇-网络抓包神器:Wireshark,本篇详细介绍抓包神器:WireShark。

会抓包是必备技能,能分析报文是更加重要的技能。

六十四、应用层篇-HTTP协议总结和展望

展望

纵观HTTP/1.1几十个首部字段,我们会发现,重要的、使用频次较高的字段已经基本都尽收囊中,读者朋友们大可在遇到时再去理解其含义,相信都比较好理解了。

因此本文就不像普通HTTP文章复制粘贴很多字段逐个介绍了,关于HTTP协议,就要告一段落了,下一篇章属于“高级”篇,我们共同来探讨HTTPS、HLS、CDN等等有趣的事情,也将是较为艰难的部分。

读者朋友们,下篇见。

原文始发于微信公众号(幕后哈土奇):六十四、应用层篇-HTTP协议总结和展望

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/113207.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!