Java网络编程02:IP地址、端口和通信协议
IP地址
Java的InetAddress类可以获取IP地址
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Main {
public static void main(String[] args) {
try {
/**
* InetAddress.getByName()方法根据域名获取IP地址
* getHostName()方法获取规范域名
* getHostAddress()方法获取规范IP地址
*/
InetAddress ip = InetAddress.getByName("www.yuankexue.cn");
System.out.println(ip.getHostName());
System.out.println(ip.getHostAddress());
/**
* InetAddress.getLocalHost()方法获取本地IP地址
*
*/
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost.getHostName());
System.out.println(localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
端口
不同的进程有不同的端口号,用来区分软件(netstat -ano查看所有端口)
端口号范围0~65535,单个协议下端口号不能冲突,但是UDP和TCP是不同的协议,端口号分开算
端口分类:
- 公有端口:0~1023
- HTTP:80
- HTTPS:443
- FTP:21
- SSH:22
- 用户程序注册端口:1024~49151
- Tomcat:8080
- MYSQL:3306
- 动态端口(私有端口):49151~65535
通信协议
TCP/IP协议簇:
- TCP:用户传输协议
- IP:网络互联协议
- UDP:用户数据报协议
UPD和TCP对比:
- TCP:类似于打电话,有客户端和服务端,先建立连接,传输完成才释放连接,稳定,但效率低(三次握手,四次挥手)
- UDP:类似于发短信,不建立连接,不稳定,但效率高