网络分类
- 局域网(0-10km,通过网络设备有线连接)
- 城域网(0-100km,交通信号,视频监控)
- 广域网(因特网:互联网)
网络协议
网络协议分为两种:
- TCP/IP协议:传输控制协议/ip协议
- UDP协议:用户数据报协议
网咯模式:
- OSI7层模型
IP与端口
IP
主机通信间的唯一标识,有IPV4,IPV6两种构成方式,且ip地址不能重复,一旦重复就会出现ip冲突
端口
主机中应用程序对外沟通的唯一标识;ip是主机的标识,端口是应用的标识,只能提供准确的ip号和端口号才能准确的找到主机上的应用。
域名
域名是对ip地址的简化记忆一种名称。
InetAddress类
InetAddress是位于java.net包中提供的用于标识ip地址和主机的类
- getLocalhost() 获取本地主机
- getByName() 根据提供的主机名或者ip获取InetAddress对象
- getHostAddress() 获取主机地址
- getHostName() 获取主机名称
public class InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
InetAddress ip = InetAddress.getLocalHost();
System.out.println(ip);
//根据主机名称获取包含了该主机的名称和地址的对象
System.out.println(InetAddress.getByName("DESKTOP-UM5AJP5"));
System.out.println(InetAddress.getByName("192.168.7.194"));
//获取InetAddress对象表示的ip地址
String addr = ip.getHostAddress();
System.out.println(addr);
String name = ip.getHostName();
System.out.println(name);
System.out.println(ip.getCanonicalHostName());
System.out.println(InetAddress.getLoopbackAddress());
byte[] byt = ip.getAddress();
for (byte b : byt) {
//-128 127 192/168
System.out.println(b);
}
}
}
基于TCP/IP的Socket通信
此通信方法就是由ip地址跟端口号结合,通过Socket对象可实现两台主机之间的通信:Socket分为服务端Socket(java.net.ServerSocket),以及客户端Socket(java.net.Socket)。
其必须存在客户端与服务端的概念。
基于UDP通信
UDP协议是一种面向数据报的通信协议,不需要建立稳定的连接,即与把数据打包发给你,不管你收不收到,收到之后数据是否完整。DatagramSocket是UDP协议通信中的套接字,如需实现通道通信另需一个辅助类DatagramPacket
TCP/IP与UDP的区别
TCP/IP是一种基于稳定连接的协议,即用户之间通过服务器实现稳定连接来实现信息交互,但效率较慢
UDP是一种面向数据报的通信协议,用数据报来实现信息交互,对于数据的正确性不保证,但效率较快
在直播,在线视频等方面UDP传输效率还是远高于TDP/IP的。