计算机网络
是指地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统
网络编程的目的
无线电台…传播交流信息,数据交换,通信
网络通信的要素
- 通信双方地址
- 规则:网络通信的协议
网络模型:
网络编程中有两个主要的问题:
- 如何准确的定位到网络上的一台或者多态主机
- 找到主机之后如何进行通信
网络编程中的要素:
- ip和端口号
- 网络通信协议
ip
ip地址:InteAddress
- 127.0.0.1 本机地址
- IP地址的分类:ip地址分类;公网和私网
public class IPTest {
public static void main(String[] args) {
try{
//查询本机地址
InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress1);
InetAddress inetAddress2 = InetAddress.getByName("localhost");
System.out.println(inetAddress2);
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
//查询网站ip地址
InetAddress baidu = InetAddress.getByName("www.baidu.com");
System.out.println(baidu);
//常用方法
System.out.println(baidu.getAddress());
System.out.println(baidu.getCanonicalHostName()); //规范的名字
System.out.println(baidu.getHostAddress()); //ip
System.out.println(baidu.getHostName()); //域名
}catch (Exception e){
e.printStackTrace();
}
}
}
测试结果:
/127.0.0.1
localhost/127.0.0.1
DESKTOP-IHB2C5F/192.168.136.1
www.baidu.com/110.242.68.3
[B@1b6d3586
110.242.68.3
110.242.68.3
www.baidu.com
端口Port
端口表示计算机上的一个程序的进程:
- 不同的进程有不同的端口号(用于区分软件)
- 被规定0-65535
- TCP;UDP,单个协议下面,端口号不能冲突
- 端口分类:共有端口 0-1023、Http 80、Https 443、FTP 21、Telene 23;程序注册端口:1024 ~ 49151,分配用户或者程序 Tomcat 8080、MySQL 3306、Oracle 1521;动态、私有:49152 ~ 65535
public class PortTest {
public static void main(String[] args) {
InetSocketAddress inetSocketAddress1 = new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress inetSocketAddress2 = new InetSocketAddress("localhost",8080);
System.out.println(inetSocketAddress1);
System.out.println(inetSocketAddress2);
System.out.println(inetSocketAddress1.getAddress());
System.out.println(inetSocketAddress1.getHostName()); //地址
System.out.println(inetSocketAddress1.getPort()); //端口
}
}
测试结果:
/127.0.0.1:8080
localhost/127.0.0.1:8080
/127.0.0.1
activate.navicat.com
8080
通信协议
协议:约定
网络通信协议: 速率、传输码率、传输控制
TCP/IP协议簇:实际上是一组协议
- TCP:用户传输协议
- UDP:用户数据报协议
TCP 和 UDP 对比
TCP:打电话
- 连接稳定
- 三次握手、四次挥手
- 客户端、服务端
- 传输完成释放连接,效率低
UDP:发短信
- 不连接,不稳定
- 客户端、服务端(没有明确的界限)
- 不管有没有准备好,都可以发给你
- DDOS:洪水攻击!饱和攻击!
三次握手:
最少需要三次才能保证稳定连接
- A去给B发送个信息,告诉B,A要与B建立连接
- B收到A的信息后,回复A,告诉A,B收到了A的信息,同意建立连接
- A收到B的回复后,在回复B,告诉B,A还在,建立连接吧
四次挥手:
- A告诉B,我要断开连接
- B收到后,回复A,B收到了A要断开连接的信息
- B询问A,是否真的要断开连接
- A回复B,确定断开连接