• PYTHON2.day01


    1.网络编程(难点)
    2.进程线程(难点)
    3.正则表达式
    4.MongoDB数据库(非关系型数据库)
    5.git使用
    6.基础项目示例


    一.网络编程
        1.网络功能:数据的传输
       
        2.OSI七层模型
          制定组织:ISO国际标准化组织
          作用:使网络通信工作流程标准化      
         
          应用层:提供用户服务,具体功能有应用功能实现
          表示层:数据的压缩优化加密
          会话层:建立用户级的连接,选择适当的传输服务
          传输层:提供传输服务
         
          网络层:路由选择,网络互联
          链路层:进行数据交换,控制具体数据的发送
          物理层:提供数据传输的硬件保证,网卡接口,传输介质
         
          优点:1.建立了统一的工作流程
               2.分部清晰,各司其职,每个步骤分工明确    
               3.降低了各个模块之间的耦合度,便于开发
              
          cookie:高内聚:模块功能尽可能单一,不相互掺杂
                   低耦合:模块之间的关联一影响尽可能少
                 封装
                
          四层模型(TCP/IP模型)
          背景:实际工作中工程师无法按照七层模型要求操作,逐渐演化为更符合实际情况的四层
         
          应用层:集中了应用,表示,会话的功能
          传输层:
          网络层
          物理链路层:链路层依托于硬件设备
         
       3.数据传输过程
          [1]发送端由应用程序发送消息,逐层添加首部信息,最终在物理层发送消息包
          [2]发送的消息经过多个节点(交换机,路由器)传输,最终到达目标主机
          [3]目标主机有物理层逐层解析首部消息包,最终到应用程序呈现消息。
        
        4.网络协议
          定义:在网络数据传输中,都遵循的规定,包括建立什么样的数据结构,什么样的特殊标志等。
         
        5.网络概念
          [1]网络主机(host)
             功能:标识一台主机在网络中的位置(地址)
             本地地址:'localhost'
                       '127.0.0.1'

             网络地址:'192.168.43.165' 
                     查看本机网络地址:ifconfig       以太网inet地址
                                        ipconfig(windous
    ) '192.168.43.209'
             自动获取地址:0.0.0.0
          [2] IP地址
              功能:确定一台主机的网络路由位置
              结构:IPv4 点分十进制表示 192.168.43.165 每部分取值范围0-255
                    IPv6 128位 扩大了地址范围
                   
              特殊IP:127.0.0.1     本机测试IP
                      0.0.0.0       自动获取本机网卡地址
                      172.40.91.0   通常表示一个网段
                      172.40.91.1   通常表示一个网关
                      172.40.91.255 用作广播地址

          [3] 域名
              定义:给网络服务器地址起名字
              作用:方便记忆,表达一定的含义
             *ping [ip]:测试和某个主机是否联通
             
          [4] 端口号(port)        
              作用:端口是网络地址的一部分,用于区分主机上不同的网络应用程序
              特点:一个系统中的应用监听端口不能重复
              取值范围:1-65535
                        1-1023 系统应用或者大众程序监听端口
                        1024-65535 自用端口
                       
    二.传输层服务
         面向连接的传输服务(基于TCP协议的数据传输)
             1.传输特征:
               提供了可靠的数据传输,可靠性指数据传输过程中无丢失,无失序,无差错,无重复
             2.实现手段:
               在通讯前需要建立数据连接,通信结束要正常断开连接
               [1] 三次握手(建立连接)
                   1.客户端向服务器发送消息报文请求连接
                   2.服务器收到请求后,回复报文确定可以连接
                   3.客户端收到回复,发送最终报文建立连接
               [2] 四次挥手(断开连接)
                   1.主动方发送报文请求断开连接
                   2.被动方收到请求后,立即回复,表示准备断开
                   3.被动方准备就绪,再次发送报文表示可以断开

                   4.主动方收到确定,发送报文完成最终断开
             3.适用情况
               对数据传输准确性有明确要求,传输文件较大,需要明确可靠性的情况。比如:网页获取,文件下载,邮件收发
              
              
         面向无连接的传输服务(基于UDP协议的数据传输)
             1.传输特征:
               不保证传输的而可靠性,传输过程没有连接和断开,数据收发自由随意
             2.使用情况
               网络较差,对传输可靠性要求可靠性不高,比如:网络视频,群聊,广播
              
    面试要求:1.OSI七层模型介绍一下,tcp/ip模型是什么
               2.tcp服务和udp服务有什么区别
               3.三次握手和四次挥手指什么,过程是什么样的
              


    三.socket套接字编程
        1.套接字:实现网络编程进行数据传输的一种技术手段
        2.python实现套接字编程
          import socket
        3.套接字分类
         流式套接字(SOCK_STREAM):以字节流方式传输数据,实现tcp网络传输方案
         
          数据报套接字(SOCK_DGRAM):以数据报的形式传输数据,实现udp网络传输方案

         
          面向连接--tcp协议 --可靠的--流式套接字
          无连接--dup协议--不可靠--数据报套接字
         
          *函数:功能,参数,返回值
         
         tcp套接字编程
           [1]服务端流程
           import socket(前提)
                          .类(类的参数传给初始化。。)
          1.创建套接字
               sockfd = socket.socket(socket_family=AF_INET,
                                      socket_type = SOCK_STREAM,
                                      proto=0)

               功能:创建套接字
               参数:socket_family 网络地址类型 AF_INET--->ipv4
                     socket_type   套接字类型 SOCK_STREAM流式,SOCK_DGRAM数据报
                     proto 通常为0 选择子协议
               返回值:套接字对象
          
           2.绑定地址
             sockfd.bind(addr)

             功能:绑定本机网络地址
             参数:二元元组(ip,port) ('127.0.0.1',8888)自己访问
                                     (localhost)自己访问
                                        ('0.0.0.0',8888)
                                        ('ip',)
           3.设置监听
             sockfd.listen(n)

             功能:将套接字设置为监听套接字,确定监听队列大小
                                                     *一个套接字可以连接多个客户端(一个个连接)--队列
                                                     *参数n在Linux下无用
             参数:监听队列大小
            
          4.等待处理客户端请求
             connfd,addr = sockfd.accept()

             功能:阻塞等待处理客户端请求
             返回值:connfd 客户端连接套接字
                     addr 连接的客户端地址
             *阻塞函数:程序运行过程中遇到阻塞函数则暂停执行,直到达成某种条件后继续运行
            
          5.消息收发
             data = connfd.recv(buffersize)

             功能:接收客户端消息
             参数:每次最多接收消息的大小
             返回值:接收到的内容
            
             n = connfd.send(data)
             功能:发送消息
             参数:要发送的内容 bytes格式
             返回值:发送的字节数
            
             * str -->bytes string.encode()
               bytes -->str  bytes.decode()
              
           6.关闭套接字
             sockfd.close()
             功能:关闭套接字

      1 import socket
      2 
      3 #创建套接字
      4 sockfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      5 #绑定地址
      6 sockfd.bind(('0.0.0.0',8888))
      7 
      8 #设置监听
      9 sockfd.listen(5)
     10 #等待处理客户连接
     11 print("waitting for connect...")
     12 connfd,addr = sockfd.accept()
     13 print("Connect from",addr)#客户地址
     14 
     15 #收发消息
     16 #收
     17 data = connfd.recv(1024)
     18 print("Receive message",data.decode())
     19 #发
     20 n= connfd.send(b"Receve your message!!")
     21 print("Send %d bytes"%n)
     22 #关闭套接字
     23 connfd.close()#连接套接字
     24 sockfd.close()#监听套接字
    tcp_server.py
      1 from socket import *
      2 
      3 #创套接字
      4 sockfd = socket()
      5 
      6 #发起连接
      7 server_addr = ('172.40.71.149',8888)
      8 sockfd.connect(server_addr)
      9 
     10 #收发消息
     11 #发
     12 data = input(">>")
     13 sockfd.send(data.encode())
     14 
     15 #收
     16 data = sockfd.recv(4096)
     17 print("From server:",data.decode())
     18 
     19 #关闭套接子
     20 sockfd.close()
    tcp_clent.py

              2019-02-14_8-40-07

  • 相关阅读:
    Win10 x64 + CUDA 10.0 + cuDNN v7.5 + TensorFlow GPU 1.13 安装指南
    工作十一年总结
    Anaconda3 指南
    Win Linux 双系统安装指南
    OBS 录制视频 自己留存
    React Starter Kit 中文文档
    .NET Framework 系统版本支持表
    Hyper-V和其他虚拟机共存 【转】
    Docker入门03——Container
    Docker入门02——Dockerfile详解
  • 原文地址:https://www.cnblogs.com/shengjia/p/10388026.html
Copyright © 2020-2023  润新知