20220917-协议基础概念

协议基础概念

  1. socket

    • 定义:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。通常也称作”套接字“,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
    • 本质:编程接口API,对TCP/IP的封装。提供可供程序员做网络开发所用的接口;
    • 举例:socket像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220V交流电,有的提供110V交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务。
  2. TCP/IP和HTTP协议的关系

    • TCP/IP协议:传输层协议,主要解决数据如何在网络中传输;
    • HTTP协议:应用层协议,主要解决如何包装数据;
    • 举例1:我们在传输数据时,可以只使用传输层TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议。
    • 举例2:WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。
  3. hook

    • 定义:指程序A在程序B里埋入的一段代码。当程序B运行到某种特定状态,或者某个特定条件成立,就会调用A埋入的那段代码。
    • 意义:一般来说程序B希望把一些定制能力开放给用户或者第三方的开发者。
    • 举例:例如github上有很多git repo,每个repo都有很多人提交代码,而且很多时候这些人之间互相不认识。假如我希望我的某个repo,只要有人提交了代码就自动运行一个测试程序,然后把测试结果发给我,这件事github自己要做就很不现实,因为它不知道我想如何测试,也不知道我想根据测试结果做什么,这时候 GitHub 的解决方案就是设计一个 hook API,允许我写一个“钩子函数(hook)”,并在我的 repo 的 “收到新 commit” 这个 “事件(event)” 上 “注册(register)” 这个钩子函数,以后 GitHub 只要收到该 repo 的 commit 就会触发这个钩子函数,执行我写的代码,我想做什么就我自己控制了。GitHub 事实上确实有这个功能(实际上是 git 底层就支持的),提供了 commit 前后的钩子接口,commit 前的钩子里你甚至可以根据运行情况决定是不是直接拒绝这个 commit。还有一种情况,钩子的接口不是程序 B 自己提供的,而是操作系统提供的机制,甚至是黑客强行在程序 B 中注入的,这就涉及到一些特定技术了,在特定环境下也是能做到的。不过,好孩子不干这个 ^_^
  4. MPLS

    • 本质:一种隧道技术,在一定程度山更可以保证信息传输的安全性;
    • 体系结构
      • 控制平面:无连接的,主要功能是负责标签的分配、LFIB的建立、LSP的建立、拆除等;
      • 转发/数据平面:面向连接的,对IP包进行标签的添加和删除,同时依据标签转发表对收到的分组进行转发;
  5. 平滑重启(graceful restart):(参考

    • 定义:在主备切换或协议重启时保证转发业务不中断的机制。

    • 高可靠性(HA, High Availability)技术:HA是一整套综合技术,主要包括冗余容错、链路保证、节点故障修复及流量工程。其中,GR是一种冗余容错技术,目前已经被广泛的使用在主备切换和系统升级方面,以保证关键业务的不间断转发。

    • 前提

      • 仅适用于带双主控、线卡具有独立处理器的硬件平台;
      • GR用于软件或硬件错误导致Active RP重起或Active RP失效;或者管理员的主备切换命令。
    • 传统技术和GR技术的比较

      • 传统主备切换时造成的网络问题

        OSPF GR

      • 采用GR技术解决了主备切换时造成的网络问题

        OSPF GR2

      • 注意:如果在R1在GR的过程中,网络拓扑发生了变化,那么可能导致短暂的路由环路或路由黑洞。对于这个问题的处理方法,目前不同厂商的实现略有不同。与业务中断的危害相比较,是否可以容忍可能出现的短暂的路由环路和路由黑洞,对这个问题的不同观点决定了在具体实现上的不同。

  6. 网络流量工程

    • 定义:根据各种数据业务流量的特性选取传输路径的处理过程。用于平衡网络中不同交换机、路由器以及链路之间的负载;