网络编程
一、什么是网络编程?
-
网络编程可以让程序与网络上的其他设备中的程序进行数据交互。
二、网络通信基本模式
- 常见的通信模式有如下2种形式:
- Client-Server(CS)
- Browser-Server(BS)
1、Client-Server(CS)
2、Browser-Server(BS)(以后学习的重心)
三、关于网络编程需要学会什么?
1、网络通信的三要素
- 一个消息发送给对方需要哪些关键因素。
2、UDP通信
- 消息直接发送给对象,不确认对方是否在线,不做消息确认。
3、TCP通信
- 基于可靠传输的方式进行的通信模式。
- 解决不同场景的通信需求。
4、即时通信
- 如何实现即时通信,具体是如何实现的。
5、模拟BS系统
- Web系统是如何支持访问到网页的,具体是如何与服务器通信的。
四、实现网络编程关键的三要素
1、IP地址
- 设备在网络中的地址,是唯一的标识。
- IP(Internet Protocol):全称“互联网协议地址”,是分配给上网设备的唯一标识。
- 常见的IP分类为:IPv4、IPv6。
(1)IPv4
- 非常常用的。
(2)PIv6
- IPv6:128位(16个字节),号称可以为地球每一粒沙子编号。
- IPv6分成8个整数,每个整数用四个十六进制位表示,数之间用冒号“ : ”分开。
(3)IP地址基本寻路
(4)IP地址形式
- 公网地址、私网地址(局域网使用)。
- 公网地址:在全球任何地方都可以互联。
- 私网地址:在同一个区域内才可以互联。
- 192.168.开头的就是常见的局域网地址,范围即为192.168.0.0–192.168.255.255,专门为组织机构内部使用。
- 为什么要区分公网地址、私网地址?
- 为了节约IP地址,提高不同通信场景的需求。
- 为什么要区分公网地址、私网地址?
(5)IP常用命令
-
ipconfig:查看本机IP地址
-
ping IP地址:检查网络是否连通
(6)特殊IP地址
-
本机IP:127.0.0.1或者localhost(称为回送地址或本地回环地址,只会寻找当前所在本机)。
-
ping自己当然是互通的啦!!
总结
1、说说网络通信至少需要几个要素?
- IP地址、端口、协议。
2、IP地址是做什么的,具体有几种?
- 定位网络上的设备的,有IPv4、IPv6两种地址。
3、如何查看本机IP地址,如何看是否与对方互通?
- ipconfig:查看本机IP地址;
- ping 对方IP地址:检查是否与对方互通。
4、本机IP是是谁?
- 127.0.0.1或localhost。
(7)IP地址操作类-InetAddress
- 此类表示Internet协议(IP)地址
1. API
方法名称 | 说明 |
---|---|
public static InetAddress getLocalHost() | 返回本主机的地址对象 |
public static InetAddress getByName(String host) | 得到指定主机的IP地址对象,参数是域名或者IP地址 |
public String getHostName() | 获取此IP地址的主机名 |
public String getHostAddress() | 返回IP地址字符串 |
public boolean isReachable(int timeout) | 在指定毫秒内连通该IP地址对应的主机,连通返回true |
package com.app.d1_inetaddress;
import java.net.InetAddress;
/**
目标:IP操作类:InetAddress的API使用
*/
public class InetAddressDemo1 {
public static void main(String[] args) throws Exception {
// 1、获取本机的IP对象
InetAddress ip1 = InetAddress.getLocalHost();
// 获取本机的主机名、IP地址
System.out.println("本机主机名:" + ip1.getHostName());
System.out.println("本机IP地址:" + ip1.getHostAddress());
// 2、获取域名的IP对象
InetAddress ip2 = InetAddress.getByName("www.baidu.com");
// 获取该域名的主机名、IP地址
System.out.println("域名www.baidu.com的主机名:" + ip2.getHostName());
System.out.println("域名www.baidu.com的IP地址:" + ip2.getHostAddress());
// 3、获取公网的IP对象
InetAddress ip3 = InetAddress.getByName("163.177.151.110");
// 获取该域名的主机名、IP地址
System.out.println("公网163.177.151.110的主机名:" + ip3.getHostName());
System.out.println("公网163.177.151.110的IP地址:" + ip3.getHostAddress());
// 4、判断是否连通:ping 5秒之内测试是否可通,通则返回true
System.out.println("ping 163.177.151.110(公网)在5秒内是否连通:" + ip3.isReachable(5000));
}
}
本机主机名:DESKTOP-OPKV6ET
本机IP地址:192.168.40.1
域名www.baidu.com的主机名:www.baidu.com
域名www.baidu.com的IP地址:163.177.151.109
公网163.177.151.110的主机名:163.177.151.110
公网163.177.151.110的IP地址:163.177.151.110
ping 163.177.151.110(公网)在5秒内是否连通:true
Process finished with exit code 0
总结
1、IP地址的代表类是谁?
- InetAddress类
2、如何获取本机IP对象?
- 使用getLocalHost()方法:返回本机IP对象。
3、如何判断与该IP地址对象是否互通?
- 使用isReachable()方法:在指定毫秒内连通该IP的主机,通则返回true。
2、端口
- 应用程序在设备中唯一的标识。
(1)端口号
- 端口号:标识正在计算机设备上运行的进程(程序),被规定为一个16位的二进制,范围是0~65535。
(2)端口类型
- 周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21)。
- 注册端口:1024~49151,分配给用户进程或某些应用程序(如:Tomcat占用8080,MySQL占用3306)。
- 动态端口:49152~65535,之所以称为动态端口,是因为它一般不固定分配某种进程,而是动态分配。
注意:我们自己开发的程序选择注册端口,且一个设备中不能出现两个程序的端口号一样,否则出错。
总结
1、端口号的作用是啥?
- 唯一标识正在计算机设备上运行的进程(程序)。
2、一个设备中,能否出现2个应用程序的端口号一样,为什么?
- 不可以,如果一样会出现端口冲突错误!!
3、协议
- 数据在网络中传输的规则,常见的协议有UDP协议和TCP协议。
(1)通信协议
-
连接和通信数据的规则被称为网络通信协议。
(2)网络通信协议有两套参考模型
- OSI参考模型(理论上):世界互联协议标准,全国通信规范,由于此模型过于理想化,未能在因特网上进行广泛推广。
- TCP/IP参考模型(或TCP/IP协议)(实际开发使用):事实上的国际标准。
OSI参考模型 | TCP/IP参考模型 | 各层对应 | 面向操作 |
---|---|---|---|
应用层 表示层 会话层 | 应用层 | HTTP、FTP、DNS、SMTP… | 应用程序需要关注的:浏览器、邮箱。 程序员一般在这一层开发。 |
传输层 | 传输层 | TCP、UDP… | 选择使用的TCP、UDP协议。 |
网络层 | 网络层 | IP、ICMP… | 封装源和目标IP,进行路径选择。 |
数据链路层 物理层 | 数据链路层+物理层 | 物理寻址 、比特流… | 物理设备中传输 |
(3)传输层的2个常见协议
- TCP(Transmission Control Protocol):传输控制协议。
- UDP(User Datagram Protocol):用户数据报协议。
1. TCP协议特点
-
使用TCP协议,必须双方先建立连接,它是一种 面向连接 的 可靠通信 协议。
-
传输前,采用 “三次握手” 方式建立连接,所以是可靠的。
-
TCP三次握手建立连接
-
TCP四次挥手断开连接
-
-
在连接中可进行大数据量的传输。
-
连接、发送数据都需要确认,且传输完毕后,还需释放已建立的连接,通信效率较低。
TCP协议通信场景
- 对信息安全要求较高的场景,例如:文件下载、金融等数据通信。
2. UDP协议
- UDP是一种 无连接、不可靠传输 的协议。
- 将数据源IP、目的地IP和端口封装成数据包,不需要建立连接。
- 每个数据包的大小限制在64KB内。
- 发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
- 可以广播发送,发送数据结束时无需释放资源,开销小,速度快。
UDP协议通信场景
- 语音通话,视频会话等。
总结
1、通信协议是什么?
- 计算机网络中,连接和通信数据的规则被称为网络通信协议。
2、TCP通信协议的特点是啥?
- 面向连接的可靠通信协议。
- 传输前,采用“三次握手”方式建立连接,点对点的通信,所以可靠。
- 在连接中可进行大数据量的传输。
- 通信效率较低。
3、UDP协议的特点是啥?
- 用户数据报协议。
- UDP是面向无连接,不可靠的传输的通信协议。
- 速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据。