网络编程(理论)
软件开发架构
C/S架构
Client:客户端
Sever:服务器
比如: 微信客户端、QQ客户端等……
优点:
软件使用稳定
节省网络资源
缺点:
安装麻烦,用户体验差
软件的每一次更新,用户都需要重新下载或更新版本
B/S架构:
Browser:浏览器(本质上也是一个客户端)
Sever:服务器
比如:在浏览器上输入一个网址……
优点:
软件使用方便
无需跟着软件去更新下载
缺点:
如果网络不稳定, 软件的使用就不稳定
PS:B/S架构比较流行,因为用户体验高
客户端与服务端
服务端:24小时不间断提供服务
客户端:只有客户需要的到时候,才会去访问服务端
计算机与计算机之间通信
语言是人与人之间沟通的介质
协议是计算机之间沟通的介质
网络编程
所有最新最牛的技术,都源自于军事:
可以远程实时获取数据,实现远程通信
如何实现远程通信?------> 物理连接介质
电话 -----> 电话线
纯屏电脑(大头电脑) -----> 网线
笔记本电脑 -----> 网线,网卡
电脑之间的通信 ------> 互联网协议
让所有产商的电脑都遵循这套协议,实现所有电脑之间无障碍通信
“互联网协议” 是计算机界中的英语
互联网协议(OSI七层协议)
OSI七层协议:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
在网络编程中我们只关注5层
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
物理层
获取到对象计算机的电信号数据(二级制数据)
问题:无法获取具体数据内容,将电信号数据扔给数据链路层
数据链路层
数据链路层说:我要知道数据是什么,我要知道把数据给谁
数据链路层可以规定一套分组的方式
每一台电脑必须要有一个网卡,每一块网卡都会有一个MAC地址(MAC地址:一串世界上独一无二的数字)
MAC地址的作用:标识全世界上独一无二的计算机
以太网协议的工作方式:
单播,广播
缺点:
广播风暴
只能在局域网内实现通信,无法跨局域实现通信
网络层
网络层说:我可以实现全世界某一台计算机之间的通信
IP地址(IP协议):
点分十进制的数字组成
最小范围:0.0.0.0
最大范围:255.255.255.255
IP的版本:
IPV4
IPV6
IP的作用:用于标识全世界某一台计算机的位置,局域网的位置
IP地址+MAC地址:标识全世界某一个局域网内的某一台计算机
传输层
TCP与UDP都是基于“端口”来实现通信的
TCP协议
UDP协议
主要是软件与软件之间进行通信
port端口:用于标识计算机中某一个独一无二的软件
MAC地址+IP地址+port端口:
标识的是全世界范围内某一个局域网内某一台计算机上的某一个软件
应用层
HTTP协议
FTP协议