聊聊web的底层-HTTP

HTTP全称Hypertext Transfer Protocol,即超文本传输协议。超文本即我们常说的富文本。

HTTP的最新版本是1.1,从1997年至今,由于其稳定性和实用性,一直就没有正式的升级过。2.0的协议现在还没有正式版,因为1.1的稳定以及普遍性,完全替代,还遥遥无期。但是2.0一些新特性,比如长连接(服务器推送消息),已经在最新的浏览器和服务器中实现。

HTTP每次连接,都包含2个部分:头域(头文件)和实体。这些名词太专业有木有,举个简单的例子吧。

比如发顺丰快递,对方的地址,电话号码,以及包裹详情就是头文件,而包裹本身就是请求实体。其实HTTP连接就是PC之间互相发包裹而已。

我们来看看HTTP头域包含哪些内容吧。头域分为请求头和响应头,先来看看请求百度CSS文件的HTTP详情:

头域主要包含如下字段

1. User-Agent,Remote Address,Request URL等等

这是客户端发送自己的信息给服务器,服务器用这些信息为每个客户生成唯一的Token(SessionID)。我在上篇文章中,一直强调HTTP的无状态性,很多同学就要问了,服务器怎么确定请求是来自于同一个客户呢(Session)? 答案就是Token。Token是以Cookie的方式进行传输的。

2.缓存

缓存是属于头文件中比较复杂的了。由于其HTTP的版本迭代,包含不同版本缓存的配置方法。比如:cache-control,date,etag,expires,last-modified等等。但是它的实用度远远大于它的复杂度。有兴趣的同学,推荐深入研究一下。

3.Connection:keep-Alive

这个名词叫长连接,但请别被这个词骗了。在HTTP1.1中只是连接复用而已,即每次HTTP连接使用后,不直接销毁。供其他请求使用。现在主流的Web服务器如Apache,Tomcat等都实现了这个功能。

4.关于Cookie

上面提到,Token是以Cookie的形式存储的。大家可能都了解Cookie的机制,但是大家可能不知道的是,客户端的每次请求,都会携带所有的Cookie到服务器,对是所有!所以千万不要以Cookie作为存储数据的媒介。并且,在老版IE中,Cookie的容量只有5KB,存储也会不安全。

HTTP头域主要的就这么多内容了,其他的一些是服务器HTTP的版本,请求编码,相应编码,请求类型等等。

说到请求类型,这里插一段HTTP GET和POST的不同区别吧。

Get提交的数据由于在URL中传输,所以在老版的IE7中,传输的数据量最多不超过256K,GET数据会使用HTTP的缓存来加快速度。

而POST本身对数据量没有限制,但是POST请求本身就屏蔽了缓存功能。所以在使用时,尽可能多的使用GET,至于具体情景,比如保存数据,就另当别论了。

HTTP实体,就是HTTP连接的请求数据以及响应数据。这个就是包裹本身了。并没有什么可讲的。

做技术这么久,真心感到技术和生活是想通的!技术上的种种机制以及趋势,都和生活中的种种是相对的,所谓佛本是道呀!所以我一直钟情于用通俗简单的话语,来讲解很多人认为高深的技术,而不是为了深度而深度。希望大家也保持一颗不畏技术的心!

本次WEB的底层讲解,就到这里了。如果您对我的文章有兴趣,请关于我的微信公众号,谢谢。

时间: 2024-10-09 19:56:41

聊聊web的底层-HTTP的相关文章

聊聊web的底层

最近几年web如火如荼的发展,导致许多开发人员都去关注html,JavaScript,CSS这些实际的技术,却很少关注一些底层的机制. 上一篇[性能优化-web篇]中讲到很多web方面的优化方法,这些方法都偏重于实践,而没有讲为什么要这么做,相信很多人也是人云亦云,并不知道这些方法的真正原理. 所以本篇就带大家深挖一下web相关的HTTP,头文件,传输实体,TCP/IP等这些涉及基础的东西,从深层次来剖析web.知其然也要知其所以然,才能更好地理解web相关的技术. 首先我们来看看web的分层

聊聊web的底层-TCP

web是基于TCP/IP来传输数据的,要想了解web,必须先了解TCP/IP的相关原理. TCP全称:Transmission Control Protocol,中文传输控制协议.相较于TCP,还有其他的传输协议,比如UDP,FTP,这些大家大概都听说过. 说什么传输协议,很多人觉得很高级.通俗点说:就是一个文件从一台PC上复制到另外一台PC上使用的方法. 比如你访问百度,其实是你复制百度页面的HTML文件,CSS文件,图片文件等等,在浏览器打开显示而已.至于copy的方法,就是协议的具体实现内

【大话QT之十一】题外篇:万能脚本助Web执行底层Linux命令

需求分析: 这里先要说明的是,这一篇不是QT系列的文章,而是关于Web的,之所以要写这篇,是因为以前做Web相关开发的时候,经常涉及到与linux底层命令打交道,比如说创建一个目录,删除一个目录,或者是执行一个自定义的脚本.关于PHP如何调用.执行Linux的底层命令,以前也研究过,基本上实现了自己需要的功能,但是有些地方一直没有弄明白.今天又偶然碰到了,趁着这个机会向大家描述一下一步一步应该如何实现,并最后附上相关C代码. 原理实现: 首先,一般搭建的Web站点都是采用Apache或Nginx

万能脚本助Web执行底层Linux命令

需求分析: 这里先要说明的是,这一篇不是QT系列的文章,而是关于Web的,之所以要写这篇,是因为以前做Web相关开发的时候,经常涉及到与linux底层命令打交道,比如说创建一个目录,删除一个目录,或者是执行一个自定义的脚本.关于PHP如何调用.执行Linux的底层命令,以前也研究过,基本上实现了自己需要的功能,但是有些地方一直没有弄明白.今天又偶然碰到了,趁着这个机会向大家描述一下一步一步应该如何实现,并最后附上相关C代码. 原理实现: 首先,一般搭建的Web站点都是采用Apache或Nginx

聊聊Web App、Hybrid App与Native App的设计差异

目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web App.Hybrid App. Native App. 1. Web APP Web App 指采用Html5语言写出的App,不需要下载安装.类似于现在所说的轻应用.生存在浏览器中的应用,基本上可以说是触屏版的网页应用. 优点 (1)开发成本低, (2)更新快, (3)更新无需通知用户,不需要手动

超赞!聊聊WEB APP、HYBRID APP与NATIVE APP的设计差异

编者按:这3类主流应用你都了解吗?设计师除了要有视觉功夫,对不同形式的APP也应当了然于胸,今天百度的同学写了一篇非常全面的总结,帮你迅速搞定3类主流APP的设计方法,附带一大波避雷针,带你巧妙跳过APP设计的雷区,涨姿势是分分钟刻不容缓的事咯! 目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web App.Hybrid App. Native App

聊聊 Web 项目二维码生成的最佳姿势

在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5天实现的逻辑是这样的: 客户 ajax 请求生成二维码,后端服务洞悉这一请求,生成二维码(可参照我博客:Google Zxing 二维码生成与解析). 并将二维码已用户 ID 进行命名存储在项目工程 /webcontent/qrcode/AAAAAAAAAAAAAA.png 当中. 使用用户 ID

【转载|前端科普】聊聊Web App、Hybrid App与Native App的设计差异

目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web App.Hybrid App. Native App. 1. Web APP Web App 指采用Html5语言写出的App,不需要下载安装.类似于现在所说的轻应用.生存在浏览器中的应用,基本上可以说是触屏版的网页应用. 优点 (1)开发成本低, (2)更新快, (3)更新无需通知用户,不需要手动

web服务器底层-http请求与相应

http请求请求分为三个部分:请求行.请求头.请求数据请求行 请求方式(GET/POST等) 请求目录,分层(/books/1.html) HTTP协议版本(HTTP/1.1),请求方式有:POST GET HEAD OPTIONS DELETE TRACE PUT.一般用GET/POST,get方式是通过‘?参数’的形式在url里面显示,显示直白.post方式则没有参数显示,适合比较大的数据传送. 请求头(客户机环境) 一般的请求头有: Accept:用于告诉服务器客户机支持的数据类型 Acc