八、Netty 教程 – 编写自己的文件服务器
作者:唐亚峰 | 出自:唐亚峰博客
> 前面已经讲了Netty的基本用法(请求/应答,拆包/粘包,序列化),本章以文件下载为例,编写一个相比传统Tomcat,Jetty等容器更加轻量级的文件服务器案例……
HTTP协议介绍
HTTP是一个属于应用层面向对象的协议(HTTP1.O,HTTP1.1,HTTP2.0),简洁,快速响应,几乎适用各大行业应用,覆盖广泛,但相比HTTPS安全性较差(具体区别不做过多概述,有兴趣可以百度百科一下)……
主要特点
- 支持Client/Server模式
- 简单,简洁,客户端只需要根据指定URL,带上规定的参数或者消息体请求即可
- 灵活,允许传输任意对象传输,内容类型由请求头的Content-Type标记
- 无状态,不存在对事务处理记忆功能,若存在后续请求,则需重新传输之前相关信息(容易导致每次连接传输的数据量增大),但在另外一方面,无状态就可以带来快速响应与轻量级负载的优势…
请求方式
GET:获取Request-URI所标识的资源,常见的查询操作
POST:在Request-URI所标识的资源后附加新的提交数据,可以存在消息体中,不一定体现在URL上,用于新增修改等操作
HEAD:请求获取Request-URI所标识的响应消息头
PUT:请求服务器存储的资源,以Request-URI做为标识,一般用作修改操作
DELETE:请求服务器删除Request-URI所标识的记录
TRACE:请求服务器回送收到的消息请求,测试或诊断
CONNECT:保留将来使用
OPTIONS:查询服务器性能,或查询与资源相关的选项和数据
标准路径:http://ip:port/path
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。HTTP的头信息包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。
- 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。
- 请求头标:允许客户端传递关于自身的信息和希望的响应形式。
- 响应头标:服务器和于传递自身信息的响应。
- 实体头标:定义被传送资源的信息。即可用于请求,也可用于响应。