python34days

发布时间 2023-10-13 17:25:13作者: 拆尼斯、帕丁顿

软件开发架构

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

网络层

传输层

tcp协议和udp协议,ip协议,以太网协议等

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

————————————————————————————————————————

网络编程:网络编程是使用域名、IP地址、端口连接到另一台计算机上对应的程序,按照规定的协议(数据格式)来交换数据

客户端-------------网络传输---------------服务端

cliet                                                    sever      通常成为 C/S架构

客户端服务端是存在一定的问题:

当我们需要下载大量的软件的时候,会占有大量的资源,且使用不方便;可通过浏览器打开

而浏览器 是另一种形式的 客户端

浏览器(客户端)-------------------------网络传输---------------------服务端

通常称为 B/S架构   ——  本质上 B/S架构也是C/S架构

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

扩展:

  服务端的特点:

        1.24小时不间断提供服务

        2.服务端要有一个公网IP(服务器部署------另外一台计算机)

        3.常见的服务器 阿里云,腾讯云,华为云,等

————————————————————————————————————————OSI七层协议

什么是网络? 什么是上网?

其实就是上传和下载数据的过程

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

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

协议是干什么的? 协议就是标准

七层划分: 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

 物理层  :

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

  物理层单纯的发送电频没有任何音译,不知道发送的电频什么意思,所以需要对发送的电频进行分组

数据链路层:

      专门用来对物理层发送过来的数据进行分组,该层使用以太网协议

一组电信号构成一个数据报,叫做帧,或者叫数据帧,数据帧的组成: 报头head和 数据data

 MAC地址

  以太网协议规定,每一个接入互联网的设备都必须要有一个网卡,发送端和接受端的地址便是指网卡的地址 即MAC地址

通过一个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地址 固定不会改变

内网IP:192.168开头的地址基本上都是局域网中的ip地址

     IPv6:十六进制表示法

    如何查看自己的IP地址:

        windows:ipconfig——   cmd (IP config)

         linux(mac0S):ifconfig    

其实是通过一个IP地址是可以定位 唯一一个局域网

JP+MAC地址确定世界范围内的唯一一台计算机?
是的因为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 且不能冲突

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

  常用软件的端口号:  了解

 ———————————————————————————————————————应用层(Application):

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

    1.客户端 : 你想使用什么协议都行,自己开发的软件,协议你自己选择

    2.浏览器 : 你就不能够随便使用了, 需要安装浏览器规定的协议使用,而浏览器使用的协议 恰好是HTTP协议

    3.https协议

      HTTP协议 HTTPS协议

      hettp://www.baidu.com/

      协议 :// 域名 /v1v2?参数

      https://www.baidu.com/s?wd=%E%BE%E%E%A%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协议:

   它不可靠,是因为它不建立链接,没有三次握手、四次握手

   速度快

远程控制