版权声明:欢迎大家学习讨论,拒绝盗版 https://blog.csdn.net/qq_34319644/article/details/91289573
一 ,基础 :
1 ,计算机网络
- 官方:通过通信线路(有线或无线)可以把不同地理位置且相互独立的计算机连同其外部设备连接起来,组成计算机网络。
- 孙:好多台计算计,通过网线连接起来,就是一个计算机网络。
2 ,网络编程
- 官方:网络编程是指用来实现网络互联的不同计算机上运行的程序间可以进行数据交换。对我们来说即如何用编程语言 java 实现计算机网络中不同计算机之间的通信。
- 孙 : 举例子
1 ,我用 java 写一个 qq
2 ,把这个程序分别运行在 node01 ,node02 ,node03 上。
3 ,我在 node01 上可以给 node02 上的 qq 发消息,并且 node02 也能收到消息。
4 ,结论 : 我们的代码,使用了网络了,就是网络编程了。
二 ,网络通信三要素 ( ip,端口,通讯协议 )
1 , IP地址 :
- 每个计算机,只要联网了,他就有一个唯一的 IP 地址,类似我们同学的家庭住址。
- 每台电脑的 IP 地址是唯一的
2 , 端口号 :
- 每个计算机,如果开启了网络服务,他就会占用一个端口号,类似于家里面不同的房间。
- 同一个电脑中,不同的程序的端口号是唯一的。
- 端口号范围 0 – 65535。
- 保留端口 :0 – 1024 端口是系统使用的端口,或者保留端口。
- 我们在写程序的时候,要使用端口的话,建议采用 1025 以上的端口号。
3 , 通讯协议 ( 网络传输规则 ) : tcp 和 udp
4 , tcp 协议 : 传输控制协议
- 传输通道 :必须建立连接通道
- 可靠 :遵守三次握手的传输规则,是可靠协议
1 ,如果 A 跟 B 发建立连接通道。
2 ,第一次握手 :A 给 B 发数据,B 收到数据。
3 ,第二次握手 :B 给 A 发数据,A 收到数据。
4 ,第三次握手 :A 发消息给 B ,告诉他,我已经收到。 - 效率低 :因为必须建立网络通道,所以效率相对较低
- 应用场景 :上传下载等操作
- 孙 :类似于打电话,建立连接后,不断线。
5 , UDP 协议 :用户数据包协议
- 传输通道:不需要建立连接
- 数据包:将数据打包,打算发往哪里,就在包裹上写上哪里的地址
- 数据包大小:每个数据包,大小是 64k 以内
- 不可靠:因为无连接,所以不可靠,他虽然把数据发出去了,但是有可能用户没收到,例如网络不稳定,突然断了一下网,都有可能丢包。
- 速度 :因为不建立连接,所以速度快。
- 应用场景:语音,视频,打游戏,例如 qq ,大型游戏等,都是用的 UDP 协议。
- 孙 :类似于寄快递,把数据打包,写上地址,就发出去。至于路上会不会有什么差错,我就管不了了。
三 ,rpc :远程过程调用协议
1 ,官网定义 :
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
2 ,底层依赖 :TCP 或 UDP。
3 ,发起者 :sun ,也就是创建了 java 的那家公司。
4 ,孙:用 java 来举例子。
- 我们不需要编写底层的关于 tcp/udp 的代码,
- 复杂的逻辑都被封装起来,成为了 java 的一个个方法。
- 当我们想使用网络的时候,只需要调用 java 方法就好了。