手把手实现web server网页服务器
第一章 实现webserver服务器需要知道什么文章目录
前言
本文章分为五大部分来探讨如何实现HTTP服务器,包含了互斥类,线程池,网络io复用,HTTP协议交互内容,可以帮助我们深入透彻的理解。
一、webserver是什么
一个 Web Server 就是一个服务器软件(程序),或者是运行这个服务器软件的硬件(计算机)。其主 要功能是通过 HTTP
协议与客户端(通常是浏览器(Browser))进行通信,来接收,存储,处理来自 客户端的 HTTP 请求,并对其请求做出 HTTP
响应,返回给客户端其请求的内容(文件、网页等)或返 回一个 Error 信息。
通常用户使用 Web 浏览器与相应服务器进行通信。在浏览器中键入“域名”或“IP地址:端口号”,浏览器则 先将你的域名解析成相应的 IP
地址或者直接根据你的IP地址向对应的 Web 服务器发送一个 HTTP 请 求。这一过程首先要通过 TCP 协议的三次握手建立与目标 Web
服务器的连接,然后 HTTP 协议生成针 对目标 Web 服务器的 HTTP 请求报文,通过 TCP、IP 等协议发送到目标 Web
服务器上。
二、HTTP协议(应用层的协议)
1.简介
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求 - 响应协议,它通常运行在 TCP
之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的 头以 ASCII 形式给出;而消息内容则具有一个类似
MIME 的格式。HTTP是万维网的数据通信的基础。
HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万 维网协会(World Wide
Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task
Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定
义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。
2.概述
HTTP 是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览
器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们
称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如 HTML 文件和图
像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中
间层”,比如代理服务器、网关