热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软件开发架构网络编程OSI七层协议TCP与UDP协议

day32  软件开发架构软件架构(softwarearchitecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。架构是一个系统的草图。软件架构描述的对象是

day32

 

 


软件开发架构  

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。
软件体系结构是构建计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础

  


软件开发架构的分类

1.C/S架构

C:client(客户端)
S:server(服务端)
优缺点:
  优势:针对客户端可以高度定制
  劣势:需要用户去下载才能使用
eg:
  客户端相当于是需要体验服务的客人
 服务端相当于是对外提供服务的店面
  手机上下载的各种app其实是各大厂家的客户端
打开app使用功能其实就是相当于是基于网络去到厂家的店里面让服务员给你提供服务!!!

  

2.B/S架构

B/S架构本质也是C/S架构
B:browser(浏览器)
S:server(服务器)
优缺点
  优势:无需下载 急速体验
  劣势:无法做到高度定制 体验效果较差
eg:
  让浏览器充当各个厂家的客户端 用户无需对应下载相应客户端 直接让浏览器提供服务!

目前趋势:

  更加偏向于B/S架构
  微信小程序
  只需要下载一个微信就可以通过微信去访问很多服务端
  支付宝诸多应用
  只需要下载一个支付宝就可以通过支付宝体验很多服务
  统一提供接口服务>>>:获取大量用户及数据 中途还可以提供广告服务

  


网络编程简介

什么是网络编程

网络编程的研究前提就是基于互联网
网络编程就是基于互联网编写代码

  

 

学习网络编程的目的/结果 

学习完网络编程之后就可以开发C/S架构的软件(掌握原理 使用框架)

  

网络编程发展史  

该技术源于美国军方>>>:很多先进的技术都是由军事发明后续转为民用
当时:
  军方想要实现不同计算机之间数据交互
  没有网络编程技术的时候只能拿U盘拷贝并携带
  为了跨区域交互数据所以发明了网络编程

 

早期远程通信

1.座机电话
彼此打电话需要电话线
2.大屁股电脑
数据交互需要插网线
3.智能手机
数据交互需要无限网卡
'''
电话线 网线 无限网卡
远程通信的前提是必须具备一个物理链接介质
'''

  

互联网协议

不同计算机之间要想实现无障碍交互
除了需要有物理链接介质之外还需要一套公有的标准
'''
就好比为什么不同厂家的手机零部件几乎是一样的
'''
这个标准是>>>:互联网协议(OSI七层协议)

网络相关知识

# 1.什么是互联网?
将计算机彼此链接到一起的介质
# 2.互联网建立的目的?
基于互联网做数据交互
# 3.上网的本质
基于网线去访问其他计算机上面的资源
"""其实我们的计算机也可以称之为是服务器/服务端(专门对外提供服务)"""

  

  


OSI七层协议简介

"""
所有的计算机在生产过程中必须有相同的部分和相同的功能
应、表、会、传、网、数、物
"""
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层

上述的七层也有很多人总结为五层
1.应用层(三层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层

  


OSI七层协议01

OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程
# 物理链接层
物理链接介质,传递电信号
# 数据链路层
"""
基于物理链接层接收到一串二进制数 如何切分才能正常解析?
"""
1.规定了二进制数据的分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须有一块网卡
每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号
该编号是由12位16进制数组成
前六位是产商编号
后六位是流水线号
这个独一无二的编号也有一个称呼>>>:'mac地址'(类似于身份证号)
ps:基于mac地址就可以实现计算机之间的数据通信了!!!

  


专业设施名词

1.交换机
让接入交互机的多台计算机之间彼此互联

2.局域网
由交换机组成的网络称之为局域网(一个区域)

3.广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址)

4.路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起

"""
在局域网中可以直接基于mac地址实现数据交互
但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输

  


OSI七层协议02

# 网络层
IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
IP地址目前有两个版本
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
# 随着社会的进步 计算机的使用越来越普遍 IPV4地址不够用
IPV6:十六进制
'''IPV6可以表示出地球上每一粒沙子'''
ps:IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机
"""
IP地址分为公网IP和私网IP
公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认使用的都是私网IP

公网IP需要花钱购买并且需要实名认证并备案
很多非法网站都是在国外注册备案
"""

# 传输层
PORT协议(端口协议)
"""
一台计算机上面可以运行很多数据交互软件 比如微信、qq、钉钉
它们都是从内存中获取数据 为什么不会错乱

就是因为端口协议的存在!!!
"""
用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)
端口号的范围是:0~65535
0~1024:系统经常使用的端口号
1024~8000:常用软件端口号
我们以后在写项目的时候推荐使用8000之后的端口
1.同一时间同一台计算机上面端口号不能冲突
2.端口号是动态分配的
eg:打开微信随机分配一个没有被使用的端口号8888
关闭微信重新打开那么会随机分配可能还是8888也可能是其他
"""
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序
IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
www.baidu.com 好记
14.215.177.29:80 难记
ip:port
很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射

域名解析
将好记的地址解析成真正的地址
www.baidu.com 解析 202.108.22.5:80
"""
# 应用层
这里完全可以取决于程序员自己
HTTP协议 HTTPS协议 FTP协议 自定义协议

  


TCP与UDP协议

# 都属于传输层
# TCP协议
流式协议、可靠协议
基于TCP协议进行数据交互之前需要做一系列复杂的操作>>>:三次握手四次挥手
"""
三次握手建立链接
eg:彼此挖通道

四次挥手断开连接
eg:彼此切断通道

洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
控制很多台计算机同一时刻去访问服务端 造成服务端瞬间过载瘫痪
"""

# UDP协议
丢包协议、不可靠协议
不需要建立双下通道 数据的传输速度快 但是可能会丢失
qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全

"""
TCP协议类似于打电话:你一句我一句 你侬我侬
UDP协议类似于发短信:发了之后不管你看不看 只要发了就行
"""

  


面试题

题目:
TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?
描述的不够精确 不对!!!
TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制
基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除
否则在一定的时间内会频繁的多次发送知道确认或者超时为止
UDP协议发送数据之后会立刻删除内存数据 不会保留

  

  

 



推荐阅读
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 本文详细探讨了虚拟化的基本概念,包括服务器虚拟化、网络虚拟化及其在云计算环境中的应用。特别强调了SDN技术在网络虚拟化和云计算中的关键作用,以及网络虚拟化技术如何提升资源利用效率和管理灵活性。 ... [详细]
  • 本文深入探讨了网络编程中的基本概念,如指针、引用和可重入函数,并详细介绍了OSI七层模型和TCP/IP四层模型的功能与协议。同时,文章还对比了HTTP与HTTPS的区别,分析了HTTP请求报文的结构,讨论了TCP与UDP的主要差异,以及滑动窗口协议的工作原理。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 解析EasyCVR平台国标GB28181协议下的TCP与UDP模式
    在使用EasyCVR视频融合平台过程中,用户常遇到关于端口设置的问题,尤其是TCP和UDP模式的区别。本文将详细介绍这两种模式在GB28181协议下的具体应用及差异。 ... [详细]
  • 博主从零开始学习HTML(入门基础)
    从零开始学习HTML(入门基础)互联网三大基石HTTP协议URL:统一资源定位符HTML:超文本标记语言HTML的Head标签中的常用元素<!--告知 ... [详细]
  • 本文深入浅出地介绍了区块链的基本概念,探讨了这一技术如何通过去中心化的方式实现数据的可靠存储与传输。此外,文章还分析了区块链技术与比特币的关系,以及它在未来各行业的潜在应用。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 本文详细介绍了装饰者(Decorator)模式,这是一种动态地为对象添加职责的方法。与传统的继承方式不同,装饰者模式通过组合而非继承来实现功能扩展,从而提供更大的灵活性和可维护性。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
author-avatar
强毛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有