V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abser
V2EX  ›  程序员

如何设计一个网络协议栈?

  •  2
     
  •   abser ·
    abserari · 2020-12-27 16:16:19 +08:00 · 4245 次点击
    这是一个创建于 1438 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2020-12-28 11:48:04 +08:00
    栈是否是一套协议的组合?

    https://github.com/google/netstack gVisor 中的实现.

    如何根据一个业务设计出一个协议栈?

    如支付业务, 支付网关和中间件的设计算协议栈的设计的一部分吗?
    13 条回复    2020-12-27 23:13:22 +08:00
    Tianao
        1
    Tianao  
       2020-12-27 16:19:04 +08:00
    好家伙,你想实现什么,或者说想实现哪个分层网络模型中的哪几层功能?
    Lemeng
        2
    Lemeng  
       2020-12-27 16:25:28 +08:00
    有意思,呵呵
    tubowen
        3
    tubowen  
       2020-12-27 16:51:32 +08:00
    ns-3 ?
    irytu
        4
    irytu  
       2020-12-27 17:04:29 +08:00 via iPhone
    去看看 lwIP
    nezumi85757
        5
    nezumi85757  
       2020-12-27 17:08:16 +08:00
    先熟读 tcp/ip 协议栈详解
    v2lf
        7
    v2lf  
       2020-12-27 17:37:20 +08:00
    能写协议规范的 就是牛逼

    你是想重新写代码实现现在的协议栈,还是要自己设计规范
    nthhdy
        8
    nthhdy  
       2020-12-27 20:04:58 +08:00   ❤️ 1
    为什么想要实现网络协议栈呢?
    目前的各层协议已经很成熟了,常见的问题基本都能解决。
    如果真是对协议栈设计的过程感兴趣,可以看看现在各网络协议的设计、发展历史。
    jingkaimori
        9
    jingkaimori  
       2020-12-27 20:37:40 +08:00   ❤️ 1
    题主应该是要在某个非标准的物理层协议(例如非标准的电压逻辑)上把剩下几层协议写出来,我感觉这种情况下应该看系统的需求规定数据流格式
    wangbenjun5
        10
    wangbenjun5  
       2020-12-27 20:45:27 +08:00
    一般也就实现一个应用层的协议吧,这倒是挺多的,只不过大部分情况下没必要,常见的开源协议完全足够用,但是某些情况下为了安全或者实现特殊功能也会自己设计协议,比如 QQ 用的协议
    janxin
        11
    janxin  
       2020-12-27 20:58:06 +08:00
    先写一个网络协议规范,然后实现它
    lewis89
        12
    lewis89  
       2020-12-27 22:15:31 +08:00
    实际上网络都不是设计出来的,本来设计了 OSI7 层,结果呢? 本地 LAN 就 4 层,广域网上可能只用 IP 协议,IP 下面的链路层跟家用的 LAN 又不一定一样。
    bojongle
        13
    bojongle  
       2020-12-27 23:13:22 +08:00
    tcp 的稳定性,拥塞控制等各种东西你要自己再想一套出来的话怕是得对数学和统计有很深理解才可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5246 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:49 · PVG 11:49 · LAX 19:49 · JFK 22:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.