趣谈网络协议
刘超
网易研究院云计算技术部首席架构师
立即订阅
39583 人已学习
课程目录
已完结 51 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 想成为技术牛人?先搞定网络协议!
免费
第一模块 通信协议综述 (4讲)
第1讲 | 为什么要学习网络协议?
第2讲 | 网络分层的真实含义是什么?
第3讲 | ifconfig:最熟悉又陌生的命令行
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第二模块 底层网络知识详解:从二层到三层 (5讲)
第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
第7讲 | ICMP与ping:投石问路的侦察兵
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
第9讲 | 路由协议:西出网关无故人,敢问路在何方
第二模块 底层网络知识详解:最重要的传输层 (4讲)
第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
第13讲 | 套接字Socket:Talk is cheap, show me the code
第二模块 底层网络知识详解:最常用的应用层 (4讲)
第14讲 | HTTP协议:看个新闻原来这么麻烦
第15讲 | HTTPS协议:点外卖的过程原来这么复杂
第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
第17讲 | P2P协议:我下小电影,99%急死你
第二模块 底层网络知识详解:陌生的数据中心 (6讲)
第18讲 | DNS协议:网络世界的地址簿
第19讲 | HTTPDNS:网络世界的地址簿也会指错路
第20讲 | CDN:你去小卖部取过快递么?
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
第22讲 | VPN:朝中有人好做官
第23讲 | 移动网络:去巴塞罗那,手机也上不了脸书
第三模块 热门技术中的应用:云计算中的网络 (5讲)
第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法
第26讲 | 云中的网络安全:虽然不是土豪,也需要基本安全和保障
第27讲 | 云中的网络QoS:邻居疯狂下电影,我该怎么办?
第28讲 | 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
第三模块 热门技术中的应用:容器技术中的网络 (3讲)
第29讲 | 容器网络:来去自由的日子,不买公寓去合租
第30讲 | 容器网络之Flannel:每人一亩三分地
第31讲 | 容器网络之Calico:为高效说出善意的谎言
第三模块 热门技术中的应用:微服务相关协议 (5讲)
第32讲 | RPC协议综述:远在天边,近在眼前
第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果
第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
第四模块 网络协议知识串讲 (4讲)
第37讲 | 知识串讲:用双十一的故事串起碎片的网络协议(上)
第38讲 | 知识串讲:用双十一的故事串起碎片的网络协议(中)
第39讲 | 知识串讲:用双十一的故事串起碎片的网络协议(下)
第40讲 | 搭建一个网络实验环境:授人以鱼不如授人以渔
答疑与加餐 (9讲)
协议专栏特别福利 | 答疑解惑第一期
协议专栏特别福利 | 答疑解惑第二期
协议专栏特别福利 | 答疑解惑第三期
协议专栏特别福利 | 答疑解惑第四期
协议专栏特别福利 | 答疑解惑第五期
加餐1 | 测一测:这些网络协议你都掌握了吗?
加餐2 | 创作故事:我是如何创作“趣谈网络协议”专栏的?
加餐3 | “趣谈网络协议”专栏食用指南
第2季回归 | 这次我们来“趣谈Linux操作系统”
结束语 (1讲)
结束语 | 放弃完美主义,执行力就是限时限量认真完成
趣谈网络协议
登录|注册

第9讲 | 路由协议:西出网关无故人,敢问路在何方

刘超 2018-06-06
俗话说得好,在家千日好,出门一日难。网络包一旦出了网关,就像玄奘西行一样踏上了江湖漂泊的路。
上一节我们描述的是一个相对简单的情形。出了网关之后,只有一条路可以走。但是,网络世界复杂得多,一旦出了网关,会面临着很多路由器,有很多条道路可以选。如何选择一个更快速的道路求取真经呢?这里面还有很多门道可以讲。

如何配置路由?

通过上一节的内容,你应该已经知道,路由器就是一台网络设备,它有多张网卡。当一个入口的网络包送到路由器时,它会根据一个本地的转发信息库,来决定如何正确地转发流量。这个转发信息库通常被称为路由表
一张路由表中会有多条路由规则。每一条规则至少包含这三项信息。
目的网络:这个包想去哪儿?
出口设备:将包从哪个口扔出去?
下一跳网关:下一个路由器的地址。
通过 route 命令和 ip route 命令都可以进行查询或者配置。
例如,我们设置 ip route add 10.176.48.0/20 via 10.173.32.1 dev eth0,就说明要去 10.176.48.0/20 这个目标网络,要从 eth0 端口出去,经过 10.173.32.1。
上一节的例子中,网关上的路由策略就是按照这三项配置信息进行配置的。这种配置方式的一个核心思想是:根据目的 IP 地址来配置路由

如何配置策略路由?

当然,在真实的复杂的网络环境中,除了可以根据目的 ip 地址配置路由外,还可以根据多个参数来配置路由,这就称为策略路由
可以配置多个路由表,可以根据源 IP 地址、入口设备、TOS 等选择路由表,然后在路由表中查找路由。这样可以使得来自不同来源的包走不同的路由。
例如,我们设置:
ip rule add from 192.168.1.0/24 table 10
ip rule add from 192.168.2.0/24 table 20
表示从 192.168.1.10/24 这个网段来的,使用 table 10 中的路由表,而从 192.168.2.0/24 网段来的,使用 table20 的路由表。
在一条路由规则中,也可以走多条路径。例如,在下面的路由规则中:
ip route add default scope global nexthop via 100.100.100.1 weight 1 nexthop via 200.200.200.1 weight 2
下一跳有两个地方,分别是 100.100.100.1 和 200.200.200.1,权重分别为 1 比 2。
在什么情况下会用到如此复杂的配置呢?我来举一个现实中的例子。
我是房东,家里从运营商那儿拉了两根网线。这两根网线分别属于两个运行商。一个带宽大一些,一个带宽小一些。这个时候,我就不能买普通的家用路由器了,得买个高级点的,可以接两个外网的。
家里的网络呢,就是普通的家用网段 192.168.1.x/24。家里有两个租户,分别把线连到路由器上。IP 地址为 192.168.1.101/24 和 192.168.1.102/24,网关都是 192.168.1.1/24,网关在路由器上。
就像上一节说的一样,家里的网段是私有网段,出去的包需要 NAT 成公网的 IP 地址,因而路由器是一个 NAT 路由器。
两个运营商都要为这个网关配置一个公网的 IP 地址。如果你去查看你们家路由器里的网段,基本就是我图中画的样子。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈网络协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(70)

  • zcpromising 置顶
    老师,更新前,能否解释下上一期的问题吗

    作者回复: 问题分两个,第一个往往是这一章的延伸思考题,一般是需要一节时间才能解释清楚的,所以不适合第二期回答,所以可能会另写文章的方式回答,第二个问题往往就是下一节内容。目前一周三篇压力还是挺大的,基本周末都进去了,所以另写的文章慢慢放出,望体谅,谢谢

    2018-06-06
    20
  • 埃罗芒阿老师
    BGP基于TCP,OSPF基于UDP
    2018-06-06
    1
    36
  • 灰灰
    都是干货,本来是来读小说的,不知不觉学了很多东西,作为一个从事系统开发的女生表示很受用。

    作者回复: 谢谢

    2018-06-07
    31
  • 西部世界
    一、求最短距离的两个常见算法:
    1.1 Bellman-Ford:是求含负权图的单源最短路径的一种算法,效率较低,代码难度较小。其原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在n-1次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。
    1.2 Dijkstra:是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
    二、路由器的路由算法:
    2.1 距离矢量路由算法:每个路由器维护一张路由表,即一个矢量,它以网络中的每个路由器为索引,表中列出了当前已知的路由器到每个目标路由器的最佳距离,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断地更新他们的内部路由表。(该算法基于Bellman-Ford)
    2.2 链路状态路由算法:是要求网络中所有参与链路状态路由协议的路由器都掌握网络的全部拓扑结构信息,并记录在路由数据库中。链路状态算法中路由数据库实质上是一个网络结构的拓扑图,该拓扑图由一个节点的集合和一个边的集合构成。在网络拓扑图中,结点代表网络中路由器,边代表路由器之间的物理链路。在网络拓扑结构图中,每一条链路上可以附加不同的属性,例如链路的状态、距离或费用等。如果每一个路由器所保存的网络拓扑结构图都是一致的,那么个路由器生成的路由表也是最佳的,不存在错误路由或循环路由。(该算法基于Dijkstra)。
    三:基于两个路由算法而衍生出来的两个路由协议:
    3.1基于距离矢量路由算法的BGP协议:???
    3.2基于链路状态路由算法的OSPF协议:???
    小结:
    1.距离矢量路由算法存在环回路由,慢收敛,无穷计算,扩展性差等,存在的问题:环回路由,慢收敛,无穷计算,扩展性差,仅适用于小网络场景。
    2.链路状态路由算法:链路状态算法具有更快的收敛速度,具有更好的功能扩展能力.还提供了更好的在规模上的可升级性,缺点:每个路由器需要有较大的存储空间,用以存储所收到的每一个节点的链路状态分组;计算工作量大,每次都必须计算最短路径。
    ===============================================================
    自我查阅总结:路由协议应该比老师讲的要深的深得多。 并且是基于和结合很多另外的一些知识点而形成的一整套路由方案的解决课题。要深入理解和学习的话,还要学习的太多, 老师这个讲的只是一个敲门砖。
    2018-12-04
    30
  • heliang
    老师你好,文章这部分
    32765: from.10.0.0.10 lookup chao
    中10.0.0.10的地址是不是应改为租户A的地址:192.168.1.101

    作者回复: 是的,谢谢指正

    2018-09-23
    16
  • 一步
    没学习过网络的,表示有点蒙
    只能学习到有这个东西,具体的就不行了
    2018-07-02
    14
  • sprinty
    老师您好,运营商1和eth2的连接是一对一的是什么意思?/32 的话,子网掩码是255.255.255.255,eth2和运营商并不在一个网络,是怎么通信的?

    作者回复: p2p

    2018-06-06
    12
  • 姜戈
    学过网络的人表示很形象,相见恨晚

    作者回复: 谢谢

    2018-06-06
    1
    12
  • 小田
    #提纲
    1. 静态路由实现原理
      - 3项路由:目标ip,出口ip,下一跳网关IP
      - 策略路由:多路由表/多路径
    2. 动态路由实现原理
      - 距离矢量路由算法:BGP
      - 链路状态路由算法:OSPF
    2018-06-07
    8
  • 番茄尼玛
    rip是udp协议,ospf直接发ip包。而bgp使用tcp协议,路由器之间会建立tcp连接,每60s发送一次keep-alive消息。
    2018-06-22
    7
  • 且听疯吟
    1.路由器之间的协议交互全部用的为组播报文,组播报文走的为专门的组播路由协议。
    2.路由器之间的协议交互采用的组播报文,根据RFC的规定,部分组播地址为专用的地址,用来传输路由信息。
    2019-03-27
    4
  • William
    BGP用到的路径矢量路由协议是距离矢量路由协议的升级版,这个不太理解。老师有没有推荐的资料呢?

    作者回复: 就是保存了路径,计算机网络 书籍里面都有

    2018-11-20
    4
  • 林先森
    请问下老师,都说lastmile是网络链路中延迟最大的,也是是业界最难解决的问题,能解释下lastmile为什么会有比较大的延迟吗?
    2018-06-06
    4
  • 赵强强
    老师,距离矢量路由算法避免不了循环更新路由吗?比如上面举例B和C,当B到不了A时,此时B把距离变更为不可达,当C向B发送路由信息表时,B应该可以发现C到A的下一跳是自己,应该不更新自己就好了,并告诉C路由失效,就可以避免无用的循环更新。请老师解答一下。

    作者回复: 因为没有下一跳的信息,如果有这个相当于记录了路径了

    2018-06-06
    4
  • Amark
    老师太厉害了,我有一个问题,我们发出去的包,半路上会不会经过某个公司的局域网,有会这种可能性吗? 谢谢老师

    作者回复: 一般不会,可以看BGP协议,人家不会让你过的

    2019-05-27
    3
  • 悦来越好
    老师这一集纯干货,研究过路由协议的看的还好。建议结合例子说明,比如就是要访问谷歌,再讲每种路由是怎么游过去的,效果可能更好些。

    作者回复: 这个有个综合实例的

    2019-03-27
    3
  • eason2017
    老师好,您路由协议这块可以再深入讲解一节吗?谢谢🙏
    2018-08-01
    3
  • iLeGeND
    这个问题疑惑了我20年
    2018-06-07
    3
  • 文子
    请教下,在开篇简单路由器是有多个网卡的,记得路由器网络设置里分为lan口和wlan口设置,这两口的mac地址不同,说明lan和wlan是两个网卡,但是路由器是有多个lan口的,发现lan口的mac地址是统一的,这是不是说明lan是一个网卡,且有多个网口;wlan是一个网卡?还有就是lan和wlan是两个网卡,他们之间的网络包传递是怎么实现的?谢谢!

    作者回复: 是的,家用路由器虽然多个口,但是其实像我们示意图里面一样,是一个地址加交换机的形式。wlan和lan要过路由

    2018-06-07
    3
  • Zend
    在公司内网的测试环境 就遇到 多个部署微服务的物理机网段不一样,但http服务走浏览器访问能通,但机器之间ping不通,这是为什么啊
    2018-06-06
    3
收起评论
70
返回
顶部