实现网络编程关键的三要素:
IP地址:设备在网络中的地址,是唯一的标识
端口:应用程序在设备中唯一的标识
协议:数据在网络中传输的规则,常见的协议有UDP协议和TCP协议
IP地址:
IP(internet protocol):全称“互联网协议地址”,是分配给上网设备的唯一标志
常见的IP分类为:IPv4和IPv6
IP地址形式:
公网地址和私有地址(局域网使用)
192.168.开头的就是常见的局域网地址,范围即为192.168.0.0--192.168.255.255,专门为组织机构内部使用。
IP常用命令:
ipconfig:查看本机ip地址
特殊IP地址:
本机IP:127.0.0.1或者localhost:称为回送地址也可以称本地回环地址,只会寻找当前所在本机。
import java.net.InetAddress;
public class 网络通信_IP {
public static void main(String[] args) throws Exception {
//获取本机地址对象
InetAddress ip1=InetAddress.getLocalHost();
System.out.println(ip1.getHostName());//获取本机名字
System.out.println(ip1.getHostAddress());//获取本机IP地址
//获取域名IP对象
InetAddress ip2=InetAddress.getByName("www.baidu.com");
System.out.println(ip2.getHostName());//获取域名名字
System.out.println(ip2.getHostAddress());//获取域名IP地址
//获取公网IP对象
InetAddress ip3=InetAddress.getByName("112.80.248.75");
//可能会卡一段时间,因为在联网查询
System.out.println(ip3.getHostName());//获取公网名字
System.out.println(ip3.getHostAddress());//获取公网IP地址
//判断能否通:ping 6s之前测试是否可通(判断是否联网)
System.out.println(ip3.isReachable(6000));//ping的通则为true,反之为false
}
}
端口号:
标识正在计算机设备上运行的进程(程序),被规定为一个16位的二进制,范围是0-65535
端口类型:
周知端口:0-1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21)
注册端口:1024-49151,分配给用户进程或某些应用程序(如Tomcat占用8080,MySQL占用3306)。
动态端口:49152到65535,之所以称为动态端口,是因为它一般不固定分配某种进程,而是动态分配。
注意:我们自己开发的程序应选择注册端口,且一个设备中不能出现两个程序的端口号一样,否则会出错。
传输层的2个常见协议:
TCP(Transmission Control Protocol):传输控制协议。
UDP(User Datagram Protocol):用户数据报协议。
TCP协议特点:
1、使用TCP协议,必须双方先建立连接,它是一种面向连接的可靠通信协议。
2、传输前,采用“三次握手”方式建立连接,所以是可靠的。
3、在连接中可进行大数据量的传输。
4、连接、发送数据都需要确认,且传输完毕后,还需释放已建立的连接,通信效率较低。
TCP协议通信场景:
对信息安全要求较高的场景,例如:文件下载、金融等数据通信。
UDP协议:
UDP是一种无连接、不可靠传输的协议。
将数据源IP、目的地IP和端口封装成数据包,不需要建立连接
每个数据包的大小限制在64KB内
发送不管对方是否准备好,接收方收到也不确认,所以是不可靠的
可以广播发送,发送数据结束时无需释放资源,开销小,速度快
UDP协议通信场景:
语音通话,视频会话等。
讲完这些,我不禁想要问一下学习本文的读者们两个问题:
一、通信协议是什么?
计算机网络中,连接和通信数据的规则被称为网络通信协议
二、TCP通信协议的特点是什么样的?
1、 它是一种面向连接的可靠通信协议
2、传输前,采用“三次握手”方式建立连接,点对点的通信,所以可靠
3、在连接中可进行大数据量的传输
4、通信效率较低