day 26

day 26 网络编程

01.软件开发架构

  1. 开发软件,必须要开发一套客户端与服务端
    1. 服务端;24小时不间断提供服务
    2. 客户端;用户使用,寻找服务端,获取服务
  2. 软件开发架构;
    1. C/S架构;
      1. Client;客户端
      2. Server;服务端
      3. 优点;软件的使用稳定,并且可以节省网络资源
      4. 缺点;
        1. 若用户想在同一个设备上使用多个软件,必须下载多个客户端
        2. 软件的每一次更新,客户端也必须跟着重新下载更新
      5. C/S架构软件;
        1. 电脑上的QQ、Pycharm等,移动端的微信、天猫等。。。
    2. B/S架构;
      1. Browser;浏览器
      2. Server;服务端
      3. 优点;
        1. 以浏览器充当客户端,无需下载多个软件
        2. 也无需版本更新,直接在浏览器上访问需要使用的软件
      4. 缺点;
        1. 消耗网络资源过大,当网络不稳定时,软件的使用也不稳定
      5. B/S架构的软件;
        1. 在浏览器(客户端)上输入某个域名比如京东(https://www.jd.com

02.网络编程

  1. 网络编程发展历史;
    1. 所有先进技术都来自军事,通过远程获取数据,所以出现了‘网络编程’。
    2. 早期如何实现远程通信;
      1. 打电话——>电话线
      2. 电脑——>网卡——>网线
      3. 笔记型电脑——>无线网卡——>移动网络
    3. 要实现远程通信必须具备;
      1. 物理连接介质;网卡
      2. 互联网协议;计算机与计算机沟通的介质,相当于计算机之间说话的语言
  2. 互联网协议
    1. 互联网协议又称之为网络七成协议
    2. OSI七层协议;数据传输从上到下运行,接收则从下往上运行
      1. 应用程
      2. 表示层
      3. 会话层
      4. 传输层
      5. 网络层
      6. 数据链路层
      7. 物理连接层
    3. 物理连接层;基于电信号发送二进制的数据
    4. 数据链路层;‘以太网协议’专门处理基于电信号发送到二进制数据
      1. 以太网协议;
        1. 规定好的数据分组方式
        2. 每一台连接网线的电脑都必须要由一有‘网卡’
        3. 每一块网卡都拥有世界上独一无二的编号
          1. 前六位;场上编号
          2. 后六位;流水线号
      2. 交换机;可以让多台电脑连接到一起
      3. 以太网;广播,单播;
        1. 弊端;广播风暴、不能跨局域网通信。
      4. 互联网;让局域网之间可以通信
    5. 网络层;
      1. IP地址;用于唯一标识计算机(局域网)的地址
      2. IP地址;点分十进制
        1. 最小值;0.0.0.0
        2. 最大值;255.255.255.255
      3. IPv4;一开始用电脑人数少时,出现的协议版本,地址长度为32位
      4. IPv6;用来扩展IPv4,地址长度为128位,允许协议进行扩充
      5. 本机IP;回环地址 :127.0.0.1——>localhost
    6. 传输层;
      1. TCP/UDP协议;他们都是基于端口
      2. 端口号;表示电脑上的某一个软件,相当于软件的IP地址
      3. 端口号范围;0~65535
      4. 操作系统中;一般0~1024的端口都被默认使用了(尽量不要动),推荐尽量使用8000之后的端口号
      5. 开发中常用软件的默认端口号
        1. mysql;3306
        2. nibgidb;27017
        3. Django;8000
        4. Toncat;8080
        5. Flask;5000
        6. Redis;6379
      6. 若想服务端与客户端进行通行,必须建立连接,产生两条管道
        1. 一条是客户端往服务端发送消息的
        2. 一条是服务端往客户端发送消息的
      7. TCP协议的工作原理;TCP协议是流式协议
        1. 反馈机制;(正反相同)
          1. 客户端往服务端发送消息(存放于内存中),服务端接收到消息后,必须要给客户端返回一个确认收到。
          2. 否则客户端会在某个时间段内,不停的发送,超过该时间释放内存,删掉该信息。
        2. 三次握手;建连接
          1. 发送链接请求
          2. 发送收到该请求,发送同意该请求
          3. 发送收到已同意请求
        3. 发送数据
          1. write
          2. read
        4. 四次挥手;断连接
          1. 发送断开链接请求
          2. 发送收到该请求
          3. TIME_WAIT;等待时间
          4. 确认再没有消息传来,发送同意该请求
          5. 发送收到已同意请求
    7. 应用层
      1. http
      2. ftp

03.Socket

  1. Socket在python中是一个模块,可以写一套C/S架构的套接字。
  2. Socket套接字会封装好隔层协议的工作,可以节省开发成本。
  3. import socket # socket为python内置模块
原文地址:https://www.cnblogs.com/luocongyu/p/11695280.html