在Firefox的WebRTC会话描述中,"sdparta"代表什么?

24
在Firefox中进行WebRTC信令时生成offer和answer对象时,Mozilla加入了一个关于Session Description Protocols的双关语,通过返回带有“THIS_IS_SDPARTA”的答案和提议来实现。
除了有趣之外,“SDParta”中的“arta”部分是否有任何意义?

以下是两个SDP。一个是在Chrome中创建的,另一个是在Firefox中创建的,它们都使用相同的Web应用程序、STUN服务器和信令服务器。

由Chrome生成的webRTC应答对象:

"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=-```numbers omitted``` 2 IN IP4 123.4.5.6\r\ns=-\r\nt=0 0\r\na=group:BUNDLE data\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:CYLs\r\na=ice-pwd:```pwd omitted```\r\na=ice-options:trickle\r\na=fingerprint:sha-256 ```sha-256 omitted```\r\na=setup:active\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"
}

由Firefox生成的WebRTC应答对象:

"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=mozilla...THIS_IS_SDPARTA-61.0.2```numbers omitted``` 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 ```sha-256 omitted``` \r\na=group:BUNDLE sdparta_0\r\na=ice-options:trickle\r\na=msid-semantic:WMS *\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=sendrecv\r\na=ice-pwd:```pwd omitted```\r\na=ice-ufrag:8e051271\r\na=mid:sdparta_0\r\na=sctpmap:5000 webrtc-datachannel 256\r\na=setup:active\r\na=max-message-size:1073741823\r\n"
}

"'THIS_IS_SDPARTA' 是指向电影 300 和随后的meme,THIS IS SPARTA

根据 RFC 4566 中的会话描述协议,原始值是通过SDP字符串中的 'o=value' 分配的:

"
o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

我假设“THIS_IS_SDPARTA”被视为会话ID的非正式前缀,根据协议。

我找不到任何与SDP或WebRTC相关的“ARTA”作为首字母缩写的用途。作为一个词,“Arta”可能是一个人的名字,或者是希腊、吉布提或阿尔巴尼亚的一个地方。我找不到古斯巴达和阿尔塔之间除了都是希腊的之外的任何联系。维基百科关于“Arta”的消歧义页面。

在堆栈溢出上搜索“this_is_sdparta”或“sdparta”会返回用户排除其SDP和信令问题的代码片段,没有人在标题中询问过有关sdparta的问题SO搜索“sdparta”,也没有任何答案直接讨论过“sdparta”或“this_is_sdparta”。

我找到了两个开发人员专门谈论“this_is_sdparta”的例子。其中一个是Iñaki Baz Castillo的推文,没有技术解释:

Firefox Nightly #WebRTC中的幽默感:

v=0 o=mozilla...THIS_IS_SDPARTA-37.0a1 44108 0 IN IP4 0.0.0.0 a=group:BUNDLE sdparta_0 sdparta_1

另一篇是一篇文章,我很难找到作者的名字,大多数人只是享受其中的幽默。这是一张截图:THIS IS SDPARTA 注:这是我删除的一个问题的转贴,因为它包含了个人网络连接细节。对于造成的困惑,我很抱歉。
除了有趣之外,'SDParta'中的 'arta' 部分是否有任何含义?
3个回答

56
在2014年,包括我在内的5个Mozilla开发人员将自己锁在AirBnB里一周,为Firefox添加多流支持。周一晚上,我们得出结论,使用当前代码库无法实现这一目标,因为当时它包含了思科的完整SIP堆栈。周二早上,我们开始剥离所有我们不再想使用的代码,并开始用适用于WebRTC更高级用例的从头编写的代码进行替换。
你可以想象,在那周结束时,我们所有人都对晦涩难懂的会话描述协议感到非常厌烦。所以当Adam提出该漏洞报告时,Byron开始研究SDP语法以及我们可以放置Firefox版本号的位置。那时,我们意识到这将是添加一些有趣内容的理想场所。
简而言之,这只是一个典型的彩蛋,开发者们想要增加一些乐趣,没有其他意图。

听起来是相当不错的一周。感谢分享细节!我没想到团队中有两个人都回答了。 - BEVR1337
2
复活节彩蛋很有趣,但在协议中使用它并不严肃。例如,我想知道为什么WebRTC连接在一分钟后失败,并被要求检查about:webrtc,看到了THIS_IS_SDPARTA。当我们试图找出某些东西失败的原因时,看到这样的玩笑是很奇怪的。 - baptx
8
我不同意。说真的,整天阅读rfc可能会带来压力。如果没有小事情让你开心,我们怎么能在生活中保持平衡呢? - Millar248
@Jonathan 如果你只需要UDP,那你为什么还需要浏览器呢?你可以通过从操作系统获取UDP套接字来运行自己的运行时。 - Nils Ohlmeier
1
@NilsOhlmeier 你说的没错,但是现在浏览器是分发游戏最快、最简单的方式。而且它是跨平台的,因此目标受众比任何其他工具都广泛。而且你可以推出即时更新。 - Jonathan
显示剩余2条评论

29

继Nils的回答之后,我不记得在我们五个人中是谁的想法,但我认为可能是Martin。它在代码中第一次出现的地方是重写代码中的一些ASCII艺术作品,可在这里查看。

我们知道这种重写是极端且冒险的,但我们对当前代码状态的耐心终于耗尽了,在房间里的氛围让人想起Leeroy Jenkins。因此,一点儿愚蠢的幽默感悄然渗入了代码。


         ,-----.                  ,--.  ,--.
        '  .--./ ,--,--.,--.,--.,-'  '-.`--' ,---. ,--,--,
        |  |    ' ,-.  ||  ||  |'-.  .-',--.| .-. ||      `
        '  '--'\\ '-'  |'  ''  '  |  |  |  |' '-' '|  ||  |
         `-----' `--`--' `----'   `--'  `--' `---' `--''--'

                        :+o+-
                      -dNNNNNd.
                      yNNNNNNNs
                      :mNNNNNm-
                       `/sso/``-://-
                        .:+sydNNNNNNms:                      `://`
                 `-/+shmNNNNNNNNNNNNNNNms-                  :mNNNm/
           `-/oydmNNNNNNNNNNNNNNNNNNNNNNNNdo-              +NNNNNN+
       .shmNNNNNNNNNNNmdyo/:dNNNNNNNNNNNNNNNNdo.         `sNNNNNm+
       hNNNNNNNNmhs+:-`   .dNNNNNNNNNNNNNNNNNNNNh+-`    `hNNNNNm:
       -yddyo/:.         -dNNNNm::ymNNNNNNNNNNNNNNNmdy+/dNNNNNd.
                        :mNNNNd.   `/ymNNNNNNNNNNNNNNNNNNNNNNh`
                       +NNNNNh`       `+hNNNNNNNNNNNNNNNNNNNs
                      sNNNNNy`           .yNNNNNm`-/oymNNNm+
                    `yNNNNNo              oNNNNNm`     `-.
                   .dNNNNm/               oNNNNNm`
                   oNNNNm:                +NNNNNm`
                   `+yho.                 +NNNNNm`
                                          +NNNNNNs.
                                          `yNNNNNNmy-
                                            -smNNNNNNh:
                                              .smNNNNNNh/
                                                `omNNNNNNd:
                                                  `+dNNNNNd
                             ````......````          /hmdy-
            `.:/+osyhddmNNMMMMMMMMMMMMMMMMMMMMNNmddhyso+/:.`
     `-+shmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmhs+-`
  -smMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMds-
 hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh
 yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs
  .ohNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNh+.
      ./oydmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmhyo:.
             `.:/+osyyhddmmNNMMMMMMMMMMMMMMNNmmddhyyso+/:.`

            ,--------.,--.     ,--.           ,--.
            '--.  .--'|  ,---. `--' ,---.     |  | ,---.
               |  |   |  .-.  |,--.(  .-'     |  |(  .-'
               |  |   |  | |  ||  |.-'  `)    |  |.-'  `)
               `--'   `--' `--'`--'`----'     `--'`----'
                                                                ,--.
       ,---.  ,------.  ,------.                  ,--.          |  |
      '   .-' |  .-.  \ |  .--. ' ,--,--.,--.--.,-'  '-. ,--,--.|  |
      `.  `-. |  |  \  :|  '--' |' ,-.  ||  .--''-.  .-'' ,-.  ||  |
      .-'    ||  '--'  /|  | --' \ '-'  ||  |     |  |  \ '-'  |`--'
      `-----' `-------' `--'      `--`--'`--'     `--'   `--`--'.--.
                                                                '__'

1
感谢回复!对于这个问题有很多很棒的答案和细节。我很欣赏实际团队参与其中。非常酷。 - BEVR1337

7
有趣的调查。从相关bug中可以推断,用户代理已添加为调试目的:关联bug
Adam Roach:如果我们在SDP中报告当前Firefox版本,那么这将有助于调试。
接着,Byron Campen添加了一个变更集,其中包含用户代理和mozilla... THIS_IS_SDPARTA-<user-agent>行。因此,这确实就是这些内容。

感谢您挖掘出这些错误和更改。这是一个很好的答案,因为它提供了来源。 - BEVR1337

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接