• TCP协议与UDP协议


    TCP协议

    • 类似于打电话(代码实现见上一章节)

    • 特点:可靠 、慢、全双工通信

    • 建立连接的时候:三次握手:syn ack

    • 断开连接的时候:四次挥手:fin ack

    • 区别:

    • 三次握手把一个回复和请求连接的两条信息合并成一条了
      -由于乙方断开连接之后,可能另一方还有数据没有传递完,所以不能立即断开,所以回收的时候不能合并信息

    • 在建立起连接之后

      • 发送的每一条信息都有回执
      • 为了保证数据的完整性,还有重传机制
    • 长链接:会一直占用双方的端口

    • IO(input,output)操作,输入和输出是相对内存来说的

      • write/send ——> output
      • read/recv ——> input话
    • 特点:可靠 、慢、全双工通信

    • 建立连接的时候:三次握手

    • 断开连接的时候:四次挥手

    • 在建立起连接之后

      • 发送的每一条信息都有回执
      • 为了保证数据的完整性,还有重传机制
    • 长链接:会一直占用双方的端口

    • IO(input,output)操作,输入和输出是相对内存来说的

      • write/send ——> output
      • read/recv ——> input

    UDP协议

    • 类似于发短信
    • 无连接 速度快
    • 可能会丢失消息

    应用场景

    • TCP 文件的上传下载(发送邮件、网盘、缓存电影)、保证数据的可靠,高清电影的下载
      • 能够传递的数据几乎没有限制
    • UDP 及时通信类(qq、微信、飞秋),在线观看视频
      • 能够传递的数据的长度是有限的,是根据传递设备的设置有关系(路由器的最小字节)

    带身份带颜色变换的无限多用户通讯

    #sever端
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)#起了个udp协议
    sk.bind(("127.0.0.1",9000))
    while True:
        msg,client_addr = sk.recvfrom(1024) #需要知道通信地址
        print(msg.decode("utf-8"))      #收完后解码
        msg = input(">>>").encode("utf-8")
        sk.sendto(msg,client_addr)      #按照其通信地址发送信息
    sk.close()
    
    #client1端
    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    while True:
        inp = input(">>>").encode("utf-8")
        sk.sendto(inp,("127.0.0.1",9000)) #发
        ret = sk.recv(1024)               #收
        print(ret.decode("utf-8"))
    sk.close()
    
    
    #client2端
    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    while True:
        inp = input(">>>").encode("utf-8")
        sk.sendto(inp,("127.0.0.1",9000))
        ret = sk.recv(1024)
        print(ret.decode("utf-8"))
    sk.close()
    
    记录学习的点点滴滴
  • 相关阅读:
    前端网络安全——其他安全问题
    前端网络安全——密码安全
    前端网络安全——接入层注入
    前端网络安全——点击劫持
    mac重装系统后安装列表
    manjaro踩坑记录
    JavaScript学习过程中遇到的一些坑
    JavaScript学习
    [解决方法] 如何在没有屏幕的情况下训练一些需要显示的程序
    Python中*号的作用详解
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/14841805.html
Copyright © 2020-2023  润新知