什么是协议(networking protocol)?
拿两个人说话为例,协议就是双方约定好都使用中文交流,或者都使用英语交流。
协议,网络协议的简称,networking protocol网络协议是通信计算机双方必须共同遵从的一组约定。
如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。
咱们按照5层协议来讲解下每层的作用(从下往上的顺序)
1、物理层
把01组成的电信号发送出去。
2、链路层
网卡上有厂商烧录的MAC地址
3、网络层
开始有了IP、子网掩码和网关
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
5、应用层
原文:https://www.cnblogs.com/lilyxiaoyy/p/12012317.html