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