Java开发需要哪些TCP?
Java开发需要哪些TCP/IP知识,可能题主是想做一些Java网络编程方面的开发。本人做过一些网络编程的项目,对网络编程有比较深入的了解。个人感觉可能需要以下几方面的知识:
第一、Java网络编程的基础。TCP相关的Socket、ServerSocket,UDP相关的DatagramSocket的使用,这是基础。通过这些的使用可以对Java网络编程有基础的了解。
第二、IP地址、端口号的基础知识。了解什么是IP地址,什么是端口号。既然做网络编程开发,就需要知道IP地址,知道端口号。服务端都有自己的监听端口。客户端连接服务端需要知道服务端的IP地址和端口号。
第三、基本的命令使用。例如IP地址查看命令,端口对应TCP连接情况查看命令。ifconfig(Linux)\ipconfig(windows)。端口号查看netstat等。telnet(windows)检测端口监听是否成功。ping检测对端IP地址是否通。
第四、防火墙的开关和简单配置。很多情况下会发现明明对端IP地址是可以ping通,但是就是连接不上,这个时候很有可能是防火墙配置问题。这个时候可以关闭防火墙,配置简单的路由规则,或者清空防火墙的理由规则。
第五、TCP/IP协议的基础知识。了解TCP/IP协议之间的不同层次之间是如何工作的,有助于理解消息的传送。了解IP协议、TCP协议格式。了解TCP协议的三次握手和四次握手。了解网络连接的不同状态CLOSE_WAIT、LISTEN等。
第六、IO只是基础,NIO使用采用更广泛。官方认为NIO为新IO,但很多人将其理解为Non-block。大部分网络编程会使用netty或者mina框架来代替使用jdk的nio编程。
第七、心跳的使用。大部分网络连接通过心跳来检测连接的状态,这个也是一个基础知识。
第八、netty框架的使用。学会使用netty框架。netty框架使用更为广泛。
第九、拆包和粘包的使用。数据从一台机器发送另一台机器,中间需要使用拆包和粘包来完整的接收和处理业务消息。
第十、编解码的使用。可以使用多种编解码技术。例如protobuf、avro、thrift等等等,也可以自定义。还有以下大小端的概念,还有数据类型之间的转换,例如int与byte数组互转,long与byte数组的互转等等。
第十一、抓包工具的使用。通过抓包工具可以分析不同的协议,像HTTP、SSL、TCP等等。
第十二、线程池的使用。
第十三、流量控制。像netty自带流量控制功能。
第十四、网络编程让人头疼的打开文件句柄数过多问题的解决。
......
总之,网络编程的知识不止这些,网络编程时互联网的基础,只是我们大部分人做应用开发,或者是框架已经将这些内容进行了封装,让我们感觉不到它的存在。
本人正在进行网络编程方面知识的整理,后续将以文章的形式进行分享,希望有兴趣的同学互相关注,多提问题,共同进步。
本人具有多年的java开发经验,熟悉多种框架,熟悉网络编程,熟悉java安全编程,熟悉大数据,熟悉多种安全协议,熟悉并发编程,有兴趣的同学可以互相关注,互相学习!!!
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有