# GESP等级：二级 | GESP Python 二级考点
"""
网络世界漫游演示程序
面向7-10岁少儿编程教学
演示 LAN / WAN / TCP/IP / DNS / HTTP-HTTPS
"""

print("=" * 50)
print("      网络世界漫游")
print("     LAN · WAN · TCP/IP · DNS")
print("=" * 50)

# ============================================================
# 第一部分：LAN 局域网演示
# ============================================================
print("\n" + "=" * 50)
print("  【一、LAN —— 局域网 · 小圈圈】")
print("=" * 50)

print("""
🏫 场景：智慧小学 3年级2班的教室里
""")

# 模拟局域网内通信
classroom_computers = ["小明", "小红", "小华", "小美", "老师"]

print("教室里有以下同学的电脑：")
for i, name in enumerate(classroom_computers, 1):
    print(f"  电脑{i}：{name}的电脑")

print("\n局域网通信开始——")
print("   小美说：'谁有语文作业答案？'")
print("   小红回复：'我有！我传给你！'")
print("   [数据在小美的电脑 → 交换机 → 小红的电脑]")
print("   ✅ 局域网内传文件成功！速度：1Gbps（超快！）")

print("\n外面的人想加进来……")
print("   校外的张三：'让我也进你们班群！'")
print("   ❌ 拒绝访问！局域网是私有的，外面的人进不来！")

# ============================================================
# 第二部分：WAN 广域网演示
# ============================================================
print("\n" + "=" * 50)
print("  【二、WAN —— 广域网 · 大圈圈】")
print("=" * 50)

print("""
🌍 场景：北京的小明 → 美国纽约的表哥
""")

print("小明在北京给纽约的表哥发消息：'I miss you!'")
print()
print("数据包的旅程：")
print("  第1站：小明家路由器（北京）")
print("  第2站：北京市电信局")
print("  第3站：中国骨干网（可能经过上海）")
print("  第4站：太平洋海底光缆")
print("  第5站：美国西海岸路由器")
print("  第6站：纽约市电信局")
print("  第7站：表哥家路由器")
print("  第8站：表哥的手机 ✅ 到达！")
print()
print("整个过程只用了不到1秒钟！")
print("这就是WAN —— 广域网 · 全世界连在一起！")

# ============================================================
# 第三部分：TCP/IP 四步走演示
# ============================================================
print("\n" + "=" * 50)
print("  【三、TCP/IP —— 寄信四步走】")
print("=" * 50)

# 第4层：应用层
print("📝 第4层：应用层 —— 写内容")
print("   微信说：'你要发的是：你好！'")
print("   数据：'你好！'（字符串）")
print()

# 第3层：传输层
print("✉️ 第3层：传输层 —— 包信封")
print("   把'你好！'切成小数据包：")
print("   包#1：'你'  |  包#2：'好'  |  包#3：'！'")
print("   每个包编号，确保顺序正确")
print()

# 第2层：网络层
print("🏠 第2层：网络层 —— 写地址")
print("   源IP：192.168.1.100（小明电脑）")
print("   目的IP：8.8.8.8（谷歌服务器）")
print("   封装成IP数据包")
print()

# 第1层：网络接口层
print("📬 第1层：网络接口层 —— 投递")
print("   数据包 → 电信号 → 网线 → 路由器 → ……")
print()

print("✅ TCP/IP四步走完成！消息成功送达！")

# ============================================================
# 第四部分：DNS 电话本演示
# ============================================================
print("\n" + "=" * 50)
print("  【四、DNS —— 电话本 · 查号台】")
print("=" * 50)

print("""
场景：你在浏览器输入 www.baidu.com

第一步：电脑说
    'DNS大哥，www.baidu.com 的IP是多少？'

第二步：DNS查电话本
    '让我翻翻……找到了！是 220.181.38.148'

第三步：电脑拿到IP
    '好嘞！我去找 220.181.38.148！'
""")

# 模拟DNS查询
def dns_lookup(domain):
    """模拟DNS查询"""
    dns_table = {
        "www.baidu.com": "220.181.38.148",
        "www.qq.com": "183.3.226.35",
        "www.douyin.com": "180.163.44.91",
        "www.163.com": "123.58.180.8",
        "www.google.com": "142.250.80.4",
    }

    print(f"🔍 正在查询：{domain} ……")
    if domain in dns_table:
        ip = dns_table[domain]
        print(f"   ✅ 找到了！{domain} 的IP是 {ip}")
        return ip
    else:
        print(f"   ❌ 找不到 {domain} 的IP，请检查域名是否正确！")
        return None

print("\n📋 我们来查几个网站的电话本：")
dns_lookup("www.baidu.com")
dns_lookup("www.qq.com")
dns_lookup("www.google.com")
dns_lookup("www.notexist123456.com")

print("\n💡 DNS小知识：全球有超过1000万台DNS服务器！")

# ============================================================
# 第五部分：HTTP vs HTTPS
# ============================================================
print("\n" + "=" * 50)
print("  【五、HTTP vs HTTPS —— 明信片 vs 加密信】")
print("=" * 50)

print("\n📮 HTTP —— 明信片（不安全）")
print("  小明寄明信片给小红：'我喜欢你！'")
print("  送信的路上，邮递员小李看了一眼……")
print("  '哈哈！小明喜欢小红！'")
print("  ⚠️ HTTP是明文传输，中间人能看到内容！")

print("\n🔒 HTTPS —— 加密信（安全）")
print("  小明寄加密信给小红：'我喜欢你！'")
print("  （用只有小红能打开的密码锁锁上了）")
print("  送信的路上，邮递员小李看了一眼……")
print("  '这写的啥呀？看不懂！'")
print("  ✅ HTTPS加密传输，中间人看不到内容！")

print("\n" + "-" * 40)
print("对比：")
print(f"{'特性':<15}{'HTTP':<15}{'HTTPS':<15}")
print("-" * 40)
print(f"{'加密':<15}{'无':<15}{'有 (SSL/TLS)':<15}")
print(f"{'安全':<15}{'❌':<15}{'✅':<15}")
print(f"{'速度':<15}{'快一点':<15}{'慢一点(加密)':<15}")
print(f"{'网址前缀':<15}{'http://':<15}{'https://':<15}")
print(f"{'浏览器标志':<15}{'无/不安全':<15}{'🔒 锁':<15}")
print("-" * 40)

# ============================================================
# 第六部分：IP地址秀
# ============================================================
print("\n" + "=" * 50)
print("  【六、IP地址 —— 门牌号大全】")
print("=" * 50)

print("\n常见的IP地址展示：")
print("  127.0.0.1  → 本机（自己的电脑）")
print("  192.168.1.1 → 家用路由器地址（常见）")
print("  8.8.8.8    → 谷歌DNS服务器")
print("  114.114.114.114 → 国内DNS服务器")
print("  255.255.255.255 → 广播地址（所有人）")

print("\n🔢 IP地址规则：")
print("  IPv4：4个数字，用点隔开，每个数字 0~255")
print("  例如：10.0.0.1 ✅   |   256.300.1.1 ❌")
print("  ✓ 10.0.0.1 合法")
print("  ✗ 256.300.1.1 非法（256和300超出0-255范围）")

print("\n" + "=" * 50)
print("  🌐 GESP考点小测试 🌐")
print("=" * 50)

print("\n📝 判断题：")
print("1. 局域网比广域网覆盖范围大。（  ）")
print("   答案：×  局域网范围小，广域网范围大")
print()
print("2. DNS的作用是把域名翻译成IP地址。（  ）")
print("   答案：√  DNS就是互联网的电话本")
print()
print("📝 选择题：")
print("3. 以下哪个是合法的IP地址？")
print("   A. 192.168.1.1   B. 256.1.1.1   C. 192,168,1,1")
print("   答案：A")
print()
print("4. HTTPS比HTTP多了什么？")
print("   A. 速度更快   B. 加密功能   C. 更多内容")
print("   答案：B  HTTPS = HTTP + 加密")

print("\n" + "=" * 50)
print("   网络世界漫游结束！")
print("   记住动作：LAN小圈 / WAN大圈 / TCP/IP四步走")
print("=" * 50)
