网络编程
1.软件的开发架构
C/S架构:
client:客户端
Server:服务端
比如:微信客户端,qq客户端等
优点:
-软件的使用稳定
-节省网络资源
缺点:
-安装麻烦,用户体验差
-软件的每一次更新,用户都需要重新下载更新版本、
B/S框架
Browser:(本质上是一个客户端,)浏览器
Server:服务端
比如:在浏览器上输入一个网址
优点:
-软件使用方便
-无需跟着软件的更新下载
-可以通过浏览器使用各个软件
缺点:
-如果网络不稳定,软件的使用就不稳定
目前比较流行的B/S框架 用户的体验高,现在的网络都已经满足要求了。
客户端与服务端:
服务端: 24小时不间断提供服务。 (比如: 惠州淡水区某一个美丽的场所是一个服务端,可以提供服务)
客户端: 客户想要找服务时,就去访问服务端。 (比如: hcy去寻求心灵辅导,比如学习英文!)
三 往后学习的脉络
- 学习网络编程, 并发编程, 数据库 ----》 可以开发一套 C/S架构的软件。
- 学习前端(html/css/js), web框架(Django) ----》 可以开发一套 B/S架构的软件。
四 计算机与计算机之间通信:
- 语言是人与人之间沟通的介质!
- 协议是计算机与计算机之间沟通介质!
五 网络编程
- 所有最新最牛的技术,都源自于军事:
- 可以远程实时获取数据,实现远程通信
- 如何实现远程通信: ----》 物理连接介质
- 电话: ---> 电话线
- 纯屏电脑(大屁股电脑): ---> 网线
- 笔记本电脑: ---> 网线、网卡
- 电脑与电脑通信: ----> “互联网协议”
让所有产商的电脑都遵循这套协议,实现所有电脑之间无障碍通信。
“互联网协议” 是计算机界的 中文、英文、粤语。
六 互联网协议(OSI七层协议):
- OSI七层协议:
- 应用层
- 会话层
- 表示层
- 传输层
- 网络层
- 数据链路层
- 物理层
- 此时需要关注的是5层: 由下到上记 ###这个5层是我们必须要记住的的
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
- 1)物理层:
- 获取到对象计算机的电信号数据
0101010111
010: 你
1011: 爱
101: 我
问题: 无法获取具体数据内容,将电信号数据扔给数据链路层
- 2)数据链路层:
- 我要知道数据是什么?
- 我要知道数据是给谁的?
- “以太网协议”:
1)规定一套分组的方式:
获取电信号真实数据。
电信号是一个数据包。
head: 18个字节(bytes)
- 6: 发送者
- 6: 接收者
- 6: 数据类型
data:
- 电信号具体的数据
2) 每一台电脑必须要有一个网卡(电脑插入网线的地方):
- 每一块网卡都会有一串世界上独一无二的数字:
- 12位16进制的数字,称之为 "mac地址" :
- 前6位: 产商号
- 后6位: 流水号
mac地址作用(*******):
标识全世界上一台独一无二的计算机。
“以太网协议”:
- 工作的方式:
- 单播:一对一交流
- 广播:服务器4想找服务器1,在交换机里吼叫,所有服务器都能收服务器1可以回复服务器4
缺点:
- 广播风暴:广播数据充斥网络无法处理,并且占用大量的网络宽带,导致正常的业务不能运行,甚至彻底瘫痪
- 只能在局域网内实现通信, 无法跨局域实现通信
总结:
- mac地址: 标识全世界上一台独一无二的计算机。
3) 网络层:
- 实现全世界某一台计算之间的通信
- ip地址(ip协议):
- IPV4:
- 点分十进制的数字组成
- 180.101.49.11
- 最小范围: 0.0.0.0
- 最小范围: 255.255.255.255
- ip的版本:
- IPV6:更新版本
- ip的作用:(*******)
用于表示全世界某一台计算机的位置,局域网的位置。
总结:
ip地址 + mac地址:(*******)
标识全世界某一个局域网内的,某一台计算机。
4) 传输层:
tcp与udp都是基于 “端口” 实现通信的。
- TCP协议:
- UDP协议:
主要是软件与软件之间进行通信。
- port端口:
用于标识计算机中某一个独一无二软件。
总结:
mac地址 + ip地址 + port端口:
标识的是全世界范围内某一个局域网内某一台计算机上的某一个软件。
5) 应用层:
- 大佬们定制好的一套牛X的协议
- http协议
- ftp协议
- 自定义的协议