
文章目录
前面的文章我们了解到基于tcp实现客户端服务器之间的通信,也是大家常说的C/S结构,C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。(用的是ip,tcp/udp通信协议)
而与之相对应的就是现代社会十分流行的B/S结构。(采用的是上层的http或者https通信协议)
而B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,是对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。

想必大家肯定做过使用Web服务器实现网页开发的项目吧,耳熟能详的WEB服务器如apache,tomcat等,今天我们要做的就是实现自己的Web服务器,这个服务器它接收到浏览器发送的请求报文,对请求报文进行解析,并发送应答报文给浏览器,浏览器解析内容呈现界面给用户。
知道这些后,下面我将简单介绍一下http的一些内容,了解这些之后,我们就可以学习上节利用tcp协议取实现客户端服务器通信一样,这次利用http协议去实现一个自己的简易版的Web服务器~
浏览器与 web 服务器在应用层通信使用的是 HTTP 协议(超文本传输协议),而 HTTP协议在传输层使用的是 TCP 协议。那么浏览器需要和 web 服务器三次握手建 立连接后,才可以发送 HTTP 请求报文,服务器收到请求报文后,向浏览器回复 HTTP 应答报文。
浏览器向服务器发起连接前,需要得到服务器的 IP 及端口。用户在浏览器中通常只 输入网址(网站域名) ,浏览器会通过 DNS 服务查询获取到服务器的 IP 地址。 对于 端口来讲,使用 HTTP 协议的程序一般默认使用 80 端口。
浏览器服务器建立连接后,如果两次以上的请求复用同一个 TCP 连接,则称之为长 连接。如果浏览器发送一次请求报文,服务器回复一次应答就断开连接,下次交互再 重新进行三次握手建立连接,那么就被称作短连接。使用长连接显然是更好一些,可 以减少网络中的同步报文,也使得服务器的响应速度变快。

HTTP 是超文本传输协议
HTTP的名字「超文本协议传输」,它可以拆成三个部分: