网络编程
网络编程:就是基于网络开发一个B/S或C/S架构的软件。
# 目的:
"""
以ATM为例,现在我们想把之前写的ATM系统编程基于网络传输的,别人如果想用,就必须把客户端下载到本地电脑上,以登录为例,用户把用户名和密码在客户端输入完成,然后,把用户名和密码传到服务端进行用户名和密码的验证,这就是一款基于网络开发出的软件.
"""
软件开发架构:
分为两个架构:
# cs架构与BS架构
1、Client<------网络传输----->Server
客户端软件send 服务端软件recv
操作系统 操作系统
计算机硬件<---物理介质--->计算机硬件
# B/S的由来
客户端和服务端存在的问题:当我们下载大量的软件的时候,会占用用户电脑的 大量资源,时间长了之后,电脑就会受影响. 用户想要使用软件就必须下载,而 每次下载都是成本很高的
2、Browser<------网络传输------>Server
浏览器 服务端
操作系统 操作系统
服务端所具备的特性:
1.24小时不间断对外提供服务
2.服务端要有一个公网IP
OSI七层协议
网络通信的原理:
"网络存在的意义就是可以跨地域传输信息>>>>称之为通信"
网络 = 物理链接介质+互联网协议
"互联网的本质其实就是一堆协议"
3、os七层协议
# 互联网协议按照功能不同分为OSI七层或者TCP/IP五层或者TCP/IP四层
七层协议:
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
五层协议:# 五层协议是将应用层、表示层、会话层统称为应用层
应用层、传输层、网络层、数据结构层、物理层
四层协议:# 就是在五层协议的基础上将数据链路层跟物理层统称为网络接口层
应用层、传输层、网络层、网络接口层
协议是什么:
"协议就是规定数据的组织格式"
格式:头部+数据部分
封装过程:数据外部加头
拆封过程:拆掉加上的头部获取数据
五层协议:
计算机1 计算机2
应用层 应用层
传输层 段 传输层
网络层 包 网络层
数据链路层 帧 数据链路层
物理层<--------交换机------>物理层
####################################################################
物理层:
物理层主要是用来将打包的数据将它们转为二进制然后传输到另一台设备上去
"""
也可以理解为它是专门发送高低电频的
单纯的发送高低电频是没有意义的,需要对电频进行分组,来表示不同的意思
"""
# 物理层做不到分组
####################################################################
数据链路层:
数据链路层就是专门对数据进行分组的
"该层的数据称之为数据帧,数据帧由两部分组成:head(报头) + date(真实数据)"
head部分 : # 固定18个字节
发送者/源地址,6个字节
接收者/源地址,6个字节
数据类型,6个字节
date部分:
最短的46个字节
# 数据帧的具体内容:head长度+date长度=最短的64字节
"""该层使用的是以太网协议,以太网协议规定的是,任何接入互联网的计算机都应该有一个网卡,默认的就是以太网"""
MAC地址:每一个网卡都要有一个Mac地址,每块网卡出厂时都被烧制上一个世界唯一的Mac地址,长度为48位2进制,通常由12位16进制数表示
# Mac地址可以确定局域网中唯一一台计算机
####################################################################
网络层:
这一层使用的是IP协议,该协议规定接入互联网的计算机必须要有一个IP地址,该层的数据称之为数据包
IP地址的分类:"IPV4,IPV6"
IP地址:IP地址可以确定世界范围内的任意一个局域网
IP地址的组成:
0.0.0.0---------255.255.255.255 # 十进制
00000000.00000000.00000000.00000000------------------------- 11111111.11111111.11111111.11111111 # 二进制
IP地址分为:公网和私网
1、公网IP:固定的,不会变的,但是需要购买
2、私网IP:192.168.1.1,私网IP是可变的
子网掩码:
子网掩码中的1位表示网络标识,0位表示主机标识。通过与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、22 69 23 25 53 80 22 3306
DNS域名解析:
什么是域名?
"""域名的本质其实就是IP地址,域名最终还是要解析成对应的IP地址,才能找到IP地址对应的计算机"""
常见的域名:baidu.com、jd.com、taobao.com
解析过程:
baidu.com---------DNS---------百度IP地址
"我们计算机的host文件里面也保存了域名和IP的对应关系"
查找顺序;
1. 先从你自己电脑的host文件中查找的
host文件路径:C:WindowsSystem32driversetc
2. 如果hosts文件没有找到对应的关系, 在去对应平台的关系中去找
3. 域名是需要去购买的,并且是需要备案的
####################################################################
应用层;
应用层是离我们最近的一层
1、客户端:想用什么协议就用什么协议,可以按照我们自己的想法来
浏览器:不可以随便使用,需要按照浏览器自己的协议来,也就是http、https协议
2、 网址:https://www.baidu.com/?tn=49055317_42_hao_pg
协议://域名:端口/v1/v2?参数
"""
http特征:
1. 不安全,因为经过http协议的数据都是明文传输的
https协议:
2. 安全,经过https协议传输的数据都是密文传输
https = http + ssl证书
ssl证书:要去机构申请,国际组织,怎么用呢?
NGINX服务器,需要在nginx服务器的配置文件中配置一些代码才能使用.
"""
TCP协议和UDP协议
TCP协议:
TCP协议的三次握手和四次挥手
TCP协议是可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
三次握手-------------->为了建立链接
四次挥手--------------->断开连接
TCP协议的三次握手为什么可以保证数据安全?是因为建立了双向通道吗?
原因是:TCP协议的反馈机制
UDP协议:
不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
1. 不建立双向连接,也没有三次握手
2. 速度快