前言
这网络编程的笔记是在学习B站狂神说所做的。今天我们将要了解的是IP和端口
1. IP
IP地址封装的类是InetAddress
[1] 唯一定位一台网络上的计算机,例如:我们经常看到的 127.0.0.1就是本机的localhost
[2] IP地址的分类
-
现在的IP地址分为两类: ipV4和 ipV6
-
IPV4 如: 127.0.0.1(由4个字节组成,一个字节由8位二进制数组成,则共有32位;则每个字节的取值范围为0~255)
这里面差不多有42亿个地址,有30亿在北美,亚洲只有4亿。(早在2011年就用尽) -
IPV6: 128位,8位无符号的整数(可以包含字母a,b,c,d,e,f) ===>在这其中1个无符号整数可以表示16位2进制数。
2001:0bb2:aaaa:0015:0000:0000:1aaa:1312
[3] 公网(互联网) —— 私网(局域网)
- ABCD类地址(0~255之间,每类地址对现有的空间折半取出)
- 192.138.xx.xx 专门给组织内使用(也就是我们平时使用的局域网)
- 而所谓的域名其实就是通过DNS域名解析器把IP地址变成方便我们记忆的字母
IP地址封装的java类是InetAddress
package com.gs.lesson01;
import java.net.InetAddress;
import java.net.UnknownHostException;
// 测试 IP
public class TestInetAddress {
public static void main(String[] args) throws UnknownHostException {
//查询本机地址
InetAddress inetAddress01 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress01);
InetAddress inetAddress03 = InetAddress.getByName("localhost");
System.out.println(inetAddress03);
InetAddress inetAddress04 = InetAddress.getLocalHost();
System.out.println(inetAddress04);
//查询网站ip地址
InetAddress inetAddress02 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress02);
//常用方法
System.out.println(inetAddress02.getCanonicalHostName()); //规范的名字
System.out.println(inetAddress02.getHostAddress()); // ip
System.out.println(inetAddress02.getCanonicalHostName()); // 域名或自己电脑的名称
}
}
2. 端口
端口表示的计算机上的一个程序的进程
ctrl+shift+Esc 打开任务管理器
-
不同进程有不同的端口,用来区分软件
-
TCP/UDP协议中每个规定的端口数为 0~65535
TCP如果使用了80端口,那么该协议下的其他软件就不能使用该端口,而UDP协议下的软件则可以使用该端口 -
端口的分类
[1] 公有端口: 0~1023
HTTP:80
HTTPS:443
FTP:21
Telnet:23
[2] 程序注册端口: 1024~49151,分配给用户或程序
Tomcat:8080
MySql: 3306
Oracle: 1521
[3] 动态,私有: 49152~65535
cmd下关于端口的相关命令:
netstat -ano # 查看所有的端口
netstat -ano|findstr "12740" #查看指定的端口
tasklist|findstr "12740" # 查看指定端口的进程
IP地址和端口在java中的类为 InetSocketAddress
package com.gs.lesson01;
import java.net.InetSocketAddress;
public class TestInetSocketAddress {
public static void main(String[] args) {
InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 8080);
InetSocketAddress socketAddress1 = new InetSocketAddress("localhost", 8080);
System.out.println(socketAddress);
System.out.println(socketAddress1);
System.out.println(socketAddress.getAddress());
//在window操作系统下可以找到C:/Windows/System32/drivers/etc这里面的hosts对其隐射进行修改
System.out.println(socketAddress.getHostName()); //地址
System.out.println(socketAddress.getPort()); //端口
}
}