Netty指南(6)--- HTTP协议开发

前言

本章内容包括HTTP协议介绍、HTTP协议在Netty中的应用,并提供基于HTTP协议栈的Netty示例代码。

HTTP介绍

HTTP — Hyper Text Transfer Protocol 超文本传输协议,是建立在TCP/IP传输协议上的应用层协议,它属于应用层的面向对象协议,由于其简洁、快速的方式,适用于分布式超媒体信息系统。
HTTP协议时目前Web开发的主流协议,基于HTTP的应用非常广泛,因此掌握HTTP的开发非常重要。
本文主要介绍基于Netty的HTTP协议栈开发,由于Netty的HTTP协议栈是基于NIO通信框架开发的,因此Netty的HTTP协议也是非阻塞的。

HTTP 协议的特点

  • 简单 — 客户向服务端请求服务时,只需要制定服务的URL,携带必要的请求参数或请求消息体。
  • 灵活 — HTTP允许传输任意类型的数据对象,传输的内容类型由HTTP消息头中的ContentType标记。
  • 无状态 — HTTP是无状态协议,无状态指协议对事务处理没有记忆功能,意味着后续请求处理需要之前的信息只能重传,这样可能导致每次传输数据量增大,但对于服务器不需要处理之前的信息时,就显得轻量。

HTTP URL(Uniform Resource Locator)

  • WWW:World Wide Web — 万维网
  • URL:Uniform Resource Locator — 统一资源定位符
  • URI:Uniform Resource Identifier — 统一资源标识符
    URL是一种特殊类型的的URI,是WWW上每个信息资源统一且唯一的地址,它最初是由 Tim Berners-Lee 发明用来作为WWW的地址,现在它已经被万维网联盟编制为互联网标准RFC1738。
    HTTP URL的地址如下:
    http :// host[:port] / abs_path
  • http:表示要通过HTTP协议来定位网络资源。
  • host:表示合法的Internet主机域名或IP地址,以目前主流的IPV4协议为例,IPV4使用4字节点分十进制表示,例如:127.0.0.1
  • port:用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接,如果port是空,则使用缺省端口80,当服务器的端口不是80的时候,需要显式指定端口号。
  • abs_path:指定请求资源的URI,如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器就帮我们完成了。

HTTP Request

HTTP的请求消息由三部分组成,具体如下图所示。

HTTP Response

HTTP的响应消息由三部分组成,具体如下图所示。

Choice wechat
关注公众号,获取文章更新通知。
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!