网络基础

什么是协议(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等应用协议。

原文地址:https://www.cnblogs.com/lilyxiaoyy/p/12012317.html