00:00
本文将抛弃千篇一律的既往知识理论,从现实的互联网技术实践角度,一步步为你分享一次网络请求背后的技术秘密。IPDNS和CDN为什么不是每个设备一个公网IP?在底层和协议设计中,字段的扩大是非常麻烦的。IP地址也有类似问题,常见专用地址有10XXX 172.16-31XX 192.168XX,另外一百二十七点零零点一表示本地回环地址,代表设备的本地虚拟接口。DNS有话说,IP地址不好记,于是就有了域名浏览器,访问QQ com时,会先做一次域名解析,把QQ com这个域名。
01:00
曾解析成IP地址,然后才能发出IP包。CDN登场。为了给用户提供更快的访问速度,人们发明了CDN content delivery network内容分发网络。简单的说就是一个域名对应有多个IP,这些IP分布在全国各地。用户访问域名时,DNS服务器根据用户的来源IP返回一个就近的IP给用户,从而实现更快的访问速度。HTTP用RNRN来分割消息头和消息体,这种用特定字符、字符串来分割或分包的方式还有不少协议用到,例如FTP ATP pop3都是用N来作为一个命令结束的标志。协议设计消息分包是协议设计的一个工作。协议设计的话题还不少,这里以HTTP协议为例,简要的说说里面。
02:00
设计的点,自己设计的协议也可以对照着由选择的使用原理是共通的。具体是E由消息头加消息体组成,空行分割http head和body http图的每一行以RN结尾行就是RNRN 2、消息分包,如上所述,HTTP用content length和transfer encoding来分包。3、消息压缩,请求中有encoding字段,响应中用content刚encoding字段表明,压缩方式一般采用JZP压缩。4、消息加密,Https set secure socket layer 5、消息IDURL就是消息ID 6、响应的状态码第一个数字定义了响应的类别,E xx只是信息杠杠,表示请求已接收,继续处理。2、ecaxs成功港岗,表示请求已被成功接收,理解接受。3、exs重定向港港要完成请求,必须进。
03:00
0更进一步的操作,4X客户端错误杠杠请求由于法错误或请求无法实现,5XX服务器端错误杠杠服务器未能实现合法的请求。7、协议版本号HTTP1中的1就是HTTP11版本。8、长连接请求中,Connection keep gun alive表示希望服务器保持连接,减少TCP连接的开销。9字符集content gun type字段表明了字符集,例如content gun type text HTML char set=GE3、一二十、字符转义URL中的参数需要做URL转译处理,例如http X comdo name=TRF3F23%,3D表示name v t仅等于acgi和f cgicgi是通过环境变量标准输入标准输出标准错误来传输数据,运行性能比较低,主要。
04:00
要有两点,1、每个请求都需要web服务器去fork出c gii程序,频繁fork进程比较耗时,2、c gii程序每次都是从头运行,读配置、连接其他服务都得重新来,也比较耗时。Fast c gii是对c gii的改进。Fast c gii模式下,Web服务器和fast c gii程序传输数据的过程大体示e web服务器收到的请求信息后,按fast cgi协议把请求信息通过socket发给fast c gii程序。2、fast c gii程序执行业务逻辑后,通过socket把响应数据返回给web服务器,Fast c gii程序不exit 3、web服务器在组织成HTTP响应包发给浏览器。Fast c gii有这些特点,1、fast c gii程序常驻内存启动后可以反复处理请求。2F c gii就是进程池、线程池模型的通用同步服务器框架。
05:00
服务器后端架构模型上节讲到web服务器和cgi fast c gii能动态输出内容,从而提供更强大的业务处理能力。Web服务器这种架构我称之为web模式,与之相对的是SRR模式。Web模式和SRR模式是互联网项目的后台最常见的两种模式。Web模式业务一般有这些特点,一是请求刚应答式,即先客户端请求才会有服务器应答,少数场景可借助web socket主动推送,二是同步通讯,一个连接里只有收到应答后才能发下一个请求,HTTP2可多路复用,三是同步逻辑,We部模式较少采用异步逻辑,四是无状态架构,Cgfs cpii每次从数据层获取数据,修改后再写回到数据层。S5R模式相对web模式来说通讯性能更强,因为采用了长连接和异步通讯,还能主动推送消息。
06:00
这是优势,但也因为采用了长连接和异步通讯,对客户端开发的要求就更高些,需要处理好断线重连和支持响应乱序。We部模式因为模式简单,外部服务器自己实现了HTTP协议处理和FAS CPI进程管理等通用操作,FAS CPI这些外部程序只需要处理业务逻辑就行,降低了很多门槛。而且因为是无状态的,扩容非常方便,直接加机器就能搞定。这个平滑扩容的优势在外部时代的作用非常大,搞性能优化、架构优化的时间成本比较大,而且不可控,加硬件就能快速抗住,是个好的方案。
我来说两句