• 网络基础相关内容


    帅爆太阳的男人

    1,网络基础相关的知识

    • 1.1>架构
      • 1.1.1>c/s架构:client客户端和server服务器端
        • 优势:能充分发挥pc机的性能
      • 1.1架构.2>b/s架构:browser浏览器和server服务器,隶属于c/s架构
        • b/s架构 统一了应用的接口
    • 1.2>通信的事:
      • 1.2.1>同一台电脑上两个py程序通信:打开一个文件
      • 1.2.2>两个电脑通信:连一个网线
      • 1.2.3>多个电脑通信:
    • eg:电脑1(源)要找电脑2(目标)
      • 电脑1首先发送一个请求帧,里边包含(电脑1的IP地址:192.168.1.1,电脑1的mac的地址:xxxxx,寻求目标的IP地址为192.168.1.2de 主机)把这条请求帧交给交换机,交换机以广播的形式传给其他所有的主机
      • 所有主机接收到消息后,都会对比自己的IP地址,当目标主机的的IP地址和区广播的IP地址一致时,回复给交换机(回复的内容包括自己的IP地址和mac地址)
    • 此时交换机以单播的形式返回给源主机

    2,知识点

    • 2.1>mac地址:是一个物理地址,全球唯一,是有网卡制造商分配的,类似于身份证
    • 2.2>IP地址:是一个四位点分十进制,它表示了计算机在网络中的位置,类似于学号
    • 2.3>交换机的通信方式:
      • 广播:放射状信息(吼一嗓子)
      • 单播:一对一
      • 组播:一对多
    • 2.4>arp协议:通过目标IP地址来获取目标的mac地址的一个协议
    • 2.5>端口:操作系统为本机上每一个运行的程序都随机分配一个端口(程序级别的),其他电脑上的程序可以通过端口获取到这个程序(类似于文件句柄),IP地址+端口  能唯一找到某台电脑上的某一个服务程序
    • 2.6>路由器:链接不同网段,路由
    • 2.7>网关:类似于 一个局域网的出口和入口
    • 2.8>网段:一个局域网内的IP地址范围
    • 2.9>子网掩码:子网掩码和IP地址得到网段 (255)
    • 2.10>osi五层模型:
      • 应用层    :http/https/ftp
      • 传输层    :tcp/udp      四层交换机/四层路由器
      • 网络层    :IP协议      路由器/三层交换机
      • 数据链路层  :arp协议       以太网交换机/网卡/网桥
      • 物理层    :传输电信号    网线/光纤/集线器

    3,socket模块

    • socket又叫套接字,有很多种类型
    • 3.1>AF_UNIX基于文件类型的套接字(早期socket是源自unix系统而研发的一个功能,主要是为了用一台电脑上,多个程序直接通信),unix的中心思想是:一切皆文件
    • 3.2>AF_INET基于网络类型的套接字
      • type:一种是基于TCP协议   SOCK_STREAM
      • 一种是基于UDP协议    SOCK_SYREM
    • TCP协议:可靠的,面向连接的,面向字节流形式的传输方式
    • UDP协议:不可靠的,不面向连接的,面向数据报的传输方式,但是它快

     

    4,client和server代码

    • server服务端:
    import socket
    
    sk = socket.socket()  # 括号里不用传参数,默认是基于网络型的套接字,协议:TPC(好比买了一部手机)
    
    sk.bind(("192.168.12.37",8008))  # 买一张手机卡(里边以元组的形式包括IP地址,端口,的端口的范围是:0-65535,但是0-1023i操作系统用的,不要用,所以的端口的数字在范围内可以随便给)
    
    sk.listen()  # 不用传参数,表示同时能接收的连接(相当于开机)
    
    conn,addr = sk.accept()  # 等待接收客户端的连接,是一种阻塞等待(相当于等待开机)
    
    while 1:
        mas_c = conn.resv(1024)  # 建立起联系然后接收客户端发送的消息(conn里边包括客户端的消息)括号里必须给一个参数是字节数的倍数这个数尽量大一点,保证一次都接收完
        print("mas_c".encode("utf-8"),addr)
        massage = input(">>>")
        conn.send(massage.encode("utf-8"))
    
    conn.close()
    
    sk.close()
    • client客户端
    import socket
    
    sk = socket.socket()  # 建立通信的条件
    
    sk.connect(("192.168.12.37",8008))  # .和要通信的主机连接
    
    while 1:
        mass = input(">>>")
        sk.send(mass.encode("utf-8"))
        mas_c = sk.resv(1024)
        print(mas_c.decode("utf-8"))
    
    sk.close()
  • 相关阅读:
    201671010145 20162017 《Java程序设计》java的继承中什么叫方法覆盖,是如何实现的?
    201671010145 20162017《Java程序设计》Java接口的功能
    Java与C语言的区别
    201671010145 201620173《Java程序设计》Java中类与对象的区别
    Java 加密算法
    Java 基础
    Java 新建线程时使用线程池处理
    sublime text 3安装
    C语言的基本数据类型
    有点跑题的随笔
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/9505979.html
Copyright © 2020-2023  润新知