1、网络并发编程--简介、软件开发架构、OSI七层协议
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七层协议的更多相关文章
- python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01
面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...
- 开发架构+osi七层协议+socket(day26)
目录 软件开发架构 C/S架构 B/S架构 网络编程 互联网协议/OSI七层协议 传输层 网络层 数据链路层 物理连接层 socket 什么是socket 为什么用socket 如何使用 软件开发架构 ...
- 网络编程socket,详细讲述osi七层协议
一 网络编程 源方: 我们首先来说下数据在两台计算机之间的传递:操作系统控制着除应用层以外的四层 对于用户来说我们发数据一般都是在应用层,也就是我们是直接操作应用软件的,那么应用层要把数据传给传输层就 ...
- 软件开发架构与网络之OSI七层协议(五层)
本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- 网络编程简介(OSI七层协议,TCP协议原理,三次握手与四次挥手)
目录 网络编程 软件开发架构 C/S架构 B/S架构 网络编程的发展史 互联网协议 1.物理连接层 2.数据链路层 3.网络层 4.传输层 5.应用层 三次握手四次挥手 三次握手建链接 数据传输 四次 ...
- 网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层
目录 网络架构及其演变过程 单机架构 CS架构 BS架构 BS架构和CS架构的区别 C/S架构的优缺点: B/S架构的优缺点: 互联网与互联网的组成 互联网的组成(教科书版) 互联网的组成(科普版) ...
- 01网络编程(基础知识+OSI七层协议+TCP与UDP)
目录 01 网络编程 一.软件开发架构 1.1 CS架构 1.2 BS架构 二.网络理论前戏 2.1 简介 2.2 常见硬件 三.OSI七层协议(五层) 3.1 七层协议 3.2 五层协议 3.3 知 ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
随机推荐
- 在 CentOS 7 上安装和配置 Puppet
1 准备 2台 centos7 (master/server:192.168.1.103 agent/client:192.168.1.106) 分别添加puppet自定义仓库 https://yum ...
- Hive的分析函数的使用
原文: https://www.toutiao.com/i6769120000578945544/?group_id=6769120000578945544 我们先准备数据库.表和数据 开窗分析函数相 ...
- 【Java】简单了解网络编程
文章目录 网络编程 网络编程中有两个主要的问题 网络编程中的两个要素 通信要素一:IP和端口号 实例化InetAddress 两个常用方法 端口号 通信要素二:网络通信协议 实现TCP的网络编程 例子 ...
- Java不限制从键盘输入一个数组
Java不限制从键盘输入一个数组 在写算法的时候,需要从键盘输入一个数组,一直不会,最近看了几篇博客学会了,下面用二分查找举例: package com.基础; import java.util.Sc ...
- Web开发之Servlet
当一个请求到达服务端,服务器怎么处理? 当一个请求到达服务端时,由服务端的引擎来进行分析.它根据工程名找到工程, 然后拿到URL的资源地址和web.XML文件的所有的进行对比,和哪一个对比上就找到了具 ...
- MRCTF2020 你传你🐎呢
MRCTF2020 你传你 .htaccess mime检测 1.先尝试上传了一个文件,发现.jpg后缀的可以上传成功,但是用蚁剑连接时返回空数据 2.重新先上传一个.htaccess文件,让需要被上 ...
- Mybatis 学习记录 续
项目结构如下: 1.数据库建表 表名:user 结构: 内容: 2.pom.xml文件更新如下: 注:其中build部分尤其需要重视 <?xml version="1.0" ...
- 从容器中获取宿主机IP地址
背景: docker 中的程序需要连接外部的程序,连接的过程中会告知外部程序自己的ip地址,然后外部的程序会回连docker中的程序.由于docker使用的是rancher中的托管模式,外部程序是没办 ...
- 3D建模服务提供更高效、专业的3D制作能力,“筑”力开发者
3D建模服务(3D Modeling Kit)是HMS Core在图形图像领域又一技术开放.3D建模产品的定位就是要做快速.简洁.低成本的3D制作能力,并陆续开放给有3D模型.动画游戏制作等能力诉求的 ...
- hexo博客如何插入图片
Hexo是一个静态的博客网站生成器,生成一个博客只需要分分钟的时间就能搞定. Hexo的博文是支持Markdown格式的,发表一篇文章只需要简简单单的几个命令. hexo new '文章'就会生成一个 ...