本篇文章旨在从服务器后台开发的角度剖析一个简单的http服务器的运行原理.
我们知道浏览器是http(s)的客户端目的是连接远程的http服务器然后服务器返回浏览器数据.浏览器接收数据解析数据之后展现出来.我们看到的外在表现就是浏览器访问一个url然后就得到相应的web页面.
同样我们知道浏览器与http服务器是通过http协议传输层是tcp协议因为他是有连接可靠的协议.关于http协议简单的介绍一下:
一个标准的HTTP请求由以下几个部分组成
在HTTP请求中,第一行是请求行(request-line),用来说明请求类型、要访问的资源(URL)以及使用的HTTP版本;紧接着是多行头部(headers)信息,用来说明服务器要使用的附加信息;头部信息之后是一个回车换行符(\r\n),用于标明头部信息的结束。以上是必须内容,根据需要可在头部信息结束之后增加主体数据(request-body);
主体数据之后是一个回车换行符(\r\n),用于标明主体数据的结束。
例如,我们可以在IE浏览器上输入下面的网址:
http://localhost:8000/hello/index.html
HTTP请求的头部信息如下:GET /hello/index.html HTTP/1.1Accept: */*Accept-Language: zh-cnAccept-Encoding: gzip deflateHost: localhost:8000Connection: Keep-AliveCookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6
收到请求数据之后服务器解析毕竟是明文字符这个简单.然后服务器就知道了客户端的要求--获取目录hello/index.html文件.服务器读取文件内容发送给浏览器就好了.
后来随着业务逻辑越来越复杂单单获取某个html文件功能早已不能满足需求个性化需求呼之欲出.比如在线问卷调查表他究竟是怎么把我们填写的数据传递给服务器的呢?
你可能会说那不是一样客户端发送什么内容服务器就接收什么内容.可是你想过没有每个网站的需求是不一样的本来服务器接收到浏览器的请求数据已经是够复杂的了还让服务器来解析数据并响应不同的数据处理这不太现实.
一般的服务器最好只接收数据如果让服务器也处理数据逻辑势必会让服务器变得很复杂稳定性也得不到保证.
另外一个角度是为了让程序复用提高生产效率.也就是说如果不关注业务逻辑只注重接收数据那么服务器程序可以给任何一个开发者使用.换句话说我们不用从头开始写.直接使用现有的高性能的服务器就可以满足需求了.例如公司白领中午要吃饭不可能跑回家自己去做饭吃自己叫外卖就好了.
但是现实问题仍然没有解决通过什么方式去处理业务逻辑呢?
你要给手机充电时把插头插入插线板就能获取电了.插线板有接口提供了电.
同理服务器程序最好也提供接口浏览器通过统一的接口给服务器然后我们从服务器接口中获取我们想要的数据.获取数据之后我们可以把数据交给第三方程序来处理逻辑这样就做到与服务器业务分离了good iead.
【文章福利】小编整理了一些学习资料、教学视频和学习路线图共享在群文件,资料包括《Andoird音视频开发必备手册 音视频最新学习视频 大厂面试真题 2022最新学习路线图 项目实战源码》等等(C/C ,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs),免费分享,有需要的可以搜索788280672加群自取~希望对大家有帮助!
事实上现在的http服务器就是这么做的不过很复杂而已.下一篇开始为您介绍这些接口.
附录:HTTP Request Header 请求头本文地址:百科生活频道 https://www.neebe.cn/live/927995.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!