需要学习哪些知识?
谢邀~
关于网络编程,我之前也搜集和总结过一些资料,和大家分享一下;因为我是做Java开发的,所以分享的都是Java网络通信的技术和原理。
基本原理网络通信的本质,是将数据从一台计算机传输到另外一台计算机,基于传输协议和网络IO实现,所有的应用通讯都是基于这个原理来实现的,但是为了用起来方便一些,很多语言或框架会屏蔽掉(封装好)一些底层的东西后,提供更容易使用的应用层协议。
传输协议:常见的有http、tcp、udp等,它们也是在Socket的基础上扩展出来的。
网络IO:主要有bio、nio、aio等。
应用级协议刚才说过网络通信的本质是数据从一台计算机到另外一台计算机,要实现这个需求,要做的是把数据(请求)转换成流,通过传输协议发送到远端,远端的电脑接收到请求后对流处理,处理结果转成流,再通过传输协议返回给调用方的电脑。
但是底层的东西太复杂,流这个东西也太抽象,所以行业内推出了很多应用级协议,首先大家可以不用操作流,而是使用一些更容易使用的传输格式,第二,基于这些协议的实现,可以帮你避免操作这么底层的东西(协议传输、流的转换等)。
例如:
RMI:远程方法调用。
SOAP:这个熟悉吧,用于分布式环境、基于XML的信息通信的协议。
JMS:Java消息服务。
XML-RPC:和RMI类似,但是传输格式是XML。
binary-RPC:顾名思义,这个是传输格式是二级制。
实现技术上面都是协议,我们用到的都是基于这个协议的技术(框架),所以如果要学习网络编程,上面的原理要懂,这些可以实际应用到的技术也要掌握,例如:
XFire、Axis:先说最熟悉的,Webservice的框架,都是基于SOAP的。
MQ:基于JMS的实现。
Hessian:基于binary-RPC。
Burlap:基于XML-RPC。
Spring-Remoting:Spring提供的,基于多种协议,包括RMI、XML-RPC、binary-RPC。
Mina:Socket+NIO。
希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、职业发展等方面的见解,希望能得到你的关注;另外,关注我后私信【资料】两个字,可获取架构、大数据、面试等相关资料。Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有