1. 网络编程入门
1.1 网络编程概述
计算机网络
是指将地理位置不同的具有独立功能的多台计算机机器外部设备,通过通信线路简介起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统
网络编程
在网络上通信协议下,实现网络互连的不同计算机上运行的程序可以进行数据交换
1.2 网络编程三要素
IP地址
要想让网络中的计算机能够互相连通,必须为每台计算机指定一个标识符,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,而IP地址就是这个标识符,也就是设备的标识符
端口
网络的通信,本质上是两个应用程序的通信,每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?
如果说IP地址可以唯一的表示网络中的设备,那么端口号就可以唯一识别设备中的应用程序了,也就是应用程序的标识
协议
通过计算机网络可以试试多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时遵守一定的规则,这就好比在道路中形式的汽车一定要遵守交通规则一样,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据及交换,常见的协议有UDP协议和TCP协议
1.3 IP地址
IP地址分为两大类
1. IPv4
是给每个连接在网络上的主机分配一个32bit的地址,按照TCP/IP规定,IP地址用二进制表示,每个IP地址长32bit,也就是4个字节,但是这样表示出来的IP地址由于只由0和1组成,太长且不利于记忆,为了方便使用,IP地址经常被写为十进制,如“192.168.1.100”,其中的‘.’用于分割不同的字节,这种表示方法又被叫做“点分十进制表示法”,这显然比0和1容易记忆的多
2. IPv6
由于互联网的蓬勃发展,Ip地址的需求量越来越大,但是网络资源有限,使得IP的分配越发紧张,为了扩大地址空间,通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制,这样就解决了网络资源数量不够的问题
cmd常用命令:
- ipconfig:用于查看本机IP地址
- ping + (某个IP地址):用于检查本机与该地址的网络是否连通
特殊IP地址:
- 127.0.0.1:回送地址,可以代表本机地址,一般用来测试使用
1.4 InetAddress
Java中提供的对于IP地址相关使用的类
常用方法:
方法名 | 说明 |
static InetAddress getByName(String host) | 确定主机名称的IP地址。主机名称可以试试机器名称,也可以是IP地址 |
String getHostName() | 获取IP地址的主机名 |
String getHostAddress() | 返回文本显示中的IP地址字符串 |
演示代码
package StudyDemo03;
import java.net.*;
public class JavaNetStudy {
public static void StudyDemo01() throws UnknownHostException {
InetAddress a = InetAddress.getByName("192.168.1.100");
String HostName = a.getHostName();
String HostAdress = a.getHostAddress();
System.out.println("Name: " + HostName);
System.out.println("Adress: " + HostAdress);
}
public static void main(String[] args) {
try {
StudyDemo01();
} catch (UnknownHostException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
1.5 端口
端口号:用两个字节表示的整数,取值范围为0 - 65535,其中0 - 1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号,如果端口号被另外一个服务或应用占用,会导致当前程序启动失败
1.6 协议
UDP协议
用户数据报协议(User DataGram Protocol)
UDP是无连接通讯协议,即在数据传输时,数据的发送和接收端布简历数据连接,简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端不会向发送端反馈是否接收数据
由于UDP协议消耗资源小,通信效率高,所以通常用于音频、视频和普通数据的传输,但由于UDP的面向无连接性,不能确保数据的完整性,因此在传输重要数据时不建议使用UDP协议
TCP协议
传输控制协议(Transmission Control Protocol)
TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,他提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,有客户端向服务器端发出连接请求,每次连接的创建都需要经过三次握手
大名鼎鼎的三次握手
TCP协议中,在发送数据的准备阶段,客户端与服务器端之间的三次交互,成为三次握手,以保证连接的可靠性
第一次握手,客户端向服务器端发出连接请求,等待服务器确认
第二次握手,服务器端向客户端回送一个相应,通知客户端收到了连接请求
第三次握手,客户端再次向服务器端发送确认信息,确认连接