网络编程

1.网络基础相关的知识

    架构

      c/s架构:client客户端和server服务器端

      优势:能充分发挥PC机的性能

      b/s架构:browser流浪器和server服务器  隶属于c/s架构

      B/S架构统一了应运的接口  

    mac地址:是一个物理地址,全球唯一,类似于身份证

     ip:是一个四位点分十进制,它标识了计算机在网络中的地位

     交换机的通信方式:

     广播............吼一嗓子

     单播............一对一

     组播...........一对多

   arp协议:通过目标ip地址获取目标mac地址的一个协议

   OSI五层模型:

     应用层................http,https,ftp     

     传输层................tcp/udp...................四层交换机  四层路由器

     网络层................ip协议 .....................路由器  三层交换机

     数据链路层.........arp协议....................以太网交换机 网卡  网桥

     物理层.................传输电信号..............集线器  网线  光纤 

   socket模块

     socket又叫套接字

     SOCK_STREAM...........基于TCP协议

     SOCK_DGRAM.............基于UDP协议

     TCP:可靠地面向连接的,面向字节流的传输方式

     UDP:不可靠,不面向链接的,面向数据报的传输方式,快 

               

               TUC协议和UDP协议

  

          TCP协议的三次握手四次挥手

    subprocess模块 

      # subprocess.Popen(cmd,shell=True,subprocess.stdout,subprocess.stderr)

      # cmd : 代表系统命令
      # shell = True 代表这条命令是 系统命令,告诉操作系统,将cmd当成系统命令去执行
      # stdout 是执行完系统命令之后,用于保存结果的一个管道
      # stderr 是执行完系统命令之后,用于保存错误结果的一个管道

    粘包问题:只有tcp协议才会发生粘包,udp不会发生

     发送端发送数据,接收端不知道应该如何去接收,造成一种数据混乱的现象

     如何造成粘包:合包机制(nagle算法)和拆包机制

             解决粘包  (struct模块)

    计算机硬件组成:主板  CPU  存储  输入设备  输出设备

   计算机的操作系统:

      操作系统是一个软件,是一个能直接操纵硬件的一个软件

   人工时代:穿孔卡带

   脱机时代:完全将人和机器隔离开来

   单道批处理系统:内存中允许存放一道作业

   多道批处理系统:内存中允许存放多道作业

      分时系统:将cpu的执行划分时间片,每个程序一时间片为单位去执行

   实时系统:一般比较少见,主要用于军事和工业生产上.  

   操作系统的作用:

     1.封装所有硬件接口,让各种用户使用电脑更加轻松

     2.是对计算器内所有资源进行合理的调度和分配

   进程:

     是指正在运行的程序.

        进程是一个动态的概念

    进程由三大部分组成: 代码段  数据段  PCB:进程管理控制

    进程的三大基本状态:

      就绪状态:已经获得运行需要的所有资源,  除了CPU

      执行状态:已经获得了所有资源包括CPU 处于正在运行

      阻塞状态:因为各种因素,进程放弃了CPU,导致进程无法继续执行,此时进程处于内存中 ,继续等待获取CPU

      multiprocedding内置模块,是python提供,主要用于多进程编程 

    开启多进程及多进程相关的常用方法

      并发 :两个进程同一时间段内运行

      并行 :两个进程在同一时间点发生

      同步 :某一个任务的执行必须依赖于另一个任务的返回结果

         异步 :某一个任务的执行,不需要依赖于另一个任务的返回结果,只需要告诉另一个任务一声

      阻塞    非阻塞

       获取当前进程的pid号........os.getpid()

      获取当前进程的父进程的pid号........os.getppid

原文地址:https://www.cnblogs.com/xiaole-7890/p/9507390.html