• 29 网络编程基础


    1 网络基础相关的知识

    (1) 架构

    1. C / S架构 : client客户端  server服务器  

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

    1. B / S架构 : browser浏览器  server服务器   隶属C/S架构

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

    (2) 通信的事:

    1. 同一台电脑两个py程序通信  : 打开一个文件
    2. 两个电脑如何通信 : 连一个网线
    3. 多个电脑通信 :

      ex : 电脑1(源)要找电脑2(目标)

      电脑1首先发送一个请求帧,期中包含(ip192.168.1.1,我的mac地址是xxxxxxxx,ip地址为192.168.1.2主机),将此请求发送给交换机.

      交换机要广播这条消息给其他所有主机

      目标主机接收到消息后,对比发现自己就是被找的主机,回复给交换机信息(我ip地址是192.168.1.2,我的mac地址是yyyyyyyyy,请回复给ip地址192.168.1.1,mac地址为xxxxxxx的主机)

      交换机单播形式返回给主机

                  

    知识点 :

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

       2  ip地址:    一个四位点分十进制,它标识了计算机在网络中的位置.类似于 学号

       3  交换机的通信方式:

             广播 : 吼一嗓子

             单播 : 一对一

             组播 : 对多

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

       5  端口 : 操作系统本机上每一个运行的程序都随机分配一个端口,其他电脑上的程序可以通过端口获取到这个程序

          ip地址 + 端口 唯一找到某台电脑上的某一个服务程序

       6  路由器 : 连接网段 , 路由

       7  网关   : 类似于一个局域网的出口和入口

       8  网段   : 一个局域网ip地址范围

       9  子网掩码 : 子网掩码 &  ip地址  得到网段

       10  osi 五层模型:

    应用       :  http,https,ftp

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

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

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

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

    面试题:

    交换机和路由器的区别?

      

    2 socket模块

      这是一个新的模块   import socket

      socket 又叫做套接字

      很多种类型,但是咱们只需要知道两种就可以了

      简单的代码:

        一、  

    # 
    import socket
    import time
    sk = socket.socket()# 不传参数,默认使用基于网络类型的套接字, 协议 : TCP
    
    sk.bind(('192.168.12.104',18080))# 端口的范围是0-65535   但是 0-1023 这些你别用
    sk.listen()# 同时能接受的连接
    
    print(123)
    conn,addr = sk.accept()# 等待接受客户端的连接  阻塞等待
    print(456)
    print('conn:',conn)
    print('addr:',type(addr))
    
    time.sleep(20)
    
    conn.close()
    sk.close()
    服务端的代码
    import socket
    import time
    sk = socket.socket()
    
    sk.connect(('192.168.12.104',18080))# 连接
    
    time.sleep(20)
    
    sk.close()
    客户端的代码

    二、

    import socket
    import time
    sk = socket.socket()# 我买一个新手机
    
    sk.bind(('192.168.12.104',18080))#  我买一个手机卡
    
    sk.listen()# 开机
    
    print(123)
    conn,addr = sk.accept()# 等待朋友给我打电话
    
    
    msg_r = conn.recv(10)# 接受数据,接受10个字节
    print(msg_r.decode('utf-8'),addr)
    
    
    conn.close()# 挂断电话
    sk.close() # 关机
    服务端代码
    import socket
    import time
    sk = socket.socket()
    
    sk.connect(('192.168.12.104',18080))# 连接
    
    sk.send('中文'.encode('utf-8'))
    
    sk.close()
    客户端的代码

          sk = socket.socket(family = AF_INET, type=SOCK_STREAM)

          family :

      一种 : AF_UNIX基于文件类型的套接字(早期socket是源自于unix系统而研发的一个功能,主要是为了同一台电脑上,多个程序直接通信)  unix系统的中心思想是 : 一切皆文件

          一种 : AF_INET基于网络类型的套接字

          type:

            一种是基于TCP协议   SOCK_STREAM

            一种是基于UDP协议   SOCK_DGRAM

          tcp 协议 : 可靠,面向连接的,面向字节流形式的传输方式

          udp协议 : 不可靠,不面向连接的,面向数据的传输方式,但是它快

    重点顺序:

    arp协议

    路由器与交换机的区别?

    tcp协议和udp协议的特点,tcp协议的编码

    软件开发架构

    osi五层模型

    作业:

      1 总结博客园

      2 自己去查路由器和交换机的区别

      3 代码:

          需求a: 基于我的代码,将此改成,可以一直聊天的逻辑,并且 标识退出的的逻辑

          需求b: 试试群聊(tcp不行),但是tcp可以让你和某个人聊完之后再去和别人聊

    解释    

    tcp服务器  当前正在和client1 聊天

       此时client2 来连接服务器,   client2会等待,一直等到服务器和client1断开连接之后才行.

  • 相关阅读:
    Python网络编程 —— 粘包问题及解决方法
    Python网络编程 —— socket(套接字)及通信
    Python网络编程 —— 网络基础知识
    Python
    MySQL 之 数据的导出与导入
    MySQL 之 慢查询优化及慢日志管理
    MySQL 之 索引进阶
    MySQL 之 索引
    MySQL 之 事务
    MySQL 之 表的存储引擎
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/12663672.html
Copyright © 2020-2023  润新知