Web服务器基础知识讲解以及四种IO模型介绍

HTTP工作流程:

一次完整的HTTP请求事务包含以下四个环节:

  • 建立起客户机和服务器连接。
  • 建立连接后,客户机发送一个请求给服务器。
  • 服务器收到请求给予响应信息。
  • 客户端浏览器将返回的内容解析并呈现,断开连接。

 

HTTP协议结构

请求报文

- 报文头(只有一行)

结构:method uri version

- method

HTTP的请求方法,一共有9中,但GET和POST占了99%以上的使用频次。GET表示向特定资源发起请求,当然也能提交部分数据,不过提交的数据以明文方式出现在URL中。POST通常用于向指定资源提交数据进行处理,提交的数据被包含在请求体中,相对而言比较安全些。

- uri

用来指代请求的文件,≠URL。

- version

HTTP协议的版本,该字段有HTTP/1.0和HTTP/1.1两种。

- 请求头(多行)

在HTTP/1.1中,请求头除了Host都是可选的。包含的头五花八门,这里只介绍部分。

- Host:指定请求资源的主机和端口号。端口号默认80。

- Connection:值为keep-alive和close。keep-alive使客户端到服务器的连接持续有效,不需要每次重连,此功能为HTTP/1.1预设功能。

- Accept:浏览器可接收的MIME类型。假设为text/html表示接收服务器回发的数据类型为text/html,如果服务器无法返回这种类型,返回406错误。

- Cache-control:缓存控制,Public内容可以被任何缓存所缓存,Private内容只能被缓存到私有缓存,non-cache指所有内容都不会被缓存。

- Cookie:将存储在本地的Cookie值发送给服务器,实现无状态的HTTP协议的会话跟踪。

- Content-Length:请求消息正文长度。

 

另有User-Agent、Accept-Encoding、Accept-Language、Accept-Charset、Content-Type等请求头这里不一一罗列。由此可见,请求报文是告知服务器请求的内容,而请求头是为了提供服务器一些关于客户机浏览器的基本信息,包括编码、是否缓存等。

- 空行(一行)

- 可选消息体(多行)

响应报文

响应报文是服务器对请求资源的响应,通过上面提到的方式同样可以看到,同样地,数据也是以"\r\n"来分割。

- 报文头(一行)

结构:version status_code status_message

- version

描述所遵循的HTTP版本。

- status_code

状态码:指明对请求处理的状态,常见的如下。

- 200:成功。

- 301:内容已经移动。

- 400:请求不能被服务器理解。

- 403:无权访问该文件。

- 404:不能找到请求文件。

- 500:服务器内部错误。

- 501:服务器不支持请求的方法。

- 505:服务器不支持请求的版本。

- status_message

显示和状态码等价英文描述。

- 响应头(多行)

这里只罗列部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值