http服务器是什么,服务器组成部分介绍

经过多年的web开发,http真的是一个熟悉的陌生人(经常使用,但是从头到尾整理起来真的很难) 。其实真的有必要说一下http的概述和http在netty中的应用,再来说说netty对tomcat的功能的实现和请求服务的功能 。
(一)Http协议概述
1.什么是Http协议HTTP是一个面向对象的协议,属于[应用层] 。由于其简单、快速的方式,适用于分布式超媒体信息系统 。
2.HTTP协议的主要特点客户端/服务器支持
模式 。
简单快捷
当从客户机服务器请求服务时,只需要传输请求方法和路径 。GET、HEAD和POST常用于请求 。每种方法都指定了客户与
联系人的类型是不同的 。由于HTTP协议简单,HTTP服务器的程序规模小,所以通信速度很快 。
灵活的
HTTP允许传输任何类型的数据对象 。被传输的类型由内容类型来标记 。
无连接传输模式
无连接意味着每个连接只能处理一个请求 。在服务器处理完客户的请求并收到客户的响应后,它会断开连接 。这样,可以节省传输时间 。
无国籍的
HTTP是一种无状态协议 。无状态意味着协议没有用于事务处理的内存 。缺少状态意味着如果后续处理需要以前的信息,则必须重新传输它,这可能导致每个连接传输的数据量增加 。另一方面,当服务器不需要以前的信息时,它的响应更快 。HTTP协议是无状态的 。其实应用的时候,很多情况下还是回复的方式有状态的 。
(二)Http协议交互过程
协议交互的本质是指协议的两端(客户端和服务器端) 。互联网上没有协议就是乱,就像现实中没有法律也会乱一样 。
1.传输数据
一般数据传输都是基于TCP/IP,我们熟悉的Socket编程都体现在开发语言中 。
2.交换数据
数据交换的本质是指两端(客户端和服务器端)都能识别对方发送的数据 。那么就需要制定一套【消息编码】的格式,双方对数据进行编码,发送给对方 。
对应于Http的请求和响应消息
注意:我们可以通过包捕获工具(fiddler)直接看到消息格式 。
消息商定后,两端需要对其进行解码和编码 。
3.内容组成为3 。Http协议
请求方法
方法描述GET请求指定的页面信息并返回实体体 。HEAD类似于get请求,只是返回的响应中没有具体的内容,用来获取header POST,并向指定的资源提交数据以处理请求(比如提交表单或上传文件) 。数据包含在请求体中 。员额请求可能导致建立新的资源和/或修改现有资源 。把从客户端传输到服务器的数据替换指定文档的内容 。DELETE请求服务器删除指定的页面 。CONNECTHTTP/1.1协议是为可以将连接更改为管道模式的代理服务器保留的 。选项允许客户端查看服务器的性能 。TRACE回显服务器收到的请求,主要用于测试或诊断 。
部分请求标题
请求头表示主机接受请求的服务器的地址,可以是IP:端口号或用户代理发送请求的应用程序的名称 。Connection指定与连接相关的属性,例如connection:keep-alive Accept-charset,它通知服务器它可以发送的Accept-Encoding格式、它可以发送的数据压缩格式以及它可以发送的Accept-Language 。
部分响应头
响应报头描述服务器服务器应用软件的名称和版本Content-Type响应主体的类型(是图片还是二进制字符串)Content-Length实体报头字段用于指示实体主体的长度,以字节存储的十进制数指示响应主体的长度,响应主体中使用的编码,响应主体中使用的数据压缩格式,以及响应主体中使用的内容语言 。
部分响应状态
状态码表示200响应成功302跳转,跳转地址由响应头中的Location属性指定(JSP中Forward和Redirect的区别) 。客户端请求有语法错误,服务器无法识别 。403服务器收到请求,但拒绝提供服务(认证失败) 。服务器没有内部错误 。
(二)基于Netty 的Http协议实现过程分析
源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-io与nio线程模型reactor模型(上)(53)/nioHttp协议分为三个部分:
1.远程数据传输
2.消息编码和解码
3.业务处理
但如果是基于Http开发常用应用,完全没有必要重复造轮子,只需要实现业务就可以了 。成熟的中间件有Tomcat、Jetty和Jboos 。这其中有一个缺点,比较重 。如果需要轻量级实现,可以采用:netty或者JDK自返回http实现JDK Http源代码 。见:com . sun . net . http server . http server
netty 实现http源代码:nio/http 。
1.初始服务器引导
2.通过通道初始化器的初始管道
3.基于SimpleChannelInBoundHandler的HTTP服务器处理类


推荐阅读