zoukankan      html  css  js  c++  java
  • 网络基础相关知识内容

    day29

    1.网络基础相关的知识

      1.1 架构

        1.1.1  C/S 架构   服务器/客户端

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

        1.1.2  B/S 架构  服务器/浏览器 (隶属于C/S架构)

          优势: 统一了应用的接口 

      1.2 通信的事

        1.2.1  同一台计算机上两个py 程序通信,打开一个文件

        1.2.2  两个电脑通信,连接一根网线

        1.2.3  多态电脑通信

          eg: 电脑1 想要找到电脑2通信.

          通信过程: 电脑1发送一个请求帧(包含目标主机的ip地址,还有本主机的ip地址和物理mac地址)给交换机,交换机会广播(吼一嗓子),当主机2收到交换机的广播后,知道有主机要寻找主机2,主机2会给交换机一个回应,此时交换机就会告诉主机1,主机2找到了,此时主机1和主机2就可以互相通信了.

    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地址&可以得到网段

      2.10  osi五层结构

        引用层                       http/htpps/ftp 

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

        网络层      IP协议        路由器/三层交换机

        数据链路层    ARP协议       以太网交换机/网卡/网桥

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

    3.socket 模块(套接字)

      socket又叫做套接字,有很多种类型

      3.1  AF_UNIX基于文件类型的套接字,unix的中心思想就是: 一切皆文件

      3.2  AF_INET基于网络类型的套接字

        type:一种是基于TCP协议   SOCK_STREAM

          一种是基于UDP协议   SOCK_SYREM

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

        UDP协议:不可靠的,面向无连接,面向数据包传输.传输速度相对要快

    4.client和service代码

    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".decode("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() 

     
  • 相关阅读:
    84. Largest Rectangle in Histogram (Solution 2)
    84. Largest Rectangle in Histogram (Solution 1)
    73. Set Matrix Zeroes
    【JavaScript】Symbol 静态方法
    【JavaScript】Date
    【JavaScript】Math
    725. Split Linked List in Parts把链表分成长度不超过1的若干部分
    791. Custom Sort String字符串保持字母一样,位置可以变
    508. Most Frequent Subtree Sum 最频繁的子树和
    762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量
  • 原文地址:https://www.cnblogs.com/kcwxx/p/9506752.html
Copyright © 2011-2022 走看看