python三十四期--OSI七层模型相关协议
后续内容概要
- 网络编程(2d)
- 并发编程(3d)
- MySQL数据库(5d)
- 仿优酷系统(3d~5d)
- 前端基础(7d)
- django框架(12d)
- 仿博客园系统(3d~5d)
- django drf
- 商城项目
- 期终架构部分
- 常见技术(docker k8s 消息队列 网络爬虫 Go语言)
今日内容概要
主题:纯理论
- 软件开发架构
- 架构发展趋势
- 网络编程前戏
- OSI七层协议
- 各种重点协议
今日内容详细
软件开发架构
规定了程序的请求逻辑、功能分块
------------------------------------------------------
1.C/S架构 主要应用于局域网内。
Client:客户端,这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。
Server:服务器端,服务器是计算机的一种,它比普通计算机运行更快、负载更高
-------
我们使用计算机下载下来的一个个app本质是各大互联网公司的客户端软件
通过这些客户端软件我们就可以体验到各个互联网公司给我们提供的服务
eg:
下载淘宝客户端 打开 体验淘宝服务端提供的购物服务
ps:一般情况下客户端与服务端交互需要互联网 但是有些不需要(因为客户端和服务端都在一台计算机上)
-------
客户端:即将要去消费的客人
服务端:给客人提供服务的店
-----------------------------------------------
作为服务端必备的多个条件
1.24小时不间断提供服务
2.固定的地址
3.能够服务多个客人(高并发)
--------------------------------------------------
2.B/S架构 主要应用于广域网中
Browser:浏览器 其实也是一种客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。
Server:服务器/端
三层:Browser客户端、webapp服务器端和DB(数据库)端。
Browser客户端:只有简单的输入输出功能
webapp服务器端:事物处理,同时向数据库发送请求
数据库端:存放大量数据
"""
浏览器可以充当所有服务端的客户端
ps:B/S架构本质还是C/S架构
"""
---------------------------------------------------
优劣势分析:
C/S架构:
优势:不同公司的客户端由不同公司独立开发 可以高度定制化客户端功能
劣势:需要下载才能使用
B/S架构:
优势:不用下载直接访问
劣势:无法高度定制化 并且需要遵守很多规则
.
.
架构总结
ATM:三层架构
选课系统:三层架构
本质也属于软件开发架构的范畴
软件设计的大方向>>>:统一接口
微信小程序
支付宝小程序
.
.
.
.
.
.
网络编程前戏
1.什么是网络编程
基于网络编写代码,能够实现数据的远程交互!!!!!!
2.学习网络编程的目的
能够开发cs架构的软件
3.网络编程的起源
--------------------------------------------
"""
最早起源于美国军事领域
想实现计算机之间数据的交互
最早的时候只能用硬盘拷贝
之后发明了网络编程
"""
4.网络编程必备条件
数据的远程交互
1.早期的电话:用电话线
2.早期的大屁股电脑:用网线
3.笔记本电脑、移动电话:用网卡
ps:实现数据的远程交互,必备的基础条件是:物理连接介质
---------------------
网络编程就是进行两台计算机之间的数据交互和传递,
实现双机开发的原理,类似于两台计算机进行QQ聊天或者收发邮件的功能,
要实现网络编程需要实现"三要素"。
1、对方电脑和本机的IP地址,IP地址就是计算机在互联网上的唯一地址。
2、端口号:虚拟端口 相当于收信人
3、协议:指互联网之间交互的数据格式---相当于写信的语言。
.
.
.
.
.
网络基础
1.一个程序如何在网络上找到另一个程序?
首先,程序必须要启动。
其次,必须有这台机器的地址,
我们都知道我们人的地址大概就是国家\省\市\区\街道\楼\门牌号这样字。
那么每一台联网的机器在网络上也有自己的地址,它的地址是怎么表示的呢?
就是使用一串数字来表示的,例如:100.4.5.6
-------------------------------------------------
IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
---------------------------------------
什么是ip地址?
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。
IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
---------------------------------------
什么是端口?
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。
---------------------------------------
在windows上查看端口占用的情况:
netstat -aon|findstr "49157" 49157就是你要查的端口数字
---------------------------------------
因此ip地址精确到具体的一台电脑,而端口精确到具体的程序。
.
.
.
.
网络相关专业名词
计算机之间要想实现数据交互必须要'连接'到一起
1.交换机
能够将所有接入交换机的计算机彼此互联起来
2.广播(基于mac地址)
主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号
3.单播(基于mac地址)
首次被查找的计算机回应查找它的计算机,并附带自己的mac地址
4.广播风暴
接入同一台交换机的多台计算机同时发广播
----------------------------------------------
5.局域网
可以简单的理解为有单个交换机组成的网络
在局域网内可以直接使用mac地址通信
一台交换机就可以形成一个局域网,在同一个局域网里面的多台计算机可以直接基于局域网基于mac地址,做数据交互。这也是为什么再同一个局域网类,可以通过cmd 输入对应电脑的ip地址就可以访问对应电脑分享的文件资源了!!!
6.广域网
可以简单的理解为范围更大的局域网
7.互联网
由所有的局域网、广域网连接到一起形成的网络
8.路由器
不同的局域网计算机之间是无法直接实现数据交互的 需要路由器连接
路由器就是专门用来连接局域网与局域网的!!!
路由器也可以叫做网关设备,是连接互联网中各局域网、广域网的硬件设备,
可以读取每一个数据包中的地址,然后决定如何传送。
是在网络间起网关的作用的智能性的网络设备。
手机用流量,实际上就是连了移动的基站路由器了!!!
----------------------------------------------
早期
.
以太网 : 局域网与交换机
.
广域网与路由器
.
.
.
.
.
.
.
OSI七层协议简介
OSI七层模型 (Open System Interconnect),全称为开放系统互相连接
它将网络分为七层从低到高分别是:
物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
每一层的功能是独立的。它利用其下一层提供的服务并为其上一层提供服务。
这里所谓的“服务”就是下一层向上一层提供的通信功能和层之间的会话规定,一般用通信原语实现。
两个开放系统中的同等层之间的通信规则和约定称之为协议。
通常把1~4层协议称为下层协议,5~7层协议称为上层协议。
引子:
须知一个完整的计算机系统是由硬件、操作系统、应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的)
----------------------------------
如果你要跟别人一起玩,那你就需要上网了,什么是互联网?
互联网的核心就是由一堆协议组成,协议就是标准。
比如全世界人通信的标准是英语,如果把计算机比作人,互联网协议就是计算机界的英语。
所有的计算机都学会了互联网协议,
那所有的计算机都就可以按照统一的标准去收发信息从而完成通信了。
.
.
.
.
OSI七层协议:规定了所有的计算机在远程数据交互的时候必须经过相同的处理流程、
在制造过程中必须拥有相同的功能硬件
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
ps:应、表、会、传、网、数、物
---------------------------------------
'''常见的是整合之后五层或者四层,见图片'''
---------------------------------------
接收网络消息 数据由下往上传递
发送网络消息 数据由上往下传递
---------------------------------------
.
.
.
.
.
.
.
.
.
OSI七层协议---------1.物理连接层(硬件、网卡等)
网卡:是一种允许计算机在网络中连接在一起的设备,
联网的计算机使用特定的协议或商定的语言相互通信,
网卡有有线网卡和无线网卡两种,无线网卡可以认为是小型的WIFI,有线当可以认为是电脑的宽带,
当电脑中插入网卡后就可以联网了。
------------------------------------------
物理层要为终端设备间的数据通信提供 传输介质及其连接设备。
数据:数字信号:bytes类型、二进制类型数据
通俗讲:保证计算机拿到数字信号!!!!!!
------------------------------------------
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。
物理层为设备之间的数据通信提供: 传输介质(网线等) 及 互连设备(连接器)
为数据传输提供可靠的环境。
-----------------------------------
传输介质:包括架空明线、平衡电缆、光纤、无线信道等。
互连设备: 计算机与调制解调器间的所有互连设备。比如接收器、发送器、中继器等都属都属物理层的连接器。
调制解调器,是调制器和解调器的缩写 ,一种计算机硬件,
它能把计算机的数字信号翻译成可沿普通电话线传送的模拟信号,
而这些模拟信号又可被线路另一端的另一个调制解调器接收,并译成计算机可懂的语言。
这一简单过程完成了两台计算机间的通信。
---------------------------------
数据传输通常是经过:计算机1---调制解调器1--------调制解调器2---计算机2
---------------------------------
.
.
.
.
OSI七层协议---------2.数据链路层(交换机、网桥)
数据链路可以粗略地理解为数据通道
数据链路的建立,拆除,对数据的检错,纠错是数据链路层的基本任务。
通俗讲:将计算机拿到数字信号,进行一些处理!!!!
------------------------------------------------
1.规定了电信号的分组方式!!!!!!
2.以太网协议
规定了计算机在出厂的时候都必须有一块网卡 网卡上有一串数字
该数字相当于是计算机的身份证号码是独一无二的
该数字的特征:12位16进制数据
前6位产商编号 后6位流水线号
该数字也称为:以太网地址/MAC地址
------------------------------------------------
我的电脑---属性---网络和internet---更改适配器选项----双击一下以太网图标---详细信息
------------------------------------------------
物理地址就是mac地址
.
.
.
.
.
.
.
OSI七层协议---------3.网络层( ip地址定义,路由指定 )
IP地址可以用来标识全世界独一无二的一台计算机!!!!!!
IP协议:规定了所有接入互联网的计算机都必须有一个IP地址 类似于身份证号
mac地址是物理地址可以看成永远无法修改!!!!
IP地址是动态分配的 不同的场所IP是不同的!!!!
或者可以看成每一根联网的网线对应一个ip地址,电脑与这根网线连接了,
相当于这个电脑就是这个ip地址了
通过ip地址可以动态的查到用该ip地址的设备在哪边,这也是为什么有些人被请去喝茶的原因!!!
---------------------------------------
单纯的在局域网里面做交互,不用ip地址也可以的,用mac地址就行了。
如果想跨局域网交互,就必须有一个ip地址,然后拿ip地址去路由器里面找另一个ip地址,
然后实现交互。
(这里还有一个arp协议:基于ip访问,最终也会转化为mac地址)
---------------------------------------
IP地址特征:
IPV4:它规定网络地址由32位2进制表示,但是常用的是将二进制转成10进制后表示的
点分十进制
0.0.0.0
255.255.255.255
实际上就是代表的8x4位2进制数字
十进制255就是二进制1111 1111 8位的二进制数字最多能表达0-255的十进制数字
---------------------------------------
IPV6:能够给地球上每一粒沙分一个IP地址
IP地址可以跨局域网传输
---------------------------------------
cmd 查看电脑的ip地址操作:ipconfig
.
.
.
.
.
.
OSI七层协议---------4.传输层( )
PORT协议(端口协议)
端口号用来:标识一台计算机上面的某一个应用程序
端口号的范围:0-65535
这是因为传输层的协议:TCP、UDP等,它们的报头端口号长度是16bit所决定的!! 2的16次方
端口号特征:动态分配(类似于洗浴中心号码牌)
每一个应用程序都要有一个端口号!!!
----------------------------------------------------------
# 建议:
0-1024 系统默认需要使用的端口号,操作系统里面有一些固定的底层服务需要用的。别使用这些端口号!!
1024-8000 常见软件的端口号,可能已经被占掉了,也尽量别用!
8000之后的 以后写项目推荐使用!!!
软件在启动的时候是可以指定端口号的,就是说自己可以去指定用哪个端口号的,常用的已经被指定完了,
不指定一个端口号,就会被计算机动态的分配一个端口号!!!
注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。
当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等
一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。
------------------------------------------------
URL:统一资源定位符(网址)
网址本质是有IP和PORT组成的!!!!
------
IP:PORT:能够定位全世界独一无二的一台计算机上面的某一个应用程序
114.55.205.139:80
------
我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)
域名解析:将网址解析成IP+PORT
.
.
.
.
.
传输层--------------TCP与UDP协议 重点!!!!!!
传输控制协议
# TCP与UDP都是用来规定通信方式的
TCP协议(传输控制协议)
当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。
这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立
一个全双工 (full-duplex) 的通信。这个全双工的通信将占用两个计算机之间的通信线路,
直到它被一方或双方关闭为止。
tcp协议就是控制数据数据包在传输过程中的规范格式
是一种面向连接的,可靠的,基于字节流的传输层协议。
(Transmission Control Protocol)传输控制协议
通俗地说TCP就是对于传输、发送、通信进行控制的协议。
1.TCP协议(重要)
TCP协议的特点是:面向连接、字节流、可靠传输
TCP的机制具有:校验机制、可靠、数据传输稳定
---------------------------------------------
# 三次握手:建链接
1.TCP协议也称为可靠协议(数据不容易丢失)
造成数据不容易丢失的原因不是因为有双向通道,而是因为有反馈机制!!!!!
给对方发消息之后会保留一个副本 直到对方回应消息收到了才会删除
否则会在一定的时间内反复发送
2.洪水攻击
同一时间有大量的客户端请求建立链接,会导致服务端一直处于SYN_RCVD状态!!!!
3.服务端如何区分客户端建立链接的请求
可以对请求做唯一标识
---------------------------------------------
# 四次挥手:断链接
1.四次不能合并为三次
因为中间需要确认消息是否发完(TIME_WAIT)
---------------------------------------------
ps:课下可以深入研究一下TCP图片上每个状态的具体情况
需要注意:
TCP协议用于1对1,即不能用于基于广播和多播的应用程序
TCP连接双方的收发数据次数不一定相同,即发送多次的数据包,可能会被对方1次全部接收
TCP在发送数据报后,必须得到接收方的应答,才认为传输成功,所以是可靠的
TCP采用超时重传机制,超过时间没收到应答,就会重新发送。
---------------------------------------------
.
.
两机间互相发送请求指令是不走通信通道的,走的是按正常的应-传-网-输-物-----物-输-网-传 这样在两机间传递指令的,通信通道只管传输数据
.
.
什么时候需要TCP进行超时重发?
情形1. 当主机A发送的数据因为网络堵塞等原因丢失,没有发送给主机B,那么在经过一段特定的时间间隔后,
主机A仍然没有收到主机B发送来的ack,那么主机A就会将这些数据重新进行发送。
.
情形2. 主机A发送的数据到达了主机B,但是主机B的确认应答ack由于网络原因在传输过程中丢失,
主机A并没有收到主机B的确认应答ack,在一段特定的时间间隔后,主机A认为数据没有发送到主机B,
启动重传机制,重新给主机B发送数据。
.
.
.
.
.
SYN:SYN=1 表示要建立连接
FIN:表示断开连接
ACK:ACK=1 表示我收到了
seq:随机数,建立连接无论客户端还是服务端要建立连接就要要携带
ack:回应请求就要加1返回
------------------------------
# 大白话:三次握手 每一次发送 带的什么东西 一定要背出来
第一次:客户端向服务端发送建立连接请求 SYN=1 ,并携带一个随机数(seq=随机数)
第二次:服务端回应客户端的建立连接请求(表示收到ACK=1, 并回应ack=随机数+1),
服务端接着发送建立连接请求(建立连接SYN=1,加seq=另一个随机数)
第三次:客户端回应服务端的建立连接请求(ACK=1,ack=另一个随机数+1)
.
.
.
.
.
.
数据报协议
# UDP协议
也称之为数据报协议、不可靠协议
早期的QQ使用的是纯生的(没有加任何额外功能)UDP协议
现在的QQ自己添加了很多技术和功能
使用UDP的原因就是因为很简单 快捷 粗暴 只要指定对方的地址就可以发消息了
"""
TCP我们可以看成是打电话:双方你侬我侬
UDP我们可以看成是发短信:只要发了就行 不管对方看不看
"""
UDP协议:
当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。
当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
.
.
.
.
.
.
.
应用层
应用层相当于是程序员自己写的应用程序 里面的协议非常的多
常见的有:HTTP、HTTPS、FTP
ps:后续框架部分再做介绍
.
.
.
.
.
.
.
.
.
.
.
.
.
.
通过网线把点信号传到另一台电脑后,又会以同样的协议反向操作,核对并去除对应的头
.
.
.
.
把ip头去掉
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY