2018/3/10 手把手教你实现一个应用层协议

身为一名程序员,怎么能不会自定义协议呢?

大家都知道在网络传输当中,我们的TCP/IP协议是分为四层的,分别是应用层,传输层,网络层,链路层,而每一层的协议都有着各不相同职责。

应用层:将数据报文按照一定格式组装,最典型的例子:http,ftp等协议

传输层:将一个完整报文按照一定格式切割个几个小报文,典型代表:tcp,udp等协议

网络层:负责数据报文在网络中传输的协议。典型:ip协议

链路层:硬件相关

今天我们来基于Netty实现一个自定义的应用层协议吧。

首先,我们抓下包,看看http协议的报文格式

2018/3/10 手把手教你实现一个应用层协议_第1张图片

2018/3/10 手把手教你实现一个应用层协议_第2张图片

2018/3/10 手把手教你实现一个应用层协议_第3张图片

这里面,可以看到http协议是分为了行,头,体三层,每一层都有多个字段,而每个字段都可以对应一个或者多个参数。所以我们只要仿照其实现自定义协议就行;

首先,我们也来自定义一个请求头

2018/3/10 手把手教你实现一个应用层协议_第4张图片

将请求头设置进具体的报文类

2018/3/10 手把手教你实现一个应用层协议_第5张图片

之后我们还需要自定义一个编解码处理器,因为在网络传输中流是无法掌控的,就像水一样,只有设置分隔符,或者自定义协议才能做到区分,而自定义协议,则必须要自己实现与协议相匹配的的编解码器;

编码器

2018/3/10 手把手教你实现一个应用层协议_第6张图片

解码器

2018/3/10 手把手教你实现一个应用层协议_第7张图片

之后自定义一个Netty处理类

2018/3/10 手把手教你实现一个应用层协议_第8张图片

创建一个在管道初始化类,将我们的编解码器和处理器设置进去

2018/3/10 手把手教你实现一个应用层协议_第9张图片

写一个客户端

2018/3/10 手把手教你实现一个应用层协议_第10张图片

以及一个服务端

2018/3/10 手把手教你实现一个应用层协议_第11张图片

转载于:https://www.cnblogs.com/yangfeiORfeiyang/p/8541928.html

你可能感兴趣的:(2018/3/10 手把手教你实现一个应用层协议)