1. 网络编程的目的
直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。
2.网络编程遇到的问题
- 如何准确地定位网络上一台或多台主机? IP地址
- 定位主机上的特定的应用?端口号
- 找到主机后如何可靠高效地进行数据传输?网络通信协议
3.什么是IP地址
Internet 上的计算机(通信实体)的唯一的标识。
4. IP地址分类
4.1 IPV4和IPV6
IPV4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已 经用尽。以点分十进制表示,如192.168.0.1
IPV6:128位(16个字节),写成8个无符号整数,每个整数用四个十六进制位表示, 数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
4.2 公网地址(万维网使用)和私有地址(局域网使用)
192.168. 开头的就是私有址址,范围即为192.168.0.0--192.168.255.255,专门为组织机 构内部使用
5.本地回环地址(hostAddress)和主机名(hostName)
本地回环地址(hostAddress):127.0.0.1
主机名(hostName):localhost
6.域名
IP地址不容易记忆,域名容易记忆,例如:www.baidu.com。当在连接网络时输入一个主机的域名后,域名服务器(DNS) 负责将域名转化成IP地址,这样才能和主机建立连接。
7. 端口号
- 端口号标识正在计算机上运行的进程(程序)。
- 不同的进程有不同的端口号
- 被规定为一个16 位的整数0~65535。
7.1 端口号分类
- 公认端口:0~1023。被预先定义的服务通信占用(如:HTTP占用端口 80,FTP占用端口21,Telnet占用端口23)
- 注册端口:1024~49151。分配给用户进程或应用程序。(如:Tomcat占 用端口8080,MySQL占用端口3306,Oracle占用端口1521等)。
- 动态/私有端口:49152~65535。
7.3 端口号常见问题
如果当前程序的端口号被另一个服务或者应用占用,会导致当前的程序启动失败。
8. 网络传输协议
目的是为了实现可靠高效的数据传输。
9.网络参考模型
OSI模型和TCP/IP模型
10. InetAddress类
主要表示IP地址
@Test
public void testInetAddress() throws UnknownHostException {
InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1"); //获取指定IP
System.out.println(inetAddress1);
InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com"); //获取指定域名
System.out.println(inetAddress2);
InetAddress inetAddress3 = InetAddress.getLocalHost(); //获取本机
System.out.println(inetAddress3);
}
11.TCP协议和UDP协议
11.1 TCP协议
- TCP协议进行通信的两个应用进程:客户端、服务端。
- 使用TCP协议前,须先建立TCP连接,形成传输数据通道。
- 传输前,采用“三次握手”方式,点对点通信,是可靠的。
- 在连接中可进行大数据量的传输。
- 传输完毕,需释放已建立的连接,效率低。
11.2 UDP协议
- 将数据、源、目的封装成数据包,不需要建立连接。
- 每个数据报的大小限制在64K内。
- 发送不管对方是否准备好,接收方收到也不确认,故是不可靠的。
- 可以广播发送。
- 发送数据结束时无需释放资源,开销小,速度快。
11.3 TCP协议的三次握手和四次挥手
12 Socket
网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标 识符套接字。