目录
- 1.软件架构
- 2.网络编程三要素
- 3.IP
- 1.IPV4
- 2.IPV6
- 4.端口号
- 5.协议
- 1.UDP协议
- 1.单播
- 2.组播
- 3.广播
- 2.TCP协议
- 1.三次握手
- 2.四次挥手
1.软件架构
①
C/S
:客户端/服务器
在用户本地需要下载安装客户端程序,在远程有一个服务器端程序。
- 优点:画面精美,用户体验好
- 缺点:用户需要下载更新
②
B/S
:浏览器/服务器
只需要一个浏览器,用户通过指定网址访问对应的服务器。
- 优点:不需要开发客户端,只需要页面+服务端,
用户不需要下载,打开浏览器就能使用- 缺点:如果应用过大,用户体验收到影响
2.网络编程三要素
IP,端口号,网络协议
。
①IP:设备在网络中的地址,是唯一的标识
全称:Internet Protocol
,是互联网协议地址,也称IP地址
是分配给上网设备的数字标签。
②端口号:应用程序在设备中唯一的标识
③协议:数据在网络传输中的规则,常见的协议有:UDP、TCP、HTTP、HTTPS、FTP
3.IP
1.IPV4
①全称:
Internet Protocol version 4
,互联网通信协议第四版
采用32位
地址长度,分成4组
使用点分十进制
表示
②IPV4的
地址分类形式
:
公网地址
(万维网使用)和私有地址
(局域网使用)。- 192.168.开头的就是私有址址,范围即为192.168.0.0–192.168.255.255,专门为组织机构内部使用,以此节省IP
③特殊ip地址:
本地回环地址
:127.0.0.1
或者localhost,表示本机ip。
④Windows的CMD命令:
ipconfig
:查看本机IP地址
ping
:检查网络是否连通
2.IPV6
全称:
Internet Protocolversion 6
,互联网通信协议第六版
由于互联网的蓬勃发展,IP地址的需求量愈来愈大,而IPV4的模式下IP的总数是有限的
采用128位
地址长度,分成8组。
使用冒分十六进制
表示,特殊情况使用0位压缩表示
法。
//获取InetAddress的对象InetAddress address = InetAddress.getByName("127.0.0.1");
4.端口号
应用程序在设备中唯一的标识。
端口号:由两个字节
表示的整数,取值范围:0~65535
其中0~1023之间的端口号用于一些知名的网络服务或者应用
我们自己使用1024以上的端口号就可以了
注:一个端口号只能被一个应用程序使用。
5.协议
计算机网络中,连接和通信的规则被称为网络通信协议
OSI参考模型
:世界互联协议标准,全球通信规范,单模型过于理想化,未能在因特网上进行广泛推广。TCP/IP参考模型
(或TCP/IP协议): 事实上的国际标准。
1.UDP协议
- 用户数据报协议(User Datagram Protocol)
- UDP是
面向无连接
通信协议。
速度快
,有大小限制一次最多发送64K,数据不安全
,易丢失数据.
UDP协议发送数据:
public class Send{public static void main(String[] args) throws IOException {//创建DatagramSocket对象DatagramSocket ds = new DatagramSocket();//打包数据String str = "你好!!";byte[] bytes = str.getBytes();InetAddress address = InetAddress.getByName("127.0.0.1");int port = 10006;DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);//发送数据ds.send(dp);//释放资源ds.close();}
}
UDP协议接收数据:
public class Receive{public static void main(String[] args) throws IOException {//创建DatagramSocket对象:接收时绑定的端口号要与发送时的端口保持一致DatagramSocket ds = new DatagramSocket(10086);//接收数据包byte[] bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes, bytes.length);ds.receive(dp);//解析数据包byte[] data = dp.getData();int length = dp.getLength();InetAddress address = dp.getAddress();int port = dp.getPort();System.out.println("接收到数据:" + new String(data, 0, length));System.out.println("该数据是从" + address + "这台电脑中的" + port + "这个端口号发出的");//释放资源ds.close();}
}
UDP的三种通信方式:
单播,组播,广播
1.单播
单播是一种UDP通信的方式,其中一台发送方的计算机向一台接收方的计算机发送数据包。
在单播通信中,发送方和接收方之间是一对一的关系
,数据包只会发送到指定的接收方。
单播通信适用于点对点通信或单个目标的广播通信。
2.组播
组播是一种UDP通信的方式,其中
一台发送方的计算机可以同时向多个接收方
的计算机发送数据包。
在组播通信中,发送方将数据包发送到一个特定的组播IP地址,而不是单独的目标IP地址。
所有加入该组播组的接收方都可以接收到发送方发送的数据包。
组播通信适用于需要同时向多个接收方传输相同数据的场景,如视频会议、多媒体广播等。
使用组播可以有效地减少网络带宽的消耗和系统负载
。
组播地址:224.0.0.0 ~ 239.255.255.255
其中224.0.0.0 ~ 224.0.0.255
为预留的组播地址
3.广播
在UDP通信中,广播是一种发送方向局域网中的
所有计算机发送数据包
的方式。
发送方将数据包发送到广播IP地址,该IP地址被定义为特定的网络地址(255.255.255.255
),表示发送给整个局域网内的所有计算机。
使用广播通信,发送方可以将数据包一次性发送给所有计算机,而无需指定单独的目标IP地址。
所有接收方都可以接收到发送方发送的数据包。
广播通信通常用于向局域网内的所有设备广播信息,例如在局域网内发现其他设备或进行网络设备配置。
2.TCP协议
- 传输控制协议TCP(Transmission Control Protocol)
- TCP协议是
面向连接
的通信协议。
速度慢
,没有大小限制,数据安全
。
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象
通信之前要保证连接已经建立
通过Socket产生IO流来进行网络通信
客户端发送数据:
public class Client {public static void main(String[] args) throws IOException {//发送数据//创建Socket对象Socket socket = new Socket("127.0.0.1", 10001);//从连接通道中获取输出流OutputStream os = socket.getOutputStream();//写出数据os.write("你好".getBytes());//释放资源os.close();socket.close();}
}
服务器接收数据:
public class Server {public static void main(String[] args) throws IOException {//接收数据//ServerSocket ss = new ServerSocket(10001);//监听用户的连接Socket socket = ss.accept();//从连接通道中获取输入流数据InputStream is = socket.getInputStream();//解决中文乱码InputStreamReader isr = new InputStreamReader(is);//使用缓冲流提高读取效率BufferedReader br = new BufferedReader(isr);int b;while ((b = br.read()) != -1) {System.out.println((char) b);}//释放资源socket.close();ss.close();}
}
1.三次握手
确保连接建立:
①客户端向服务器发出连接请求
,等待服务器确认。
②服务器向客户端返回一个响应
,告诉客户端收到了请求。
③客户端向服务器再次发出确认
信息,连接建立。
2.四次挥手
确保连接断开,且数据处理完毕:
①客户端向服务器发出取消连接请求
②服务器向客户端返回一个响应,表示收到客户端取消请求
③服务器将最后的数据处理完毕,服务器向客户端发出确认取消信息
④客户端再次发送确认
消息,连接取消