• day34


    今日内容概要

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

    • 软件开发架构

    • 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协议:
        它不可靠、是因为它不建立链接,没有三次握手、四次挥手
         速度快
    远程控制

  • 相关阅读:
    【JMeter】后置处理器的分类以及场景介绍
    java计算机毕业设计springboot+vue青少年编程在线考试系统
    【技术积累】Linux中的命令行【理论篇】【八】
    Java中线程的实现与生命周期的简介说明
    简单而经典:Java中的冒泡排序算法详解
    JVM类加载机制
    始祖双碳新闻 | 2022年8月1日碳中和行业早知道
    QT实现凸凹边形等距缩放
    TRC丨TRC 艾美捷 氯菊酯(顺/反混合物)说明书
    python基于django的留学生服务管理平台
  • 原文地址:https://blog.csdn.net/qq_67257222/article/details/133810517