软件开发架构
网络编程
我们要基于网络来编写一款B/S或者C/S架构的软件,比如:ATM,我们写的只是ATM的单机版本,没有接入网络系统,别人无法访问到的
目的
以ATM为例,现在我们想把之前写的ATM系统编程基于网络传输的,别人如果想用,就必须把客户端下载到本地电脑上,已登录为例,用户把用户名和密码在客户端输入完成,然后,把用户名和密码传到服务端进行用户名和密码的验证,这就是一款基于网络开发出的软件
C/S
客户端(client)-------------------------------------网络传输---------------------------------服务端(server)
B/S
客户端和服务端存在的问题:
当我们下载大量的软件的时候,会占用用户电脑的大量资源,时间长了之后,电脑就会受影响。用户想要使用软件就必须下载,而每次下载都是成本很高。
浏览器(browser)----------------------------------------------------网络传输---------------------------------服务端(server)
由于之前的客户端都要让用户去下载,所以,后来就有人站出来,开发出浏览器,以后使用软件都在浏览器中打开,不用下载软件,浏览器我们也称之为万能客户端、超级客户端。
浏览器:类似于用户
客户端:类似于用户
服务端:饭店以及饭店工作人员
-------------------------------目前,我们使用的软件是二者兼有的-------------------------------------
服务端所具备的特征:
1. 24小时不间断对外提供服务
2. 服务端要有一个公用IP(服务器:理解成另外一台计算机而已,是需要要去买的,阿里云、腾讯云之类的)
OSI七层协议
什么是网络
本质:上传和下载数据的过程
最开始的时候,世界上的计算机是不能互相通信的,只是在局域网中通信,后来,随着技术的发展,世界范围的计算机开始通信了,通过网络来通信,这就是我们现在所说的互联网。
网络组成部分:物理连接设备(网线、交换机、路由器灯)+计算机通信协议(英语)
互联网通信协议
osi七层协议
物理层:用来发送高低电频的
单纯的发送高低电频没有意义,需要对电瓶分组,表示把不同的意义。物理层不能分组
数据链路层:专门用来做分组使用的
该层中的数据称之为是一个数据帧,数据帧由两部分组成:head(报头)+data(真实数据)
head部分:固定18个字节
发送者,源地址,6个字节
接收者,目标地址,6个字节
数据类型,6个字节
data部分:
最短46字节
数据报具体内容:head长度+data长度=最短64字节
该层使用的是以太网协议,以太网协议规定,任何接入互联网的计算机都应该有一个网卡,默认的就叫以太网
Mac地址:每一网卡都要有一个Mac网址,每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12为16进制数表示
(前六位是厂商编号,后六位是流水线号)Mac地址可以确定局域网中唯一一计算机
网络层:
这一层使用的是ip协议,该协议规定接入互联网的计算机都必须要有一IP地址,该层的数据称之为是数据包。IP地址的分类:ipv4、ipv6
IP地址:IP地址可以确定世界范围内任意的一个局域网
IP地址组成:
IPv4地址格式:0.0.0.0--------------->255.255.255.255
如何查看自己电脑IP地址:
windows系统:ipconfing
linux(macos):ifconfig
公网IP:固定的、不变,需要购买的(服务器),阿里云、腾讯云、百度云等,172.12.1.101
内网IP:192.168.1.63,会变的
子网掩码:IP+子网掩码
IP地址+mac地址可以确定世界范围唯一一台计算机
其实,只需要IP地址就可以确定世界唯一一台计算机,为什么?
因为:有一个协议叫arp协议,可以根据IP地址计算出来Mac地址,所以,有了IP地址就相当于与Mac地址
需要记忆:本地回环地址127.0.0.1(查找自己电脑)
传输层
该层使用的是tcp协议和udp协议,也称之为端口协议,一般那一个端口表示一个程序
一个端口表示一个正在运行的应用程序
端口:0-65535
1.0-1024之间的端口一般是系统使用的,我们尽量不要使用,否则可能造成端口冲突
2.1025-8000之间的端口一般是常用软件的端口号
MySQL的默认端口号:3306
Django的默认端口号:8000
3.自己开发软件尽量使用8000以后的
常用软件的端口:
应用程序: FTP 、TFTP 、TELNET 、SMTP 、DNS 、HTTP 、SSH 、MYSQL
熟知端口: 21,20、 69 、23、 25、 53 、80、 22 、3306
dns:域名解析
baidu.com
jd.com
域名本质就是IP地址,域名最终被解析成对应的IP地址,才能找到对应的计算机
保存域名和IP地址对应关系
1.先从自己电脑的host文件中查找的
C盘----windows----system32----drivers----ect----hosts
2.如果housts文件没有对应的关系,在去对应平台的关系中去找
3.域名是需要去购买的,并且是需要备案
应用层(application)
离程序员最近的一层
1.客户端,想用什么协议就用什么协议,客户端使我们自己开发的
2.浏览器,我们就不能随便使用协议,就要按照浏览器协议,http协议
3.http和https协议
http和https特征:
1.http不安全,传输的是明文
2.https安全,传输的加密的
https=http+ssl证书
ssl证书:要去机构申请,国际组织
怎么使用:
nginx服务器:需要在nginx服务器的配置文件中配置一些代码才能使用.
TCP协议和UDP协议
tcp协议的三次握手和四次挥手
三次握手--------建立连接
四次挥手---------断开连接
TCP协议的三次握手为什么可以保证数据安全?是因为建立了双向通道吗?
原因是:TCP协议的反馈机制
面试题
1. 为什么建立连接是三次握手,关闭连接确是四次挥手呢?
客户端与服务端之间一定是客户端先向服务端发起请求,而不能返回来
特殊情况;服务端可以主动向客户端发起请求 websocket协议,一般用在即时通信软件中
UDP协议
1.不建立双向连接,也没有三次握手
2.速度快
标签:协议,浏览器,python,七层,端口,35,IP地址,服务端,客户端 From: https://www.cnblogs.com/shanghaipudong/p/17523202.html