什么是Web Server?
一个Web Server就是一个服务器软件(程序),或者是运行这个服务器软件的硬件(计算机)。其主要功能是通过HTTP协议与客户端(通常是浏览器(Browser))进行通信,来接收,存储,处理来自客户端的HTTP请求,并对其请求做出HTTP响应,返回给客户端其请求的内容(文件、网页等)或返回一个Error信息。
严格意义上Web服务器只负责处理HTTP协议,只能发送静态页面的内容
简而言之,就是我们要做一个可以相应用户请求(request),然后响应响应的内容(html)给客户的浏览器(Web的用户代理)。浏览器显示请求的Web页面,并提供大量的导航与配置特性。
用户如何与Web Server通信
通常用户使用Web浏览器与相应服务器进行通信。在浏览器中键入“域名”或“IP地址:端口号”,浏览器则先将你的域名解析成相应的IP地址或者直接根据你的IP地址向对应的Web服务器发送一个HTTP请求。这一过程首先要通过TCP协议的三次握手建立与目标Web服务器的连接,然后HTTP协议生成针对目标Web服务器的HTTP请求报文,通过TCP、IP等协议发送到目标Web服务器上。
HTTP协议的基本过程(应用层)
HTTP协议是基于客户端/服务器之间的请求响应进行交互的。
HTTP通信通常发生在TCP/IP连接之上,默认端口是TCP协议的80端口(服务器运行时,会一直在TCP80端口监听,等待连接请求出现),当然其他端口也是可用的。但是HTTP只能TCP协议的基础上进行传输。
意味着,在这一部分,我们需要实现的功能有:
建立连接。连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它绑定在一个端口上,如果成功,就相当于建立了一个虚拟文件。
发送请求。打开一个连接后,客户端吧请求消息送到服务器的监听端口上,完成请求动作。
发送响应。服务器在处理完客户的请求之后,要向客户端发送响应消息。
关闭链接。客户和服务器双方都可以关闭套接字来结束TCP/IP对话。
TCP协议的基本过程(运输层)
我们上面说到,HTTP连接是建立在TCP连接之上的,在应用层层面,由于网络各层之间是透明的,在逻辑上看,是HTTP协议的连接,但是在应用层,HTTP协议是基于TCP连接的(可靠传输)。
客户端与服务器在连接,读写数据,关闭过程中有交互过程。在这一部分,我们需要实现的功能有:
服务器端绑定端口与侦听连接
客户端发送连接请求(这里要考虑到多个客户端的请求,实现高并发)
服务器端回应连接请求
建立连接
读取数据或者发送数据
结束通信关闭链接
一个简单的Web服务器也只是延伸到了运输层,对于网络层,Web服务器项目并没有涉及很多