您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    从零构建TCP/IP协议
    时间:2017-08-16 12:49 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    【51CTO活动】8.26 带你深度了解清华大学、搜狗基于算法的IT运维实际与探求

    从零构建TCP/IP协议(这次叫PCT协议)

    这篇博客是读完《图解TCP/IP协议》和《TCP/IP协议详解卷一:协议》之后的总结

    我从0构建了一个牢靠的双工的有序的基于流的协议,叫做PCT协议 :)

    OSI七层模型和TCP/IP四层模型

    谈到计算机网络,就一定会说起OSI七层模型和TCP/IP四层模型,不过我们先从为何分层 说起。

    为什么要分层

    软件开发的进程中,我们常常听到的词语是"解耦","高内聚,低耦合"等等诸如此类的 词语,又常听见写Java的同窗念叨着"桥接形式","面向接口"等词语,那么他们说的这些 词语的中心成绩是什么呢?我们先从一个复杂的成绩看起:

    如今我们需求做一个推送系统,要对接Android和iOS两个系统,大家都知道,Apple有一致 的推送渠道,APNs,所以我们只需接入这个就好,但是Android的推送在国际是百家争鸣, 就拿之前我为公司接入推送通知来举例,要接入极光,小米,能够要接入华为推送。

    那我要怎样从详细的推送里笼统出来呢?运用面向对象的想法,我们很容易就能想到, 我们有一个父类,叫 BasePush ,他的子类就是详细的 MiPush , JPush , HMSPush 。 父类中有 push_by_id 和 push_by_tag 等办法,子类重写。这样我们在详细完成的时分 实例化子类,并且调用对应的办法就好。这种思想其实就是面向接口编程,在Java中我们 可以转变一下编程的写法,把承袭变成接口。在Python中我们就可以直接脑补这种写法。 用图来表示,地道面向对象的时分我们的想法是这样的:

    从零构建TCP/IP协议

    假设我们把下面的图倒过去,就变成了面向接口:

    从零构建TCP/IP协议

    在运用面向接口之后,我们就是做了这样一种假定:

    def push(pusher, id): 

        pusher.push_by_id(id) 

    即,传给push函数的pusher实例一定存在 push_by_id 办法。正是基于这样一种假定, 我们得以把详细业务代码和详细的推送商划分开来,这就是所谓的笼统,也就是一种分层。

    要分层的缘由也就显现出来了,为了把不同的东西扑朔迷离的关系划分开来,也就是古话 说的"快刀斩乱麻"的这种觉得。

    两种网络模型

    日常编程里我们用的最多的就是TCP了,UDP也是有的,但是很少,举一些常见的例子:

    DNS -> UDP

    衔接MySQL -> TCP

    衔接Redis -> TCP

    RPC -> TCP

    拜访网站 -> TCP

    当然了,这只是常见完成方式如此,其适用UDP也是可以完成的。这篇博客里我们暂时不讨论 UDP。我们先来看TCP/IP四层是怎样分层的:

    ascii 表格其实挺美观的,最后渲染的时分由于宽字符的缘由格式有点乱掉了,下同

    +------------+-----------------------+ 

    | 层         | 例如                  | 

    +------------+-----------------------+ 

    | 运用层     | HTTP协议              | 

    +------------+-----------------------+ 

    | 传输层     | TCP                   | 

    +------------+-----------------------+ 

    | 网络互连层 | IP                    | 

    +------------+-----------------------+ 

    | 网络接口层 | 如网线,双绞线,Wi-Fi | 

    +------------+-----------------------+ 

    我们直接把 TCP/IP 四层协议 映射到 OSI七层协议 上看:

    +--------------+---------------+----------------+ 

    | OSI 七层协议 | 例如          | 对应TCP/IP四层 | 

    +--------------+---------------+----------------+ 

    | 运用层       | HTTP协议      |                | 

    +--------------+---------------+                | 

    | 表示层       |               | 运用层         | 

    +--------------+---------------+                | 

    (责任编辑:admin)