网络编程
1 概述
1.1 计算机网络
(连接分散计算机设备以实现信息传递的系统)
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
1.2 网络编程目的
…传播交流信息…数据交换…通信…
1.3 条件
-
如何准确定位网络上的一台主机? ------ 192.168.16.124:端口 --> 定位至此计算机上的某个资源(app)
-
如何传输数据?
javaweb:网页编程 B/S架构
网络编程:TCP/IP C/S架构
1.4 网络通信要素
如何实现网络通信?
-
通信双方的地址:
- IP地址
- 端口号
-
规则(网络通信协议):
- http
- ftp
- smtp
- tcp
- udp
- TCP/IP 参考模型
本章内容主要学习传输层的TCP与UDP协议
【小结】
- 网络编程的两个主要问题
- 如何准确定位网络上的一台或多台主机
- 找到主机之后,如何传输数据(进行通信)?
- 网络编程中的要素
- IP和端口号
- 网络通信协议
2 IP
Class InetAddress
-
唯一定位一台网络上的计算机
-
127.0.0.1:本机 英文名:localhost
-
IP地址的分类
-
IP地址分类IPv4/IPv6
-
IPv4:例如127.0.0.1,四个字节(32位)组成;每个字节由0~255的数字;约等于2^32个(42亿)网络地址:30亿在北美,亚洲只有4亿;2011年已用尽
-
IPv6:例如fe80::c975:a83:ce2d:74c8%7,128位长,由8个无符号整数(八个字节)组成
-
IPv6地址冒分格式为:
X : X : X : X : X : X : X : X (8组)
-
常用的完整16进制表示方式:
nnnn : nnnn : nnnn : nnnn : nnnn : nnnn : nnnn : nnnn (其中n为09、AF任意一个数值)
-
IPv6地址是可以进行缩写表示的,例如冒号分隔的每组数值前面的0可以省略不写
-
冒号分隔的一组或连续几组全0数值,可以用双冒号表示(一个IP地址最多只可出现一次::缩写)
-
-
-
公网(互联网)-私网(局域网)
- 192.168.xx.xx一般是局域网,专门用于组织内部
- ABCD类IP地址
-
-
域名:解决IP问题
练习:
package com.duo.lesson01;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
//测试IP
public class InetAddressTest {
public static void main(String[] args) {
try {
//查询本机IP地址:3种方式
InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress1);
InetAddress inetAddress2 = InetAddress.getByName("localhost");
System.out.println(inetAddress2);
InetAddress inetAddress3 = InetAddress.getLocalHost();
System.out.println(inetAddress3);
//查询网站IP地址
InetAddress inetAddress4 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress4);
//一些常用方法
System.out.println(Arrays.toString(inetAddress4.getAddress()));
System.out.println(inetAddress4.getCanonicalHostName()); //获取“规范的名字”
System.out.println(inetAddress4.getHostAddress()); //获取IP
System.out.println(inetAddress4.getHostName()); //获取域名
} catch (UnknownHostException e) {
throw new RuntimeException();
}
}
}
运行结果: