day34

news2025/2/24 14:25:06

今日内容概要

本周主题内容:网络编程和并发编程,理论较多、实践相对少,需要记忆的较多

  • 软件开发架构

  • OSI七层协议(互联网通信协议)

  • 网络层

  • 传输层

  • tcp协议和udp协议、IP协议、以太网协议等

  • tcp协议的三次握手和四次挥手

今日内容详细

软件开发架构

网络编程:我们要写一款基于网络传输的软件,现在写的项目都不是基于网络的,比如ATM

举个案例:

  我们现在以ATM为例,现在写的ATM别人是不能够访问的,只能自己用,但是,这不是目的,目的是我们要写一款ATM,然后让所有人都能够访问。

  如果想让别人下载使用我们的软件,我们需要开发一款客户端,然后让用户在自己的电脑上下载这个客户端就能用了,还需要有一个服务器,比如,以ATM为例,用户下载客户端之后,用户需要输入用户名和没密码登入,然后把用户名和密码提交到服务端做校验,提交到的地方就是服务端。

什么是C/S模型?

  • C是英文单词“Client”的首字母,即客户端的意思
  • C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。
    • 例如:拼多多APP、PC上的有道云笔记等等

什么是B/S模型?

  • B是英文单词“Browser”的首字母,即浏览器的意思;
  • S是英文单词“Server”的首字母,即服务器的意思。
  • B/S就是“Browser/Server”的缩写
    • 即“浏览器/服务器”模式。
      • 例如:淘宝网、京东网等等

 当下我们使用的软件架构模式二者兼有

很多的公司开发的软件都是小程序,为了转换更容易一些

“扩展”

服务端的特征:

1、二十四小时不间断对外提供服务                                                                                                    2、服务器要有一个公网IP(服务器部署、它就是另外一台计算机,系统:Linux系统、centos、乌班图等)                                                                                                                                             3、常见的服务器:阿里云、腾讯云、百度云、华为云等

osi七层协议

什么是网络?什么是上网?  上网其实就是上传和下载数据的过程

背景:
    在早期的时候,其实世界范围内的计算机是不能够互相通信的,当时的计算机只是在‘局域网中通信,后来呢,世界范围内的计算机也通信了,在广域网中通信,这就是互联网

   网络的组成:物理链接设备(路由器、交换器、网线等) + 计算机界的英语(互联网通信协议

互联网通信协议(osi七层协议)

互联网的本质就是一系列的网络的协议,这个协议就叫OSI协议,按照功能不同,分工不同,人为的分成七层,实际上这个七层是不存在的,没有七层的概念,只是认为的划分而已,区分出来的目的只是让你明白哪一层是干嘛用的。

“协议是干什么用的,协议就是标准"

物理层

  它是专门发送高低电频的,其实就是01二进制

物理层单纯的发送电频是没有任何的意义的,因为不知道发送的电频什么意思,所以,需要对发送的电频进行分组,但是呢,物理层做不了分组

物理链路层

   它就是专门用来对物理层发送过来的数据进行分组的,该层使用的以太网协议Ethernet
一组电信号构成一个数据报,叫做帧,或者叫数据帧,数据帧的组成:报头head和数据data两部分

head包含:(固定18个字节)
      发送者/源地址,6个字节
      接收者/目标地址,6个字节
      数据类型,6个字节

data包含:(最短46字节,最长1500字节)

数据报的具体内容:head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

Mac地址:

     以太网协议规定,每一个接入互联网的设备都必须哟啊有一个网卡,发送端和接收端的地址便是指网卡的地址,即Mac地址
     每块网卡出厂时都被烧制上一个世界唯一的Mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号。

   通过一个Mac地址可以确定局域网中得唯一一台计算机

网络层

   该层使用的是IP协议,规定每一个接入互联网的计算机都必须要有一个IP地址,网络层中的数据我们称之为是数据包,IP地址的组成格式

   分类:ipv4、ipv6,目前大多数用的都是ipv4,由于ipv4地址即将耗尽,所以,其他场景开始使用ipv6了

IPv4:
    0.0.0.0------------------------------------->255.255.255.255
00000000.00000000.00000000.00000000    ---------->    11111111.11111111.11111111.11111111
    
    192.168开头的地址基本上都是局域网中得ip地址
    公网ip:需要购买的,阿里云、腾讯云的,人家或给你一个公网ip地址,固定的,不会变。172.0.1.200
    内网ip:192.168开头的地址基本上都是局域网中得ip地址
    
    IPv6:十六进制表示法
    """
        如何查看自己的IP地址:
            windows: cmd----->ipconfig
            linux(macOS): ifconfig
    """
    # 其实通过一个IP地址它是可以定位唯一一个局域网
    """IP+Mac地址确定世界范围内的唯一一台计算机? 是的"""
    但是我们知道,现在只需要一个IP地址就能够确定唯一一台计算机,那是因为:arp协议的玩意儿,它能够通过你的IP地址计算出Mac地址,归根结底还是:IP+Mac地址
    
    记忆:本地回环地址:127.0.0.1(你自己的电脑)
    192.168.1.252 127.0.0.1  localhost (这两个有时候会有区别)

传输层

   该层使用的是TCP协议或者是UDP协议,暂且忽略,它也称之为端口协议,一个端口可以代表一个应用程序

端口的范围:0~65535

   """
         1. 0-1024之间的端口号都是系统自己使用的
         2. 1024-8000之间的端口号一般是常用软件的端口号
             MySQL:3306
             Django:8000
             flask:5000
             ...
        3. 我们自己开发的软件,端口一般选择8000之后的到65535
     """

同一个端口号只能够表示一个正在运行的应用程序,端口号不能够冲突,但是,软件一旦关闭,就会释放出来占用的端口号,别的应用程序就能够使用了

  常用软件的端口号:
        应用程序    FTP     TFTP    TELNET    SMTP     DNS       HTTP        SSH            MYSQL
        熟知端口    21,20      69           23           25          53           80           22               3306
        传输层协议   TCP    UDP        TCP        TCP       UDP      TCP      TCP            TCP

 应用层

Application App

  该层就是离用户最近的一层,比如,微信、QQ、腾讯会议、pycharm等都是一个一个的应用,他们都在应用层

  1.客户端:你想使用什么协议都行,自己开发的软件,协议你自己选择
  2.浏览器:你就是不能够随便使用了,就要安装浏览器规定的协议使用,而浏览器使用的协议恰好是HTTP协议
 3.Https协议
HTTP协议 HTTPS协议
        https://www.baidu.com/
        协议://域名/v1/v2?参数
        https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3

"""
            HTTP协议
                1. 是明文传输数据
                2. 不安全
               HTTPS协议
                   1. 是密文传输数据
                   2. 安全
               https = http + ssl证书(它是需要申请的,国际机构,公钥、私钥等)
               nginx服务器:配置文件,需要在配置文件中配置一些东西,就能够把你的http改成https
        """

域名解析:

DNS服务器它就是用来解析域名的,域名的本质其实就是IP地址,域名比IP地址好记,最终还是需要把域名解析成IP地址
      baidu.com                110.242.68.66
   域名的解析过程:
        1. 首先会先从本地开始解析hosts文件
        2. 会去对应平台的域名关系表中取查询

TCP协议和UDP协议

客户端 服务端

客户端要想给服务端发送消息,肯定需要建立链接
tcp协议它也称为是可靠协议(三次握手),流式协议(发送数据可以分多次发送)

 

 

"""一定是客户端先给服务端发送消息,然后,服务端给客户端做返回信息"""
# 有个个例,服务端可以先给客户端发送消息,需要使用websocket协议,一般用在即时通信软件
客服系统、微信、QQ等都是

客户端可以是多个的,服务端(饭店)只有一个

面试题:
    1. TCP协议的可靠性,是因为建立了双向通道?
            不是。是因为TCP协议的反馈机制
    2. 四次挥手能不能省略为三次挥手?
  
UDP协议:
    它不可靠、是因为它不建立链接,没有三次握手、四次挥手
     速度快
远程控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装Zookeeper

ZooKeeper是一个开源的分布式协调服务,它主要用于解决分布式系统中的一致性、可靠性和协调性等问题。 选择版本 去archive.apache.org/dist/zookeeper/,选择Zookeeper版本,我选择3.4.6 上传服务器 复制地址,通过wget下载 wget…

云渲染一张效果图要多长时间?什么影响了云渲染的速度?

在当今数字化时代,云渲染已成为许多设计和创意行业中不可或缺的关键工具。它不仅能够提高渲染效率,还为艺术家和设计师带来更多创作的机会和可能性。对于许多尚未使用过云渲染的朋友们来说,你们可能会有一个共同的问题&#xff1…

工业数据采集分析系统 自动化工厂与MES的中转站

MES系统是一套面向制造企业车间执行层的生产信息化管理系统。MES可以为企业提供包括制造数据管理、计划排程管理、生产调度管理、库存管理、质量管理、人力资源管理、工作中心/设备管理、工具工装管理、采购管理、成本管理、项目看板管理、生产过程控制、底层数据集成分析、上层…

C#关于接口的常见面试问题

1.1 关于C#接口的问题以及与抽象类的异同 什么是接口 继承有几种形式 为什么要使用接口? 接口类型可以用public关键字修饰吗? 接口能不能派生于抽象类? 接口能不能用Sealed修饰? 一个类可以继承多个接口吗? 必…

Android通过BluetoothDevice获取蓝牙地址

在Android中提供了BluetoothAdapter和BluetoothDevice两个类来实现对蓝牙设备的操作。那么我们要想获取蓝牙地址,可以通过以下步骤来实现 目录 1.获取BluetoothAdapter的实例 2.检查设备是否支持蓝牙 3.打开蓝牙 4.获取已配对的蓝牙设备列表 5.查找特定的蓝牙…

基于知识图谱建模、全文检索的智能知识管理库(源码)

一、项目介绍 一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,一款让企业知识变为实打实的数字财富的系统,应用在需要进行文档整理、分类、归集、检索、分析的场景。 知识图谱提供了一种从海量文本和图像中抽取结…

软件测试基础知识详解

1、软件测试定义 软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 2、软件的分类 软件 程序 数据 文档。 按照功能划分: 系统软件:如操作系统…

(转)tinymce-vue使用教程

一、资源下载 npm install tinymce -S //当前版本^5.1.1 npm install tinymce/tinymce-vue -S //当前版本^3.0.1二、安装语言包 资源下载后,在 node_modules 中找到 tinymce/skins 目录,然后将 skins 目录拷贝到 static 目录下,(PS: 如果是使用 vue-cli 3.x 构建…

内部类概述

一、内部类 1.内部类概述 2.内部类的四种实现形式 1.成员内部类 public class Outer {private int age99;public static String a;//成员内部类public class Inner{private int age88;private String name; // public static String school; //jdk 16开始才支持定义静态…

Mysql按照中文首字母排序

Mysql按照中文首字母排序 1、utf8_general_ci 编码2、latin1_swedish_ci 编码3、gbk 编码 数据库中可以设定表的编码格式,不同编码格式下,中文的排序有区别,下面分别介绍常用编码下的排序方法。 1、utf8_general_ci 编码 如果数据表的某字段…

纯Python代码超快速实现简易贪吃蛇小游戏-打发时间神器

当经典游戏遇上Python——体验十分钟构建自己的休闲娱乐贪吃蛇小游戏! 话不多说,直接上源码,复制粘贴即可完美运行!(如果你已经安装了pygame库) import pygame import time import randompygame.init()# 定义颜色 white (255, …

每日一练 | 华为认证真题练习Day119

1、如图所示的网络,管理员希望所有主机都不能访问Web服务(端口号为80)其它服务正常访问,则在G0/0/1的接口配置中traffic-filter outbound 需要绑定哪个ACL规则? A. acl number 3001 rule 5 deny udp destination-port…

基于 python 的接口自动化测试,简单易上手

一、简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势; 然后简单讨论了一下接口测试框架的要点; 最后介绍了一下我们目前正在使用的接口测试框架 pithy。 期望读者可以通过本文对接口自动化测试有一个大致的了解。 二、引言…

C语言达到什么水平才能从事单片机工作

C语言达到什么水平才能从事单片机工作 从事单片机工作需要具备一定的C语言编程水平。以下是几个关键要点:基本C语言知识: 掌握C语言的基本语法、数据类型、运算符、流控制语句和函数等基本概念。最近很多小伙伴找我,说想要一些C语言学习资料&…

Jmeter连接mysql数据库详细步骤

一、一般平常工作中使用jmeter 连接数据库的作用 主要包括: 1、本身对数据库进行测试(功能、性能测试)时会需要使用jmeter连接数据库 2、功能测试时,测试出来的结果需要和数据库中的数据进行对比是否正确一致。这时候可以通过j…

网络变压器/网络滤波器(又称脉冲变压器)的额定电压和耐压值

Hqst盈盛(华强盛)电子导读:带您认识网络变压器/网络滤波器(又称脉冲变压器)的额定电压和耐压值 电子元器件网络变压器/网络滤波器(又称脉冲变压器,后续都称网络变压器)的额定电压指的…

燃气管网监测系统,让城市生命线更安全

万宾科技燃气管网监测系统,让城市生命线更安全 城市是现代社会的中心,拥有庞大的人口和各种基础设施,以满足人们的生活需求。城市基础设施包括供热,供水,管廊,河湖,建筑,排水&#x…

线程入门java

1:线程创建方式二 让子类继承Thead类 必须重写Thead类的run方法 写多态的写法 注意优缺点 线程已经Thread 无法继承其他类 package threadTest;public class ThreadTest1 {//目标:掌握线程的创建方式继承thread类public static void main(String[] …

【网络安全】 网络入侵检测

前言 网络安全检测是网络安全的重要组成部分。它可以帮助我们发现潜在的威胁,防止攻击者的入侵。在这一章节中,我们将详细介绍网络入侵检测,包括入侵检测系统(IDS)和入侵防御系统(IPS)&#xf…

java JUC并发编程 第九章 对象内存布局与对象头

系列文章目录 第一章 java JUC并发编程 Future: link 第二章 java JUC并发编程 多线程锁: link 第三章 java JUC并发编程 中断机制: link 第四章 java JUC并发编程 java内存模型JMM: link 第五章 java JUC并发编程 volatile与JMM: link 第六章 java JUC并发编程 CAS: link 第七…