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

做了多年web开发,http真是熟悉的陌生人(经常在用,但是从头到尾理清楚真的是很有难度的),其实http概述和netty中的http应用真有必要说下,一起聊聊netty实现tomcat的功能,请求服务的功能。 (一)Http协议概述 1.什么是Http协议 HTTP是一个属于【应用层】的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。 2.HTTP协议的主要特点 支持客户/服…

进行了很多年web开发,http真的是熟悉的陌生人(常常在使用,可是从头至尾理清晰真的是很有困难的),实际上http概述和netty中的http运用真必须说下,一起聊聊netty完成tomcat的作用,请求服务项目的作用。

http概述,Netty实现高性能的HTTP服务器

(一)Http协议概述

  • 1.什么叫Http协议

HTTP是一个属于【网络层】的面向对象编程的协议,因为其简单、迅速的方法,适用分布式系统垂直搜索信息系统软件。

  • 2.HTTP协议的主要特点

适用顾客/服务器方式。

简易迅速

顾客向服务器请求服务项目时,只需传递请求方式和途径。请求方式常见的有GET、HEAD、POST。每一种方式要求了用户与

服务器联络的种类不一样。因为HTTP协议简易,促使HTTP服务器的系统经营规模小,因此通讯速率迅速。

灵便

HTTP容许传送随意种类的信息目标。已经传送的种类由Content-Type进行标识。

无联接

无衔接的含意是限定每一次联接只解决一个请求。服务器处理完顾客的请求,并接到用户的回复后,即断开。选用这类方法可以节约传送时长。

无状态

HTTP协议是无状态协议。无状态就是指协议针对事务管理并没有记忆力。缺乏情况代表着假如后面解决必须前边的信息,则它务必重新传输,那样很有可能造成每一次联接传递的信息量扩大。另一方面,在服务器不用此前信息时它的回复就迅速。从HTTP协议而言是无状态的,实际上在使用的情况下,许多状况根据回复的方法也是有情况的。

(二)Http协议互动全过程

协议互动实质就是指协议两边(手机客户端、服务器端),互联网技术上并没有协议是错乱的,正如假如现实生活中并没有法律法规也会弄乱一样。

1.传送数据

传输数据一般根据TCP/IP 完成,反映到编程语言上便是人们所了解的Socket 程序编写。

2.互换数据信息

互换数据信息实质就是指,两边(手机客户端、服务器端)能分别鉴别另一方所上传的数据信息。那麼这就需用制订一套【报文格式编号】文件格式,彼此以该文件格式编码数据发给另一方。

Http 相匹配的Request 与Response报文格式

http概述,Netty实现高性能的HTTP服务器
http概述,Netty实现高性能的HTTP服务器

注: 我们可以根据抓包工具(fiddler)可以同时见到该报文格式。

报文格式承诺好之后两边都要对它进行编解码和编号实际操作

http概述,Netty实现高性能的HTTP服务器

3.Http协议具体内容构成

请求方式

方法叙述GET请求特定的网页页面信息,并回到实体线行为主体。HEAD类似get请求,只不过是回到的响应中并没有详细的具体内容,用以获得报头POST向特定网络资源递交信息完成解决请求(例如表单提交或是文件上传)。数据信息被包括在请求体里。POST请求很有可能会致使新的資源的构建和/或已经有网络资源的改动。PUT从手机客户端向服务器传递的数据信息替代特定的文本文档的具体内容。DELETE请求服务器删掉选定的网页页面。CONNECTHTTP/1.1协议中预埋给可以将联接改成管路方法的代理商服务器。OPTIONS容许手机客户端查询服务器的特性。TRACE回显服务器接到的请求,主要运用于检测或确诊。

一部分请求头

请求头表明Host接纳请求的服务器详细地址,可以是IP:端口,还可以是网站域名User-Agent推送请求的应用软件名字Connection特定与联接有关的特性,如Connection:Keep-AliveAccept-Charset通告服务器端可以推送的编码格式Accept-Encoding通告服务器端可以推送的数据信息压缩格式Accept-Language通知服务器端可以推送的语言表达

一部分响应头

响应头表明Server服务器应用软件手机软件的命名和版本号Content-Type响应文章正文的种类(是照片或是二进制字符串数组)Content-Length实体线报头域用以指出实体线文章正文的长短,以字节数方法储存的十进制数据来表明响应文章正文长短Content-Charset响应文章正文应用的编号Content-Encoding响应文章正文应用的数据信息压缩格式Content-Language响应文章正文应用的语言表达

一部分响应情况

状态码表明200响应取得成功302自动跳转,跳转详细地址根据响应头里的Location特性特定(JSP中Forward和Redirect中间的差别)400手机客户端请求有拼写错误,不可以被服务器鉴别403服务器接受到请求,可是回绝出示服务项目(验证不成功)404请求网络资源不会有500服务器内部错误

http概述,Netty实现高性能的HTTP服务器

(二)根据Netty 完成Http协议全过程剖析

源代码:https://github.com/limingios/netFuture/tree/master/源码/『互联网技术构架』软件体系结构-io与nio进程实体模型reactor模型(上)(53)/nio

Http协议分成三一部分:

1.远程数据传输

2.报文格式编解码

3.业务流程解决

但如果是开发设计根据Http一般运用,彻底没需要反复造轮子,,大家只需完成业务流程就可以。现较为完善的分布式数据库有:Tomcat、Jetty、Jboos。这种正中间有一个缺陷是偏重,假如必须轻巧完成可选用:netty 或JDK自还http 完成JDK Http源代码参照:com.sun.net.httpserver.HttpServer

  • netty 完成http

源代码:nio/http中。

1.原始ServerBootstrap

2.根据ChannelInitializer 原始 pipeline

3.根据SimpleChannelInboundHandler HttpServer解决类

import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.ServerSocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.http.*;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import java.net.ContentHandler;
import java.util.concurrent.ThreadFactory;
/**
* Created by idig8.com
*/
public class HttpSimpleServer {
//open 运行服务项目
public void openServer() {
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.channel(NioServerSocketChannel.class);
EventLoopGroup boss = new NioEventLoopGroup(1);
EventLoopGroup work = new NioEventLoopGroup(8);
bootstrap.childHandler(new ChannelInitializer<NioSocketChannel>() {
@Override
protected void initChannel(NioSocketChannel ch) throws Exception {
ch.pipeline().addLast(\"http-decoder\", new HttpRequestDecoder());
ch.pipeline().addLast(\"http-aggregator\", new HttpObjectAggregator(65536));
ch.pipeline().addLast(\"http-encoder\", new HttpResponseEncoder());
ch.pipeline().addLast(\"http-server\", new HttpServerHandler());
}
});
bootstrap.group(boss, work);
try {
ChannelFuture future = bootstrap.bind(8080).sync();
System.out.println(\"服务项目运行:8080\");
future.channel().closeFuture().sync();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
boss.shutdownGracefully();
work.shutdownGracefully();
}
}
private static class HttpServerHandler extends SimpleChannelInboundHandler {
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
response.headers().set(HttpHeaderNames.CONTENT_TYPE, \"text/html;charset=UTF-8\");
String html = \"<!DOCTYPE html>n\"
\"<html lang=\"en\">n\"
\"<head>n\"
\" <meta charset=\"UTF-8\">n\"
\" <title>hello idig8.com</title>n\"
\"</head>n\"
\"<body>n\"
\"hello idig8.comn\"
\"</body>n\"
\"</html>\";
response.content().writeBytes(html.getBytes(\"UTF-8\"));
ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
}
}
public static void main(String[] args) {
HttpSimpleServer simpleServer = new HttpSimpleServer();
simpleServer.openServer();
}
}
http概述,Netty实现高性能的HTTP服务器

完成全过程剖析

  1. 创建联接载入信息流
  2. 编解码Request
  3. 业务流程解决
  4. 编号Response
  5. 回到信息关掉联接

Channel 与 ChannelPipeline

1.Channel:

a. ServerSocketChannel

b. SocketChannel

2.pipeline:一个pipeline 之中包括了好几个ChandlerHandler,并且是有先后顺序的

3.ChandlerHandler

a. HttpRequestDecode:编解码要求

b. HttpResponseEncode :编号回到结论

在 Netty 中每一个 Channel 都只有一个 ChannelPipeline 与之相匹配, 他们的构成关联如下所示:

http概述,Netty实现高性能的HTTP服务器

一个 Channel 包括了一个 ChannelPipeline, 而 ChannelPipeline 中又维护保养了一个由 ChannelHandlerContext 构成的双向链表. 这一单链表的头是 HeadContext, 链表的尾是 TailContext,而且每一个 ChannelHandlerContext 中又关系着一个 ChannelHandler

bootstrap.childHandler(new ChannelInitializer<NioSocketChannel>() {
@Override
protected void initChannel(NioSocketChannel ch) throws Exception {
ch.pipeline().addLast(\"http-decoder\", new HttpRequestDecoder());
ch.pipeline().addLast(\"http-aggregator\", new HttpObjectAggregator(65536));
ch.pipeline().addLast(\"http-encoder\", new HttpResponseEncoder());
ch.pipeline().addLast(\"http-server\", new HttpServerHandler());
}
});

HttpRequest 在netty 之中的表明构造

http概述,Netty实现高性能的HTTP服务器

HttpResponse在netty 之中的构造

http概述,Netty实现高性能的HTTP服务器

PS:讲了下http协议和怎样根据netty进行http服务项目。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月27日 上午9:26
下一篇 2022年5月27日 上午9:27

相关推荐

  • 好玩的网络游戏推荐,2020好玩的网络游戏合集

    九月天气不冷不热,最主要做的就是期待十一假期早点来!给自己先放个小假,一起看看哪十个游戏适合9月玩? 九月十大热游:http://www.40407.com/hd/2017/sdyx/index.php?id=113 《万剑》 2017年9月26日,《万剑》首测。《万剑》是哥们网2017年重磅推出的武侠ARPG新游。游戏传承中国武侠文化精髓,采用全新PK引擎和图像渲染技术,带玩家畅享轻松剑武侠,体…

    2022年9月12日
    500
  • 无边框显示器什么牌子好(推荐三款高性价比显示器)

    在我们平常的工作和生活中,每天都会和店内显示器打交道,如果没有一款合适的显示器,工作起来也不会得心应手,娱乐游戏也不够尽兴。目前,市面上显示器品牌鱼龙混杂,质量良莠不齐,有一些比较一般的显示器不能给你带来好的体验不说,甚至危害眼睛健康,今天为大家带来的三款飞利浦的2K显示器,不光显示效果细腻、品质有保障,而且还各具特色功能,都是同价位上的佼佼者。 第一款:飞利浦275M8,这款显示器尤其适合游戏玩…

    2022年10月24日
    1790
  • ps怎么去水印还原照片,ps处理水印的有效方法介绍

    最近镇魂一出,很多镇魂女孩都被朱一龙的颜get到点,想要发美照到朋友圈,可是这上边有水印怎么办,我不想发有水印的图片呢,这个电子版的文件有水印,没办法用,怎么办?不要怕,没有什么是强大的photoshop解决不了的。 Ps快速完美的去除图片/文件上的水印,还原最真实的样子,让你美美的发图,不耽误工作内容。快跟我一起学习如何快速的去除水印吧。 本教程主要是介绍水印的去除的非常实用方法。思路:先把复制…

    2022年6月11日
    940
  • 微信怎么查看聊天记录,查看微信聊天记录的方法

    手机用户都知道苹果手机微信聊天记录都是存储在手机内存中的,如果手机内存没有被清理或者手机没有发故障,我们就可以在手机微信上查看到微信聊天记录。如果手机内存被清理了,我们怎么查看删除的微信聊天记录呢?现在各式各样的微信查看器也不见的有什么成效。经过小编亲测下面的教程值得一试。下面就是给大家带来的教程。 苹果手机微信聊天记录: 一、今天介绍的苹果6如何恢复删除的短信主要借助强力苹果恢复精灵来解决,那么…

    2022年7月10日
    590
  • 2020最实用的三款老人手机(这几款买给父母是首选)

    虽然已经2020年了,智能手机已经得到了近乎饱和的普及。不过,还是有很多年长的长辈对智能手机的操作不习惯,学不来像年轻人一样轻松快捷的使用。对于他们来说,按键机式的老人机是最好用的手机,功能简单、操作简单。而许多人也因为老人机简单易操作的特点,而给家中的长辈购买给他们使用,但老人机质量参吃不齐,下边,小编就给大家介绍3款价格略贵,500元上下,但质量和做工都非常优秀的4G老人机给大家。 AGMM5…

    2022年9月10日
    450
  • 机器人的作用有哪些,机器人的主要8个用途介绍

    导语:随着人工智能和机器人技术的进步,机器人变得越来越人性化。许多人可能仍然认为机器人是科幻小说里面才出现的,但它们在今天都成为了科学事实。在研究实验室里,机器人已经变得更多了。那么在接下来的二十到三十年里,机器人将带来一个崭新的世界。接下来呢就由探秘志小编为大家揭秘关于未来机器人的十大功能,感兴趣的不妨一起往下看! 关于未来机器人的十大功能 1、有皮肤 加州大学洛杉矶分校和华盛顿大学的研究人员开…

    2022年6月14日
    1160
  • 怎么在网上推广产品,新手低投入推广方法分享

    很多营销人员和老板,都能说出十几种网络营销方法,但是具体怎么去用,可能也知道,但是我们要知道,营销不是你知道就行,营销是执行力,营销要讲究方法,那么几十种的网络营销推广方法,企业怎么去用呢? 网络营销方法: 1、搜索引擎:在企业有网站的情况下,优化网站关键词排名,或者直接投钱做竞价排名,没有网站的情况下,就去别的网站发帖宣传推广。 2、电子邮件:在客户自愿提供邮箱的情况下,你需要用电子邮件群发工具…

    2022年7月10日
    920
  • 免费网络营销软件有哪些,十大高效的营销神器推荐

    电商平台Shopify的应用商店提供了成千上万的应用程序,可以改善卖家的业务表现和在线销售,并在此过程中促进PPC营销活动。本文将介绍7个较受卖家欢迎且免费的工具。 1、SalesandOrders的GoogleShopping推送和广告工具 使用GoogleShopping推送和广告应用程序,可以在一个易于更新的集成位置管理Google广告、Microsoft广告和Facebook广告的购物推送…

    2022年5月19日
    1.3K0
  • 无本钱怎么快速挣钱,一天挣300-500的方法

    不知道大家发现没有,现在这个社会随着年龄以及工作经验的增长,工资也大多有了一定的涨幅。但是不论怎么努力,最后却发现依然存不下钱。这,便是经济学当中常说的帕金森效应,即收入变高,但开销也跟着变高,而存款却没有丝毫的改变。 说到存钱,很多人应该都曾经幻想过,如果哪天自己有100万,便能做好多好多的事情。毕竟,现在这个社会,如果想要日子过得稍微好一点,100万存款只能算是起步价,而往上,则上不封顶。 1…

    2022年10月12日
    1260
  • 新闻营销的优势有哪些,盘点网络公共关系的利弊

    长期以来,新闻营销始终是企业品牌推广的重头戏,一般大型企业也有专门的公关经理负责新闻传播。新闻营销为什么这么受企业青睐呢?口碑侠营销顾问认为主要还是新闻营销有一些在品牌宣传方面的优势和作用无法替代。 新闻营销的优势解析 新闻营销可以让信息更具有时效性的出现在搜索引擎排名中,可以用多角度多方面的来表达企业文化和内涵,深入解读产品或传播品牌,从而影响消费者购买决策,从消费者成交环节截取更多的客户,在市…

    2022年5月20日
    730

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信