什么是计算机网络
概述
**计算机网络:**是指将地理位置不同的具有独立功能的多台计算机及外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和i洗脑洗传递的计算机系统。
**网络编程的目的:**数据交换
**如何进行网络编程:**通过端口准确地定位网络上的一台主机的某个资源;
网络通信的要素
如何实现网络的通信?
通信双方地址:
- ip
- 端口号
规则:网络通信的协议
TCP/IP
小结:
- 网络编程中有两个主要的问题
- 如何准确的定位到网络上的一台或者多台主机
- 找到主机之后如何进行通信
- 网络编程中的要素
- IP和端口号
- 网络通信协议 udp, tcp
- 万物皆对象
IP
ip地址:InetAddress
- 唯一定位一台网络上计算机
- 127.0.0.1:本机localhost
- ip地址的分类:
- 公网(互联网)-私网(局域网)
- ABCD类地址
- 192.168.xx.xx专门给组织内部使用的
- ipv4/ipv6
- ipv4: 127.0.0.1, 4个字节组成, 0~255, 总共有42亿个, 30亿在北美,亚洲4亿。2011年用尽。
- ipv6:128位,8个无符号整数(夸张说法:可以为地球上的每一粒沙子分配ip地址)
- 2409:8921:a610:4263:854c:1a93:5f97:c1cf
- 公网(互联网)-私网(局域网)
- 域名:记忆IP问题(ip越短越贵,20年前买房不如买ip)
import java.net.InetAddress;
import java.net.UnknownHostException;
//测试IP
public class TestInetAddress {
public static void main(String[] args) {
try {
//查询本机地址
InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress1);
InetAddress inetAddress3 = InetAddress.getByName("localhost");
System.out.println(inetAddress3);
InetAddress inetAddress4 = InetAddress.getLocalHost();
System.out.println(inetAddress4);
//查询网站ip地址
InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress2);
System.out.println(inetAddress2.getCanonicalHostName());//规范的名字
System.out.println(inetAddress2.getHostAddress());//ip
System.out.println(inetAddress2.getHostName());//域名,或者自己电脑的名字
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
端口
一栋楼相当于一个大的ip,里面的每一户就可以看成是端口,电脑中的资源相当于家里的小物件。
端口表示计算机上的一个程序的进程:
- 不同的进程有不同的端口号!用来区分软件!
- 被规定最多能跑0~65535个软件
- TCP,UDP:65535*2 tcp:80, udp:80, 单个协议下,端口号不能冲突
- 端口分类
- 公有端口 0~1023
- HTTP:80
- HTTPS:443
- FTP:21
- Telent:23
- 程序注册端口 1024~49151, 分配给用户或者程序
- Tomcat: 8080
- MySQL: 3306
- Oracle: 1521
- 动态、私有:49152~65535
import java.net.InetSocketAddress;
//套接字
public class TestInetSocketAddress {
public static void main(String[] args) {
InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080);
System.out.println(socketAddress);
InetSocketAddress socketAddress1 = new InetSocketAddress("localhost",8080);
System.out.println(socketAddress1);
System.out.println(socketAddress.getAddress());
System.out.println(socketAddress.getHostName());//地址
System.out.println(socketAddress.getPort());//端口
}
}
通信协议
协议:约定
**网络通信协议:**速率,传输码率,代码结构,传输控制…
TCP/IP协议簇:实际上是一组协议
- 重要:
- TCP:用户传输协议
- UDP:用户数据报协议
- 出名的协议:
- TCP:
- IP:网络互连协议
TCP UDP 对比
TCP:打电话
- 连接,稳定
- 三次握手,四次挥手
- 三次握手
- 最少需要三次,保证稳定连接
- A:你瞅啥?(向对方发起连接)
- B:瞅你咋地 (对方回应连接)
- A:干一场! (确保发起者还在,连接建立)
- 四次挥手
- A:我要走了!
- B:你真的要走了吗?
- B:你真的真的要走了吗?
- A:我真的要走了!
- 三次握手
- 客户端、服务端
- 传输完成,释放连接,效率低
UDP:发短信
- 不连接,不稳定
- 客户端、服务器:没有明确的界限
- 不管有没有准备好,都可以发给你
- DDOS:洪水攻击(饱和攻击)一次攻击不成功便攻击多次
TCP
客户端:
- 连接服务器Socket
- 发送消息
服务器: - 建立服务的端口 ServerSocket
- 等待用户的链接 accept
- 接收用户的消息
Tomcat
服务端
- 自定义 S
- Tomcat服务器 S : Java后台开发
客户端 - 自定义 C
- 浏览器 B