逆袭之路——python进阶基础之 网络编程【day32】
今日内容概要
温馨提示:今日内容全部理论没有一行代码,只需要听懂即可,很简单!!!
- 软件开发结构
- 网络编程简介
- OSI七层协议简介
- OSI七层协议01
- 网络知识补充
- 专业设施名词
- OSI七层协议02
- TCP与UDP协议
再次强调:有些天课程内容简单一定要查缺补漏不能松懈!!!
今日内容详细
一、软件开发结构
我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:
第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用
第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用
这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构
1. 什么是软件开发结构?
就是程序员在编写软件的时候应该遵循的架构设计,类似于我们写ATM和选课系统所采用的三层架构
2. 软件开发结构的分类
1)C/S架构
- C:client(客户端)(客户端相当于是需要体验服务的客人)
- S:server(服务端)(服务端相当于是对外提供服务的店面)
- 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大
- C/S架构也就是客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的
2)B/S架构 - B:browser(浏览器)
- S:server(服务器)
- B/S架构本质也是C/S架构,也是浏览器端与服务器端架构,这种架构也是从用户层面来划分的,只不过无需下载相应的客户端
- Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查
以上两种结构优缺点的对比:
# 两种架构的优缺点C/S架构:优势:针对客户端可以高度定制劣势:需要用户去下载才能使用B/S架构:优势:无需下载 急速体验劣势:无法做到高度定制 体验效果较差'''目前的趋势其实更加偏向于B/S架构微信小程序只需要下载一个微信就可以通过微信去访问很多服务端支付宝诸多应用只需要下载一个支付宝就可以通过支付宝体验很多服务统一提供接口服务>>>:获取大量用户及数据 中途还可以提供广告服务'''
二、网络编程简介
1. 什么是网络编程?
- 网络编程的研究前提就是基于互联网 网络编程就是基于互联网编写代码
2. 学习网络编程的目的/结果
- 学习完网络编程之后就可以开发C/S架构的软件(掌握原理 使用框架)
3. 网络编程发展史
该技术源于美国军方>>>:很多先进的技术都是由军事发明后续转为民用
实际应用:
军方想要实现不同计算机之间数据交互
在当时,没有网络编程技术的时候只能拿U盘拷贝并携带
为了跨区域交互数据所以发明了网络编程
3.早期远程通信
1)座机电话
彼此打电话需要电话线
2)大屁股电脑(大肚子)
数据交互需要插网线
3)智能手机
数据交互需要无限网卡
'''电话线 网线 无限网卡远程通信的前提是必须具备一个物理链接介质'''
4. 互联网协议
- 不同计算机之间要想实现无障碍交互
- 除了需要有物理链接介质之外还需要一套公有的标准,这个标准就是>>>:互联网协议(也就是OSI七层协议)
三、 OSI七层协议简介
"""
所有的计算机在生产过程中必须有相同的部分和相同的功能应、表、会、传、网、数、物
"""1.应用层2.表示层3.会话层4.传输层5.网络层6.数据链路层7.物理链接层# 上述的七层也有很多人总结为五层1.应用层(三层)2.传输层3.网络层4.数据链路层5.物理链接层
逻辑层级图如下:
四、 OSI七层协议01
- OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程
- 物理链接层
物理链接介质,传递电信号 - 数据链路层
也就是负责相邻设备之间数据传输
然后老师又拓展了一下:
"""基于物理链接层接收到一串二进制数 如何切分才能正常解析?"""1.规定了二进制数据的分组方式2.规定了'以太网协议'但凡能够接入互联网的计算机都必须有一块网卡每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号该编号是由12位16进制数组成前六位是产商编号后六位是流水线号这个独一无二的编号也有一个称呼>>>:'mac地址'(类似于身份证号)ps:基于mac地址就可以实现计算机之间的数据通信了!!!
五、网络知识补充
- 什么是互联网?
将计算机彼此链接到一起的介质 - 互联网建立的目的?
基于互联网做数据交互 - 上网的本质
基于网线去访问其他计算机上面的资源
"""其实我们的计算机也可以称之为是服务器/服务端(专门对外提供服务)"""
六、 专业设施名词
- 交换机
让接入交互机的多台计算机之间彼此互联 - 局域网
由交换机组成的网络称之为局域网(一个区域) - 广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址) - 路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起
"""
在局域网中可以直接基于mac地址实现数据交互但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
"""
七、 OSI七层协议02
1. 网络层
1)先说下IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
2)IP地址目前有两个版本
IPV4 : 点分十进制
最小:0.0.0.0
最大:255.255.255.255
IPV6 : 十六进制
可以精确到每一台计算机
话说“IPV6可以表示出地球上每一粒沙子”
随着社会的进步 计算机的使用越来越普遍 IPV4地址不够用
"""IP地址分为公网IP和私网IP公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的我们所有人的电脑默认使用的都是私网IP公网IP需要花钱购买并且需要实名认证并备案很多非法网站都是在国外注册备案"""
2. 传输层
1)PORT协议(端口协议)
用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)
2)端口
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。要想主机是区分不同的网络服务,显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
3)端口号的范围是:0~65535
0~1024:系统经常使用的端口号
1024~8000:常用软件端口号
我们以后在写项目的时候推荐使用8000之后的端口
需要注意的是:
1.同一时间同一台计算机上面端口号不能冲突2.端口号是动态分配的eg:打开微信随机分配一个没有被使用的端口号8888关闭微信重新打开那么会随机分配可能还是8888也可能是其他
小总结:
"""
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序我们日常生活使用浏览器访问的各个网址其实就是IP+PORTwww.baidu.com 好记14.215.177.29:80 难记ip:port很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射域名解析将好记的地址解析成真正的地址www.baidu.com 解析 202.108.22.5:80
"""
八、 TCP与UDP协议(都属于传输层)
1. TCP协议
三握手
TCP是因特网中的传输层协议,使用三次握手协议建立连接,三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
四挥手
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的
"""
洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态控制很多台计算机同一时刻去访问服务端 造成服务端瞬间过载瘫痪
"""
2. UDP协议
当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接
当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上
不需要建立双下通道 数据的传输速度快 但是可能会丢失,例如qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全
3. TCP 与 UDP 对比
- TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
- UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快
逆袭之路——python进阶基础之 网络编程【day32】相关推荐
- 逆袭之路——python 数据发展史、MySQL的下载和安装、基本SQL语句【day45】
今日内容概要 数据演变史 存取发展史 数据库本质 数据库分类 SQL与NoSQL MySQL下载与安装 系统服务制作 重要概念 基本SQL语句 今日内容详细 一.数据演变史 单独的文本文件 没有固定的 ...
- 【Python入门基础】网络编程
文章目录 TCP/IP模型 网络应用模式 基于HTTP协议的网络资源访问 HTTP(超文本传输协议) JSON requests库 基于传输层协议的套接字编程 TCP套接字 UDP套接字 网络应用开发 ...
- python进阶九_网络编程
Python网络编程一 一.一些基本概念 在Python网络编程这一节中会涉及到很多网络相关的术语,对于一些最基本的概念,如TCP/IP,Socket等等不再赘述,不明白的可以自己去查一查,对于一些常 ...
- 逆袭之路——python 操作数据库、SQL注入问题、索引与慢查询优化【day49】
今日内容概要 python操作MySQL SQL注入问题 修改表SQL语句补充 视图.触发器.存储过程 事务 流程控制.函数 索引与慢查询优化 今日内容详细 一.python操作MySQL pytho ...
- 逆袭之路——python 数据库字符编码与配置、存储引擎、字段类型及约束条件【day46】
今日内容概要 字符编码与配置文件介绍 存储引擎 MySQL字段类型 MySQL字段约束条件 今日内容详细 一. 字符编码与配置文件 # 查看MySQL默认字符编码\s""" ...
- 逆袭之路——python学习笔记【day08】
今日内容概要 字典内置方法 元组内置方法 集合内置方法 垃圾回收机制 总结(小练习) 今日内容详细 一.字典内置方法 定义:在{ }内用逗号分隔开多元素,每一个元素都是key:value的形式,其中v ...
- 逆袭之路——python学习笔记【day11】
今日内容概要 函数的定义与调用 函数的分类 函数的返回值 函数的参数 名称空间与作用域 今日内容详细 一.函数的定义与调用 函数的定义就相当于事先将函数体代码保存起来,然后将内存地址赋值给函数名,函数 ...
- 逆袭之路——python常见内置函数、表达式【day15】
今日内容概要 三元表达式(简化代码) 各种生成式(简化代码) 匿名函数(简化代码) 常见重要内置函数 常见内置函数补充 今日内容详细 一.三元表达式 三元表达式: 值1 if 条件 e ...
- 逆袭之路——python学习笔记【day02】
今日内容概要 操作系统 文件的概念 编程语言的发展史 编程语言的分类 python简介 python解释器的版本说明 python解释器下载与安装 python解释器多版本共存 第一个python程序 ...
最新文章
- CDH大数据集群安全风险汇总
- 两个奇技淫巧,将 Docker 镜像体积减小 99%
- 32岁被裁,拿N+1,我高兴地失业了
- C,C++,C#的点评
- 深入学习SAP UI5框架代码系列之八:谈谈 SAP UI5 的视图控件 ID,以及 SAP UI5 视图和 Angular 视图的异同
- 违反GPL协议,法院判罚了!国内首例
- css线条伸缩_CSS3弹性伸缩布局之box布局
- 功成身退:AMD Mantle不再优化了
- windows phone 了解LinearGradientBrush类和RadialGradienBrush类(11)
- iPhone SDK开发基础之UIPageControl编程
- JAVA基础——Java 中必须了解的常用类
- 生活中的思维风暴——读《谁是谷歌想要的人才》精彩题目小记(二)
- echarts---圆饼图
- 数字图像处理第一次试验:图像的基本操作和基本统计指标计算
- 魔兽星期二服务器维护,魔兽世界例行维护,假如我星期一晚上通宵,在星期二凌晨五点维护时我没退出游戏,会被强制退出么?...
- 冰山理论(理解笔记)
- U8 业务单据编码 相关表
- 笔记:新手SEOer必备的WordPress优化插件
- ssh: Bad configuration option: usedns
- 关于下拉刷新你是否真的非常理解还是只会搬砖?附 Android 实例子源代码文件下载地址380个合集...
热门文章
- 微信小程序Canvas绘制图案(生成海报、朋友圈海报)
- 解决pycharm Python helpers are not copied yet to the remote host. Please wait until remote interpreter
- 【国内SEO大牛】网站统计显示被违禁词搜索进来原因
- 2022分体式蓝牙耳机哪款好?分体式蓝牙耳机推荐
- 不放弃每一个节日,植树节也能玩H5营销
- 【现代通信原理笔记】4 数字基带传输
- 爱创科技行业观察:中药全链条监管进入新阶段!
- print函数的高级用法(输出到文件,自定义间隔符,强制刷新)
- 视频画中画效果该怎么实现?这款软件让你一秒成大神
- TensorFlow实现mnist书写数字分类,出现please use urllib or similar directly错误。