美文网首页
Think like a fundamentalist

Think like a fundamentalist

作者: 杰出青年老李 | 来源:发表于2015-11-21 16:03 被阅读0次

    事情是这样的,Emacs这款编辑器可以安装插件。这些插件既可以通过本地文件
    安装,也可以通过类似GitHub的在线仓库下载安装。使用list-packages就能列
    出仓库里有的插件。因为载入的本地缓存,所以要想得到最新的列表,就需要执
    行refresh命令。

    遇到的问题就是,执行refresh命令之后,状态栏一直显示“Contacting host
    melpa.org:443”。


    emacsemacs

    折腾

    我条件反射地认为,melpa.org被墙了,立马给Emacs加上proxy。然而还是一直
    Contacting。最后我各种尝试,从终端启动Emacs,给系统启用全局代理,尝试
    安装不同版本的Emacs。分析执行过程的message,启动debug模式。

    都没有得到解决,甚至还给packages.el报了bug。社区的人都很热心,回答我的
    是一个日本友人,然而还是没有得到解决。搞了一天多,搞得我都有点心烦,甚
    至考虑要不就用Atom或者Vim算了,不折腾了。

    醒悟

    由于最初以为是被墙了,所以详细研究了一下梯子技术。DNS污染,IP封锁,DPI,
    这些高大上的名词确实很长见识。也突然意识到,在程序的世界里,1就是1,0就
    是0,没有任何事情是魔法。网络连接也一样,底层都有迹可循的,No Response
    也会状态显示的。

    所以为什么不抓取Emacs与melpa之间的数据包,看一下,到底是程序的问题,还
    是网络的问题。

    抓包

    这是我认为有问题的抓包结果


    defaultdefault

    这是在windows下正常工作的抓包结果


    defaultdefault

    第一遍我也没看懂这些东西到底在说什么,慢慢查文档还是搞懂了,顺带搞懂了
    ip,tcp,http的区别。

    互联网传输的基本单位是IP Packet,client与server之间的共同语言(协议)叫
    做tcp,http。第一个包SYN,意思就是client想与server建立连接。ACK是回应,
    到底准不准。这套握手,回应叫做tcp。连接建立成功后,client说,我们换种
    语言吧,用http交流吧。然后用http说,我想要插件列表。直到收到finish包,
    此次会话就算结束了。

    结论

    仔细对比,两个抓包结果。发现行为都差不多,最后都正常finish了。所以我得
    出一个坑爹的结论,其实refresh这个命令是成功执行了,但是状态显示没有改
    变。windows下的Emcas版本是25,linux下是24.5。

    issueissue

    虽然结论很坑爹,但是顺带学会了怎么抓包和粗浅的tcp协议还是算有所收获。

    相关文章

      网友评论

          本文标题:Think like a fundamentalist

          本文链接:https://www.haomeiwen.com/subject/vealhttx.html