网络编程
1.计算机网络概念
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来(有线性、无线),在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
1.1网络编程的目的
传播交流信息、数据交换、通信.
想到达到这个目的,我们需要精准的定位到一个主机, ip+端口 : 如192.168.1.100: 端口,定位到计算机的某个资源 如QQ. 找到了主机我们又该如何传输数据呢?
JavaWeb : 网页编程B/S架构 浏览器访问
网络编程: TCP/IP C/S架构 如客户端QQ
1.2网络通信要素
那么如何实现网络的通信?
通信双方的地址:
IP、端口号 :192.168.1.127: 端口
规则:网络通信规则 http ,tfp(文件上传)、smtp(qq邮件)...
TCP/IP参考模型
如果我们现在需要百度的ip怎么获取呢?
进入cmd ping www.baidu.com (域名) 随后便会返回百度的ip地址
1.3 IP
ip地址:InetAddress(java中对应的类)
1.唯一定位一台网络上计算机
2.127.0.0.1: 本机localhost
3.ip地址的分类
IPV4/IPv6
IPV4 127.0.0.1 由4个字节组成,0-255 ,42亿个 ,但是30亿都在北美,亚洲4亿。2011年就用尽( 4字节32位整数,并分为4段8位的二进制数,每8位之间用圆点隔开,每8位整数可以转换成0~255的十进制整数)
IPV6 128位。8个无符号整数! 举个类似的例子 2020:bbbb:asd4:05dd:7789:1021:gggg:1234(16字节128位整数,分位8段十六进制数,每16位之间用圆点隔开,每16位整数可以转换成为一个0~65535的十进制整数)
公网(互联网)-私网(局域网)
ADCD类地址
192.168.xx.xx 专门给一些组织内部使用的,
4.域名:记忆IP
测试代码:InetAddress类(表示互联网协议(IP)地址对象,封装了与该IP地址相关的所有信息,并提供了获取信息的常用方法)
public class TestInetAddress {
public static void main(String[] args) {
try { //查询本机的ip地址
InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress);
InetAddress inetAddress1 = InetAddress.getByName("localhost");
System.out.println(inetAddress1); //自己电脑名称+地址
InetAddress inetAddress2 = InetAddress.getLocalHost();
System.out.println(inetAddress2);
//查询网址ip地址
InetAddress inetAddress3 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress3);
//常用方法
//System.out.println(inetAddress3.getAddress()); 返回数组,一组地址可能返回多个
System.out.println(inetAddress3.getHostAddress());//获取主机ip地址
System.out.println(inetAddress3.getHostName());// 获取主机名
System.out.println(inetAddress3.getCanonicalHostName());//获取规范的主机ip地址
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}