python复习

变量与常量
基本数据类型
内置方法
字符编码、文件操作
函数
函数参数、闭包函数、装饰器
面向对象
封装、继承、多态
"""
什么是对象
数据与功能的结合体
什么是类
多个对象公共的数据与功能的结合体
什么是父类
多个类公共的数据与功能的结合体
对象必须要由类产生!!!
""" # 重写类的方法、添加新功能重用
import json
from datetime import datetime, date dic = {'t1': datetime.today(), 't2': date.today()} class MyJsomClass(json.JSONEncoder): def default(self, o):
if isinstance(o, datetime):
return o.strftime('%Y--%m--%d--%X')
if isinstance(o, date):
return o.strftime('%Y--%m--%d')
return super().default(o) print(json.dumps(dic, cls=MyJsomClass))

今日内容概要

  • 软件开发架构

  • 网络理论前戏

  • OSI七层协议(五层)

    以太网协议、ip协议、port协议、arp协议

    交换机、路由器、局域网、广域网

  • TCP协议

    三次握手与四次挥手

  • UDP协议

  • socket通信(模块)

    python代码

今日内容详细

软件开发架构

c/s架构
c:client 客户端
s:server 服务端
"""
将客户端看成是去店里消费客人
将服务端看成是提供服务的店面
eg:收集各种app其实就是各大软件的客户端 服务端需要具备的三大特征
1.24小时不间断提供服务(24小时监听)
2.固定的地址(IP地址)
3.能够服务多个用户(高并发)
""" b/s架构
b:browser 浏览器
s:server 服务器
"""
浏览器统一充当各个服务端的客户端
本质:bs架构本质上也是cs架构
""" 统一:各大互联网巨头正在做的事情
eg:
微信小程序(微信提供开发微信小程序的软件)
支付宝小程序(各大程序接口) # 总结
网络编程学习完就可以开发cs架构的软件(简易版本)
并发编程、前端、数据库、后端框架就可以开发bs架构软件(任何类型的软件)

网络编程前戏

网络编程其实研究的就是程序之间的数据通信

由来:
基于远程传输数据的技术最早诞生于美国军方(前沿技术通常都是由军事产生) 远程数据传输发展史(民用)
1.有线电话 电话线互联
2.无线电话 信号发射器
3.大屁股电脑 网线
4.笔记本电脑 网卡
...
"""
要想实现远程数据交互的前提是必须要有物理连接介质
""" 除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准)
OSI七层协议

OSI七层协议

# 所有的计算机都必须要有这七层
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层 # 开发层面可以归纳为五层
应用层
传输层
网络层
数据链路层
物理连接层 """
从小往上研究 1.物理连接层
提供一个物理连接接口(网线口 无线网卡)
2.数据链路层
1.规定了电信号的分组方式
2.以太网协议
规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字
12位16进制数
前六位:产商编号
后六位:流水线号
上述的数字也称之为计算机的mac地址(类似于身份证号)
"""

常见硬件

交换机:能够使接入该机器的所有计算机之间彼此互联
局域网:有交换机组成的网络
互联网:可以简单的理解为是多个局域网之间彼此互联
"""
基于mac地址的数据传输
1.广播风暴
2.mac地址不能跨局域网传输
"""
路由器:能够连接多个局域网并实现局域网之间的数据传输

网络层

IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识
IPV4版本
最小 0.0.0.0
最大 255.255.255.255
IPV6版本
能够表示出地球上每一粒沙子 # IP地址能够唯一标识接入互联网的一台独一无二的计算机
公网IP与私网IP
公网IP需要花钱购买并申请
私网IP自带的但是无法直接基于互联网访问
"""
arp协议
将IP地址转换成mac地址(基于网络请求)
"""

传输层

TCP协议  UDP协议  暂且忽略

端口协议
范围:0~65535
特性:动态分配
eg:第一次运行微信 系统随机取一个端口号2022
然后关闭微信重新启动 系统随机取一个端口号
端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000常见软件端口号
以后我们开发的软件最后使用8000之后的端口号 # 端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序
"""
端口号在同一台计算机同一时刻不能重复
""" 总结
ip+port 127.0.0.1:8080
"""
能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序
"""

TCP协议

流式协议 可靠协议

三次握手	建立链接
重要状态
listen监听态:等待对方发请求
syn_rcvd态:忙于恢复确认建立请求
# 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求 四次挥手 断开链接
不能合并成三次 """该类知识需要课后再花时间研究(如果想要大厂)"""
面试题:TCP协议之所以可靠的原因在于有双向通道,对不对
不对,是因为在接收数据的时候有反馈机制
反馈机制:
a给b发数据后,b收到后要给a反馈自己收到数据了
a如果没有收到反馈会保存发送的数据,接收到反馈后才删除
如a一直没收到反馈,可以每隔多少时间重新发送
微信登陆后,改变一个参数,接收消息

UDP协议

不可靠协议

数据发送没有通道的概念 发送出去了就不管了

"""
TCP协议相当于打电话 你一句我一句 你侬我侬
UDP协议相当于发短信 发了就完事 管你看不看
"""
早期的QQ使用的就是UDP

应用层

都是人为自定义的协议标准 可遵循可不遵循
HTTP协议 FTP协议 ...

1、网络并发编程--简介、软件开发架构、OSI七层协议的更多相关文章

  1. python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01

    面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...

  2. 开发架构+osi七层协议+socket(day26)

    目录 软件开发架构 C/S架构 B/S架构 网络编程 互联网协议/OSI七层协议 传输层 网络层 数据链路层 物理连接层 socket 什么是socket 为什么用socket 如何使用 软件开发架构 ...

  3. 网络编程socket,详细讲述osi七层协议

    一 网络编程 源方: 我们首先来说下数据在两台计算机之间的传递:操作系统控制着除应用层以外的四层 对于用户来说我们发数据一般都是在应用层,也就是我们是直接操作应用软件的,那么应用层要把数据传给传输层就 ...

  4. 软件开发架构与网络之OSI七层协议(五层)

    本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...

  5. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  6. 网络编程简介(OSI七层协议,TCP协议原理,三次握手与四次挥手)

    目录 网络编程 软件开发架构 C/S架构 B/S架构 网络编程的发展史 互联网协议 1.物理连接层 2.数据链路层 3.网络层 4.传输层 5.应用层 三次握手四次挥手 三次握手建链接 数据传输 四次 ...

  7. 网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层

    目录 网络架构及其演变过程 单机架构 CS架构 BS架构 BS架构和CS架构的区别 C/S架构的优缺点: B/S架构的优缺点: 互联网与互联网的组成 互联网的组成(教科书版) 互联网的组成(科普版) ...

  8. 01网络编程(基础知识+OSI七层协议+TCP与UDP)

    目录 01 网络编程 一.软件开发架构 1.1 CS架构 1.2 BS架构 二.网络理论前戏 2.1 简介 2.2 常见硬件 三.OSI七层协议(五层) 3.1 七层协议 3.2 五层协议 3.3 知 ...

  9. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程    1.OSI七层协议    2.基于tcp协议的套接字通信    3.模拟ssh远程执行命令    4.tcp的粘包问题及解决方案    5.基于udp协议的套接字 ...

随机推荐

  1. OSPF路由协议详解

    OSPF:开放式最短路径优先协议无类别链路状态路由协议,组播更新224.0.0.5/6:跨层封装到三层,协议号89:基于拓扑工作,故更新量大-----需要结构化部署–区域划分.地址规划触发更新.每30 ...

  2. spring boot 启动警告 WARN 15684 --- [ restartedMain] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources. 解决

    添加一个配置文件config.properties ,即便是空的也是可以的

  3. Go语言系列- http编程和mysql

    http编程 一.Http协议  1. 什么是协议? 协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准.  2. 什么是http协议? http协议,是互联网中最常见的网络通信标准.  3 ...

  4. 学习Java爬虫文档的学习顺序整理

    1.认识正则表达式(Java语言基础) https://www.toutiao.com/i6796233686455943693/ 2.正则表达式学习之简单手机号和邮箱练习 https://www.t ...

  5. Java 简单操作hdfs API

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6632047118376780295/ 启动Hadoop出现问题:datanode的clusterID 和 name ...

  6. FIS 使用

    从淘宝npm镜像安装fis $ npm install -g fis --registry=https://registry.npm.taobao.org 安装less插件 $ npm install ...

  7. 【漏洞复现】CVE-2022–21661 WordPress核心框架WP_Query SQL注入漏洞原理分析与复现

    影响版本 wordpress < 5.8.3 分析 参考:https://blog.csdn.net/qq_46717339/article/details/122431779 在 5.8.3 ...

  8. 【记录一个问题】一个golang中的BUG,为啥编译的时候无法发现,而单独跑测试用例就发现了

    代码大致如下: func DoSomething(){ log.Printf("a=%s, b=%s, c=%s", a, b) //忘记少写一个参数.但是编译正常通过 } fun ...

  9. manjora20安装搜狗输入法

    先安装好fcitx和yay yay -S fcitx-sogoupinyin sudo pacman -S base-devel 这是因为需要使用外网,需要配置代理. 注意 manjora20输入法一 ...

  10. MySQL查询处理——逻辑查询处理和物理查询处理

    对于查询处理,可将其分为逻辑查询处理和物理查询处理.逻辑查询处理表示执行查询应该产生什么样的结果,而物理查询代表MySQL数据库是如何得到结果的. 逻辑查询处理 MySQL真正的执行顺序如下: (8) ...