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:类似于发短信,不建立连接,不稳定,但效率高