软件开发架构与网络之OSI七层协议(五层)
本期内容概要
python回顾
软件开发架构
网络理论前瞻
osi七层协议(五层)
- 以太网协议
- IP协议
- port协议
- 交换机
- 路由器
- 局域网
- 广域网
TCP协议
- 三次握手
- 四次挥手
UDP协议
内容详细
python回顾
变量与常量
基本数据类型
内置方法
字符编码、文件操作
函数
函数参数、闭包函数、装饰器
面向对象
封装、继承、多态
"""
什么是对象
数据与功能的结合体
什么是类
多个对象公共的数据与功能的结合体
什么是父类
多个类公共的数据与功能的结合体
对象必须要由类产生!!!
"""
1. 软件开发架构
1.c/s架构
c : client 客户端
s : server 服务端
"""
客户端:可以当作去店铺消费的客人
eg:手机上的各种APP就是各大软件厂商的客户端
服务端:可以当作提供服务的商店
服务端需要具备的三大特征:
1.24小时不间断提供服务(24小时监听)
2.固定的地址(IP地址)
3.能够服务多个用户(高并发)
"""
2.b/s架构
b : browser 浏览器
s : server 服务器
"""
用浏览器统一充当各个服务端的客户端
本质:bs架构本质上也是cs架构
"""
3.各大互联网巨头正在做的事情:
微信小程序(微信提供开发微信小程序的软件)
支付宝小程序(各大程序接口)
# 总结:
网络编程学习完就可以开发cs架构的软件(简易版本)
并发编程、前端、数据库、后端框架就可以开发bs架构软件(任何类型的软件)
2. 网络理论前瞻
'''网络编程其实研究的就是程序之间的数据通信'''
1.由来:
基于远程传输的技术 最早诞生于美国军方(前沿技术通常都是由军事产生)
2.远程数据传输发展史(民用)
01 有线电话 > 电话线互联
02 无线电话 > 信号发射器
03 大屁股电脑 > 网线
04 笔记本电脑 > 网卡
'''要想实现远程数据交互的前提是必须要有物理连接介质'''
除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准):
OSI七层协议
3. OSI七层协议
# 所有的计算机都必须要有这七层
01 应用层
02 表示层
03 会话层
04 传输层
05 网络层
06 数据连接层
07 物理连接层
'''
应 表 会 传 网 数 物
'''
# 从开发层面 可以归纳为五层
01 应用层
02 传输层
03 网络层
04 数据连接层
05 物理连接层
'''从下往上介绍'''
3.1 物理连接层
提供一个物理连接接口(网线口 无线网卡)
3.2 数据连接层
1.规定了电信号的分组方式
2.含有以太网协议
规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字
"""
数字 : 12位16进制数
前六位 :产商编号
后六位 :流水线号
上述的数字也称之为计算机的mac地址(类似于身份证号)
"""
3.3 常见硬件
1.交换机:能够使接入该机器的所有计算机之间彼此互联
2.局域网:有交换机组成的网络
3.互联网:可以简单的理解为是多个局域网之间彼此互联
"""
基于mac地址的数据传输
1.广播风暴
2.mac地址不能跨局域网传输
"""
4.路由器:能够连接多个局域网并实现局域网之间的数据传输
3.4 网络层
1.IP协议:
规定了接入互联网的计算机都必须有一个IP地址用于唯一标识
2.ip协议版本
IPV4版本:
最小 0.0.0.0
最大 255.255.255.255
IPV6版本:
能够表示出地球上的每一粒沙子
'''IP地址能够唯一标识接入互联网的一台独一无二的计算机'''
3.公网IP与私网IP
公网IP需要花钱购买并申请
私网IP自带的 但是无法直接基于互联网访问
4.arp协议
将IP地址转换成mac地址(基于网络请求)
3.5 传输层
'''TCP协议 UDP协议 端口协议 等等'''
1.端口协议:
范围:0~65535
特性:动态分配
eg:
第一次运行微信 系统随机取一个端口号2022
然后关闭微信重新启动 系统再随机取一个端口号
2.端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000常见软件端口号
以后我们开发的软件最好使用8000之后的端口号
"""
端口号(port):
能够唯一标识一台计算机上面正在运行的一款应用程序
端口号在同一台计算机同一时刻不能重复
"""
# 总结
能够唯一标识世界上 某一台接入互联网的计算机上面的 某一个正在运行的应用程序
3.6 TCP协议
1.别称:
流式协议 可靠协议
2.三次握手 建立链接
重要状态:
listen 监听态:等待对方发请求
syn_rcvd态: 忙于恢复确认建立请求
'''
洪水攻击:
服务端在同一时间接收到了大量的要求建立链接的请求
'''
3.四次挥手 断开链接
不能合并成三次挥手 因为有等待时间要等待
3.7 UDP协议
1.别称:
不可靠协议
'''
数据发送没有通道的概念 发送出去了就不管了 无论对方是否接收成功 都会在自己内存中 直接删除该数据
TCP协议相当于打电话 你一句我一句 你侬我侬
UDP协议相当于发短信 发了就完事 管你看不看
'''
3.8 应用层
都是人为自定义的协议标准 可遵循可不遵循
HTTP协议 FTP协议 ...
软件开发架构与网络之OSI七层协议(五层)的更多相关文章
- Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
- 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议
Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...
- 网络之OSI七层协议模型、TCP/IP四层模型
13.OSI七层模型各层分别有哪些协议及它们的功能 在互联网中实际使用的是TCP/IP参考模型.实际存在的协议主要包括在:物理层.数据链路层.网络层.传输层和应用层.各协议也分别对应这5个层次而已. ...
- 1、网络并发编程--简介、软件开发架构、OSI七层协议
python复习 变量与常量 基本数据类型 内置方法 字符编码.文件操作 函数 函数参数.闭包函数.装饰器 面向对象 封装.继承.多态 """ 什么是对象 数据与功能的结 ...
- 01网络编程(基础知识+OSI七层协议+TCP与UDP)
目录 01 网络编程 一.软件开发架构 1.1 CS架构 1.2 BS架构 二.网络理论前戏 2.1 简介 2.2 常见硬件 三.OSI七层协议(五层) 3.1 七层协议 3.2 五层协议 3.3 知 ...
- python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01
面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- 开发架构+osi七层协议+socket(day26)
目录 软件开发架构 C/S架构 B/S架构 网络编程 互联网协议/OSI七层协议 传输层 网络层 数据链路层 物理连接层 socket 什么是socket 为什么用socket 如何使用 软件开发架构 ...
随机推荐
- Matalb 正则表达式预处理数据(一)
clc clear %% Step 1: 读入数据 phasedata = readtable('phasedata.txt'); %% Step 2: 提取数据 time = phasedata(: ...
- 【python】青果教务系统模拟登陆
使用 python 的 selenium + chrome 来模拟登陆学校教务系统 完整代码传至 github,增加了一个自动识别验证码的功能,不过是用的别人的轮子,识别度也不高 这是需要手动输入验证 ...
- 开源企业平台Odoo 15社区版之项目管理应用模块功能简介
项目管理无论是各类证书的认证,如PMP.软考高级的信息系统项目管理师.中级的系统集成项目管理工程师等,还是企业实践都有着广泛的实际应用中,至今还是处于热门的行业,合格的或优化的项目经理还是偏少,对于I ...
- Java 数据类型:集合接口Collection之Set接口HashSet类;LinkedHashSet;TreeSet 类
Collection 之 Set 实现类: HashSet TreeSet 特点: 无序. 元素不可重复. (如果试图添加一个已经有的元素到一个Set集合中,那么会添失败,add()方法返回false ...
- 请注意JS方法,方法同名,参数个数不一样是不能区分方法的,
请注意JS方法,方法同名,参数个数不一样是不能区分方法的, 所以要区分方法,只能利用方法名不同来区分,而不能利用参数个数与参数类型来分.
- JAVA连接redis报错 :stop-writes-on-bgsave-error option
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist o ...
- maven中pom文件中scope的作用
Dependency Scope <dependency>中还引入了<scope>,它主要管理依赖的部署.目前<scope>可以使用5个值: compile 默认 ...
- tomcat startup.bat 启动中文显示乱码
打开tomcat文件夹到conf目录下 修改logging.properties 找到 java.util.logging.ConsoleHandler.encoding = utf-8这行 更改为 ...
- 平衡二叉树(c++实现)续
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist --- 欢迎指正--- 题外话:上一篇关于平衡二叉树文章中,我都没说自己是怎么理解的.别人终 ...
- C++之去重
note 今天刷题,忘了去重复库函数,于是手写了一个. 前提: 必须保证数组是有序的. 源码 template <typename T> void unique_arr(T arr[], ...