• 互联网协议与socket编程


    昨天我们讲了互联网协议 tcp五层

    物理层:高低电压传输数据

    数据链路层:以太网  报,报头和数据 报头前面固定的字节来写源地址,目标地址,和数据类型

    mac地址:网卡上出厂时自带的一个编号,前六位是厂商信息,后六位是流水线号

    在相同的局域网的情况下,我们要传输文件,找目标地址,需要通过交换器,交换器有自动学习mac的能力,只要你一传输文件,它就会记住你的网口号和mac地址,然后,向它其他网口所有的计算机发消息,有一个匹配上目标地址的计算机会回复交换器,交换器就会记住它的mac地址和所在的网口号,这样只要你两边都不拔网线的情况下,下次你要再给目标传文件,就会直接传输,不用再去寻找了,如果拔掉了网线,交换器 还有更新学习的能力,会自动把没用的信息删除

    网络层:如果不在一个区域网,就需要通过ip地址来找mac地址,我们就用到了ARP协议

    传输层:通过端口来找到软件,建立端口到端口的通信 而建立通信的方式分为tcp和upd两种

    tcp被称为好人,只要跟它建立了连接 ,消息发过来,它必定会回复

    而upd它不跟你建立连接,它给你发送消息 不会等你回复 直接干死了

    socke编程

    客户端

    import socket
    
    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 买电话
    phone.connect(('127.0.0.1',8081)) # 拨电话,地址为服务端的ip和端口
    
    phone.send('你好'.encode('utf-8')) # 发消息b'hello'
    data=phone.recv(1024) #收消息
    
    print(data.decode('utf-8'))
    
    phone.close()

    服务端

    import socket
    
    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 买电话
    phone.bind(('127.0.0.1',8081)) #插手机卡,补充:0-65535 0-1024给系统用的
    phone.listen(5) # 开机
    
    print('start...')
    conn,client_addr=phone.accept() # 等电话连接
    print('连接来了:',conn,client_addr)
    
    # 收发消息
    msg=conn.recv(1024) #收消息,1024是一个最大的限制
    print('客户端的消息: ',msg)
    conn.send(msg+b'SB')
    
    
    # 挂电话
    conn.close()
    # 关机
    phone.close(
  • 相关阅读:
    将wordpress中的文章导出为markdown
    配置腾讯云的出入站规则
    C/C++基础:main函数的参数argc和argv
    解决IDEA maven多模块打包问题
    信息安全系统设计基础第十一周学习总结
    201355315宋宸宁20135333苏正生信息安全系统设计基础——实验一实验报告
    读书笔记——《暗时间》
    信息安全系统设计基础第十周学习总结——实践
    家庭作业
    信息安全系统设计基础第九周学习总结
  • 原文地址:https://www.cnblogs.com/yftzw/p/8885841.html
Copyright © 2020-2023  润新知