复习

1.为什么会出现黏包问题
1.首先只有TCP协议中才会出现黏包
2.TCP是面向流的协议
3.在数据传输的过程中使用缓存机制来避免数据丢失
4.因此在连续发送小数据时,或接受大小不符的时候会出现黏包问题
5.本质是因为,接收数据的时候不知道发送数据的长短
2.解决黏包问题
1.在传输大量数据之前,先告诉接收端要发送的数据大小
2.通过struct模块来定制协议

学习内容

1.检测用户合法性
2.学会看源码
1.多个类之间的继承关系要先整理
2.每一个类中的方法,大致列出来
3.所有self对象的调用要清楚了解,到底是谁的对象
4.所有的方法调用要退回到最子类的类中开始寻找,逐级向上

代码区

1.验证客户端合法性

# client
import socket
import hmac
secret_key = b'egg'
sk = socket.socket()
sk.connect(('127.0.0.1', 8080))

msg = sk.recv(1024)
h = hmac.new(secret_key, msg)
client_digest = h.digest()
sk.send(client_digest)
# server
import socket
import os
import hmac
secret_key = b'egg'
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()


def cherk_conn(conn):
    msg = os.urandom(32)
    conn.send(msg)
    h = hmac.new(secret_key, msg)
    digest = h.digest()
    client_digest = conn.recv(1024)
    return hmac.compare_digest(digest, client_digest)

conn, addr = sk.accept()
res = cherk_conn(conn)
if res:
    print('legal client')
    conn.close()
else:
    print('illegal client')
    conn.close()
sk.close()

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄