网络概念 :
首先.网络可以使不同物理位置上的计算机达到资源共享和通信的目的,在java中提供了专门的网络开发包----java.net来使用,当然也有随着时代技术的进步革新,会出现更多的API。
此文章主要介绍与网络相关的概念,包括 端口,域名,网络服务器,网络通讯协议等,当然不深,因为这里的每一个都是展开都是很深的。有机会大家自行去研究。这里讲的概念都是都是学习网络编程的基础知识,后面我们还可以说明一下,基于TCP协议的Socket编程和基于UDP协议的Socket编程,结合具体案例,介绍使用这两种通讯协议进行网络编程原理及步骤,在此过程中,也会融合一些其他知识点。
网络其实就是一组连接的计算机组,可以共享数据和通讯,可以根据你连接机子的范围分为:局域网,城域网,广域网。
局域网(LAN):局域网是小范围的连接在一起的网络 ,比如某个建筑物内 或者 网吧内。
城域网(MAN):城域网是覆盖城市或者城镇内广大地区的网络,是在一个城市范围内建立的计算机通信网。
广域网(WAN):城市,国家,全球范围。
OSI网络分层模型:
网络上的信息传递也是由不同的层级负责不同的工作任务,但由于各个计算机厂商都采用私有的网络模型,给通信带来了很多麻烦, 因此 国际标准规定 了 一套 国际标准化的 开放系统连接参考模型 (Open System Interconnection OSI ),OSI参考模型是一个开放式体系结构,它规定将网络分为七层,每一层在网络信息传递中都发挥不同的作用。 下面是七层结构 :
应用层:网络服务和最终用户的接口
表示层:数据的表示,安全和压缩
会话层:建立,管理和终止会话
传输层:定义传输数据的协议端口号,实现记忆流控制和差错校验
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层:建立逻辑连接,实现硬件地址寻址,差错校验等功能
物理层:建立,维护,断开物理链接
TCP/IP模型:
另一个著名的模型是 鼎鼎大名的 TCP/IP模型,即传输控制协议/网络互联协议的简称。早期的tcp/ip协议是一个四层结构,在后来的使用过程中,借鉴OSI的七层参考模型,将网络接口层划分为物理层和数据链路层,形成一个五层结构,TCP/IP的前四层与OSI参考的前四层相对应,其功能也非常类似。
IP地址
ip地址的组成: ip地址有32位,4个二进制数组组成,每8位数用原点隔开,由于二进制不便于阅读,所以改成十进制。
ip地址的分类:ip地址包含网络地址和主机地址两部分,网络地址决定了可以分配的最大网络数,主机地址决定了一个网络中可以存在的计算机的最大数量,根据网络地址和主机地址位数的不同,IP地址又分为五类 A B C D E 五类,常用前三种。
ip地址的网络地址由互联网数字分配机构统一分配,以保证ip地址的唯一性。
学会使用ipconfig命令查看网络设置
学会使用ping命令检测网络是否通畅
端口:它是一个16位的整数 ,范围是0-65535,端口是门,端口号是密码 ,是计算机与外界通信的入口和出口。
域名与DNS:域名就是www.XXX.com DNS :是解析域名的。
网络服务器:一般包含(邮件服务器,Web服务器)Web服务器由包含(Microsoft IIS,Apache,Tomcat,WebLogic ,BEA,WebSphere)等。
网络通信协议:计算机之间通信的规则。就好像我们对话使用的语言一样,是英文还是中文。
1.TCP/IP协议:规定其核心是IP协议和TCP协议
2.TCP协议:必须建立连接后,计算机才可以通信
3.UDP协议:无需建立连接,即可通信
Socket : 是一个通信的中转站用于连接客户端与服务器端
java.net 包可以使用
到这里在发散一张图帮助理解
模拟TCP协议的Socket代码:
客户端:
//模拟方法
public void clientLink() throws IOException {
Socket socket = new Socket("localhost",8080);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
//
socket.shutdownOutput();
String reply = null;
//
//
//
socket.close();
}
服务器端:
public void serveLink() throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
//
//
//
socket.close();
}
模拟UCP协议的Socket代码:
发送端:
private void to () throws IOException {
InetAddress ia = null;
String mess ="你好";
ia = InetAddress.getByName("localhost");
DatagramPacket dp = new DatagramPacket(mess.getBytes(),mess.getBytes().length,ia,8800);
DatagramSocket ds = new DatagramSocket();
ds.send(dp);
ds.close();
}
接收端:
private void from() throws IOException {
byte[] buf = new byte[1024];
DatagramPacket dp= new DatagramPacket(buf,1024);
DatagramSocket ds = new DatagramSocket(8800);
ds.receive(dp);
String mess = new String(dp.getData(),0,dp.getLength());
}
-over.song.2022.9.20