网络编程 网络开发架构,互联网协议
网络开发架构
C/S架构:
Client: 客户端
Server: 服务端
比如: 微信客户端、QQ客户端等...
优点:
- 软件的使用稳定
- 节省网络资源
缺点:
- 安装麻烦,用户体验差
- 软件的每一次更新,用户都需要重新下载或更新版本
B/S架构:
Browser(本质上也是一个客户端): 浏览器
Server: 服务端
比如: 在浏览器上输入一个 网址
优点:
- 软件的使用方便
- 无需跟着软件的更新去下载
缺点:
- 如果网络不稳定,软件的使用就不稳定
# 比较流行: B/S架构,用户体验高。
客户端与服务端:
服务端: 24小时不间断提供服务。
客户端: 客户想要找服务时,就去访问服务端。
之后的学习路径:
- 学习网络编程, 并发编程, 数据库 ----》 可以开发一套 C/S架构的软件。
- 学习前端(html/css/js), web框架(Django) ----》 可以开发一套 B/S架构的软件。
计算机与计算机之间通信:
- 语言是人与人之间沟通的介质!
- 协议是计算机与计算机之间沟通介质!
网络编程
- 所有最新最牛的技术,都源自于军事:
- 可以远程实时获取数据,实现远程通信
- 如何实现远程通信: ----》 物理连接介质
- 电话: ---> 电话线
- 纯屏电脑(大屁股电脑): ---> 网线
- 笔记本电脑: ---> 网线、网卡
- 电脑与电脑通信: ----> “互联网协议”
让所有产商的电脑都遵循这套协议,实现所有电脑之间无障碍通信。
“互联网协议” 是计算机界的 中文、英文。
互联网协议(OSI七层协议):
- OSI七层协议:
- 应用层
- 会话层
- 表示层
- 传输层
- 网络层
- 数据链路层
- 物理层
- 此时需要关注的是5层: 由下到上记
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
1)物理层:
- 获取到对象计算机的电信号数据
0101010111
010: 你
1011: 爱
101: 我
问题: 无法获取具体数据内容,将电信号数据扔给数据链路层
2)数据链路层:
- 我要知道数据是什么?
- 我要知道数据是给谁的?
- “以太网协议”:
1)规定一套分组的方式:(了解)
获取电信号真实数据。
电信号是一个数据包。
head: 18个字节
- 6: 发送者
- 6: 接收者
- 6: 数据类型
data:
- 电信号具体的数据
2) 每一台电脑必须要有一个网卡(电脑插入网线的地方):
- 每一块网卡都会有一串世界上独一无二的数字:
- 12位16进制的数字,称之为 "mac地址" :
- 前6位: 产商号
- 后6位: 流水号
mac地址作用(*******):
标识全世界上一台独一无二的计算机。
“以太网协议”:
- 工作的方式:
- 单播:
- 广播:
缺点:
- 广播风暴
- 只能在局域网内实现通信, 无法跨局域实现通信
总结:
- mac地址: 标识全世界上一台独一无二的计算机。
3) 网络层:
- 实现全世界某一台计算之间的通信
- ip地址(ip协议):
- 点分十进制的数字组成
- 180.101.49.11
- 最小范围: 0.0.0.0
- 最小范围: 255.255.255.255
- ip的版本: IPV4地址已用完,IPV6是IPV4的扩展
- IPV4:(了解)
- 点分十进制:
- 0.0.0.0
- 255.255.255.255
- IPV6:
- ip的作用:(*******)
用于表示全世界某一台计算机的位置,局域网的位置。
总结:
ip地址 + mac地址:(*******)
标识全世界某一个局域网内的,某一台计算机。
arp协议:(了解)
将ip与mac绑定到一起了,所以可以同ip地址找到mac地址。
4) 传输层:
tcp与udp都是基于 “端口” 实现通信的。
- TCP协议:
- UDP协议:
主要是软件与软件之间进行通信。
- port端口:
用于标识计算机中某一个独一无二软件。
- 0-1024: 禁止,操作系统在用
- 8000 --- >
- 软件固定的端口号(不要碰):
django: 8000
mysql: 3306
redis: 6379
flask: 5000
tomcat: 8080
mongodb: 27017
....
总结:
mac地址 + ip地址 + port端口:
标识的是全世界范围内某一个局域网内某一台计算机上的某一个软件。
5) 应用层:
- 大佬们定制好的一套牛X的协议
- http协议
- ftp协议
- 自定义的协议