从底往上第一个坏在哪

👁️ 1 人浏览 💬 0 人评论 ❤️ 添加收藏

按模型,fault_step({"解析": True, "连接": False, "加密": True, "请求": True}) 交回什么?

贯穿本节的全链路模型(判题机不联网、镜像没 dig/tcpdump,这是它的确定模型,见 spine.py):一次访问要依次走通四步——解析(DNS) → 连接(TCP) → 加密(TLS) → 请求(HTTP);证据 ev{步名: 是否 OK}

定位:fault_step(ev)=从底往上第一个坏的步、deeper(a,b)=更靠底的、next_step=接着查上一步、all_ok=四步全通。

STEPS = ["解析", "连接", "加密", "请求"]


def fault_step(ev):
    """从底往上(解析最底)第一个不 OK 的步;全 OK 交回空串。"""
    for s in STEPS:
        if not ev.get(s, True):
            return s
    return ""


def deeper(a, b):
    """哪一步更靠底层(解析最底、请求最上);交回更底的那个。"""
    return a if STEPS.index(a) <= STEPS.index(b) else b


def next_step(step):
    """这一步没问题,接着查上面一步;到请求就停在请求。"""
    i = STEPS.index(step)
    return STEPS[min(i + 1, len(STEPS) - 1)]


def all_ok(ev):
    """四步是否全通。"""
    return all(ev.get(s, False) for s in STEPS)

print(fault_step({"解析": True, "连接": False, "加密": True, "请求": True}))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论