• 网络基础


    什么是协议(networking protocol)?

    拿两个人说话为例,协议就是双方约定好都使用中文交流,或者都使用英语交流。

    协议,网络协议的简称,networking protocol网络协议是通信计算机双方必须共同遵从的一组约定。

    如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。

    • OSI网络七层协议Open System Interconnection(开放式系统互联参考模型)

    咱们按照5层协议来讲解下每层的作用(从下往上的顺序)

    1、物理层

      把数据打成01组成的电信号发送出去。

    2、数据链路层

      网卡上有厂商烧录的MAC地址。MAC地址|数据

      通信方式-->广播

        在小范围进行通信是没问题的,但是如果计算机的数量非常大,那么广播会带来广播风暴。

    3、网络层

      开始有了IP、子网掩码网关,可以划分子网。IP地址|MAC地址|数据

      IP地址,可以划分子网子网掩码的作用就是可以判断目标地址是否是局域网的地址。

        当前地址:192.168.1.125

        子网掩码:255.255.255.0

        目标地址:192.168.1.134

        当前地址: 11000000 10101000 00000001 01111101

        子网掩码: 11111111 11111111 11111111 00000000

        与后结果: 11000000 10101000 00000001 00000000

        目标地址: 11000000 10101000 00000001 10000110

        子网掩码: 11111111 11111111 11111111 00000000

        与后结果: 11000000 10101000 00000001 00000000

        判断目标地址是否和当前地址是同一子网

          将IP地址和子网掩码转换为01组成的8位二进制数,然后做与操作。与后的结果一样,说明在同一子网内。

    def get_bin_lst(ip):
        """
        将IP地址和子网掩码转换为01组成的8位二进制数
        :param ip: ip地址
        :return: 二进制数
        """
        return list(map(lambda s: format(int(s), "08b"), ip.split(".")))
    
    
    def get_and_result(ip, subnet):
        """
        将IP地址和子网掩码转换为01组成的8位二进制数,然后做与操作
        :param ip: ip地址
        :param subnet: 子网掩码
        :return:
        """
        lst_ip = get_bin_lst(ip)
        lst_subnet = get_bin_lst(subnet)
        result = ""
        for i in range(4):
            res = ""
            for j in range(8):
                res += lst_ip[i][j] and lst_subnet[i][j]
                if j == 7:
                    result += res + " "
        return result
    
    
    ip = "192.168.1.125"
    subnet = "255.255.255.0"
    target = "192.168.1.134"
    ip_res = get_and_result(ip, subnet)
    target_res = get_and_result(target, subnet)
    print(ip_res)
    print(target_res)
    执行结果:
    11111111 11111111 11111111 00000000 
    11111111 11111111 11111111 00000000 
    
    
    与后的结果一样,说明在同一子网内。

     

    4、传输层

      提供了端口port。port端口|IP地址|MAC地址|数据

      TCP 基于连接的,可靠的,效率低。 类似于打电话。双方必须连接上才能说话。端口到65536,建议使用6000以上的端口。

        传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

      UDP 不基于连接的,不可靠的,效率高。类似于发信,写完信就发信,不管收件人收没收到。端口到65536,建议使用6000以上的端口。

        Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)

    5、应用层

      HTTP、HTTPS、SMTP、POP3等应用协议。

  • 相关阅读:
    在linux写一个shell脚本用maven git自动更新代码并且打包部署
    maven mvn 命令行 编译打包
    linux修改文件为可执行文件
    shell脚本中根据端口号kill对应的应用进程
    linux如何查看端口被哪个进程占用?
    LINUX中如何查看某个端口是否被占用
    The JAVA_HOME environment variable is not defined correctly的错误
    Linux配置Java环境变量
    requests
    https://www.cnblogs.com/zheting/category/1086753.html
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/12012317.html
Copyright © 2020-2023  润新知