第一,菜鸟感觉这个极客时间的专栏因为是每天挑一个学,然后写博客,感觉顺序比较乱,我今天整理了一下。

第二,菜鸟感觉这些东西真的是:一天不学,等于白学。我才几天没看这个趣谈网络原理?完全不记得了,可能是菜鸟太菜了,不过还好有博客,看看就捡起来了(,ԾㅂԾ,)

话不多说,直接开始学习之旅!

文章目录

  • 跨网关
    • 你了解 MAC 头和 IP 头的细节吗?
    • 如何传输
    • 静态路由
    • IP 头和 MAC 头哪些变、哪些不变?
      • “欧洲十国游” 型
      • “玄奘西行”型

跨网关

在进行网卡配置的时候,除了 IP 地址,还需要配置一个Gateway的东西,这个就是网关

你了解 MAC 头和 IP 头的细节吗?

一旦配置了 IP 地址和网关,往往就能够指定目标地址进行访问了。由于在跨网关访问的时候,牵扯到 MAC 地址和 IP 地址的变化,这里有必要详细描述一下 MAC 头和 IP 头的细节。

在 MAC 头里面,先是目标 MAC 地址,然后是源 MAC 地址,然后有一个协议类型,用来说明里面是 IP 协议。

IP 头里面的版本号,目前主流的还是 IPv4,服务类型 TOS 在讲 ip addr 命令 的时候讲过,TTL 在讲 ICMP 协议 的时候讲过。

另外,还有 8 位标识协议,这里到了下一层的协议,也就是是 TCP 还是 UDP。最重要的是源 IP 和目标IP。先是源 IP 地址,然后是目标 IP 地址。

在任何一台机器上,当要访问另一个 IP 地址的时候,都会先判断,这个目标 IP 地址,和当前机器的 IP 地址,是否在同一个网段。怎么判断同一个网段呢?需要 CIDR 和子网掩码(即:网络号),这个也讲过了。

如何传输

如果是同一个网段,例如,你访问你旁边的兄弟的电脑,那就没网关什么事情,直接将源地址和目标地址放入 IP 头中,然后通过 ARP 获得 MAC 地址,将源 MAC 和目的 MAC 放入MAC 头中,发出去就可以了。

如果不是同一网段,例如,你要访问你们校园网里面的 BBS,该怎么办?这就需要发往默认网关 Gateway。Gateway 的地址一定是和源 IP 地址是一个网段的。例如 192.168.1.0/24 这个网段,Gateway 往往会是 192.168.1.1/24 或者192.168.1.255/24。

如何发往默认网关呢 ?网关不是和源 IP 地址是一个网段的么?这个过程就和发往同一个网段的其他机器是一样的:将源地址和目标 IP 地址放入 IP 头中,通过 ARP 获得网关的MAC 地址,将源 MAC 和网关的 MAC 放入 MAC 头中,发送出去。网关所在的端口,例如 192.168.1.1/24 将网络包收进来,然后接下来怎么做,就完全看网关的了。

很多情况下,人们把网关就叫作路由器( 第一节 讲过,其实这个不正确)。而另一种比喻更加恰当:路由器是一台设备,它有几个网口或者网卡(举例方便,假设5个),相当于有五只手,分别连着五个局域网。每只手的IP 地址都和局域网的 IP 地址相同的网段,每只手都是它握住的那个局域网的网关

任何一个想发往其他局域网的包,都会到达其中一只手,被拿进来,拿下 MAC 头和 IP头,看看,根据自己的路由算法,选择另一只手,加上 IP 头和 MAC 头,然后扔出去。

静态路由

这个时候,问题来了,该选择哪一只手?IP 头和 MAC 头加什么内容,哪些变、哪些不变呢?这个问题比较复杂,大致可以分为两类,一个是静态路由,一个是动态路由。动态路由下一节我们详细地讲。这一节我们先说静态路由。

静态路由,其实就是在路由器上,配置一条一条规则。这些规则包括:想访问 BBS 站(它肯定有个网段),从 2 号口出去,下一跳是 IP2;想访问教学视频站(它也有个自己的网段),从 3 号口出去,下一跳是 IP3,然后保存在路由器里。

每当要选择从哪只手抛出去的时候,就一条一条的匹配规则,找到符合的规则,就按规则中设置的那样,从某个口抛出去,找下一跳 IPx。

IP 头和 MAC 头哪些变、哪些不变?

对于 IP 头和 MAC 头哪些变、哪些不变的问题,可以分两种类型。我把它们称为“欧洲十国游”型和“玄奘西行”型

之前菜鸟说过,MAC 地址是一个局域网内才有效的地址。因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网。两者主要的区别在于 IP 地址是否改变。不改变 IP 地址的网关,我们称为转发网关改变 IP 地址的网关,我们称为NAT 网关

“欧洲十国游” 型


服务器 A 要访问服务器 B。首先,服务器 A 会思考,192.168.4.101 和我不是一个网段的,因而需要先发给网关。那网关是谁呢?已经静态配置好了,网关是 192.168.1.1。网关的 MAC 地址是多少呢?发送 ARP 获取网关的 MAC 地址,然后发送包。包的内容是这样的:

源 MAC:服务器 A 的 MAC
目标 MAC:192.168.1.1 这个网口的 MAC
源 IP:192.168.1.101
目标 IP:192.168.4.101

包到达 192.168.1.1 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。

在路由器 A 中配置了静态路由之后,要想访问 192.168.4.101/24,要从 192.168.56.1 这个口出去,下一跳为 192.168.56.2。

于是,路由器 A 思考的时候,匹配上了这条路由,要从192.168.56.1 这个口发出去,发给192.168.56.2,那 192.168.56.2 的 MAC 地址是多少呢?路由器 A 发送 ARP 获取192.168.56.2 的 MAC 地址,然后发送包。包的内容是这样的:

源 MAC:192.168.56.1 的 MAC 地址
目标 MAC:192.168.56.2 的 MAC 地址
源 IP:192.168.1.101
目标 IP:192.168.4.101

包到达 192.168.56.2 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。

在路由器 B 中配置了静态路由,要想访问 192.168.4.101/24,要从 192.168.4.1 这个口出去,没有下一跳了。因为我右手这个网卡,就是这个网段的,我是最后一跳了。

于是,路由器 B 思考的时候,匹配上了这条路由,要从 192.168.4.1 这个口发出去,发给192.168.4.101。那 192.168.4.101 的 MAC 地址是多少呢?路由器 B 发送 ARP 获取192.168.4.101 的 MAC 地址,然后发送包。包的内容是这样的:

源 MAC:192.168.4.1 的 MAC 地址
目标 MAC:192.168.4.101 的 MAC 地址
源 IP:192.168.1.101
目标 IP:192.168.4.101

包到达服务器 B,MAC 地址匹配,将包收进来。

通过这个过程可以看出,每到一个新的局域网,MAC 都是要变的,但是 IP 地址都不变。在 IP 头里面,不会保存任何网关的 IP 地址。所谓的下一跳是,某个 IP 要将这个 IP 地址转换为 MAC 放入 MAC 头

之所以将这种模式比喻称为欧洲十国游,是因为在整个过程中,IP 头里面的地址都是不变的。IP 地址在三个局域网都可见,在三个局域网之间的网段都不会冲突。在三个网段之间传输包,IP 头不改变。这就像在欧洲各国之间旅游,一个签证就能搞定。

“玄奘西行”型


这里遇见的第一个问题是,局域网之间没有商量过,各定各的网段,因而 IP 段冲突了。最左面大唐的地址是 192.168.1.101,最右面印度的地址也是 192.168.1.101,如果单从 IP地址上看,简直是自己访问自己,其实是大唐的 192.168.1.101 要访问印度的192.168.1.101。

怎么解决这个问题呢?既然局域网之间没有商量过,你们各管各的,那到国际上,也即中间的局域网里面,就需要使用另外的地址。就像出国,不能用咱们自己的身份证,而要改用护照一样,玄奘西游也要拿着专门取经的通关文牒,而不能用自己国家的身份证。

首先,目标服务器 B 在国际上要有一个国际的身份,我们给它一个 192.168.56.2。在网关B 上,我们记下来,国际身份 192.168.56.2 对应国内身份 192.168.1.101。凡是要访问192.168.56.2,都转成 192.168.1.101。

于是,源服务器 A 要访问目标服务器 B,要指定的目标地址为 192.168.56.2,这是它的国际身份。服务器 A 想,192.168.56.2 和我不是一个网段的,因而需要发给网关,网关是谁?已经静态配置好了,网关是 192.168.1.1,网关的 MAC 地址是多少?发送 ARP 获取网关的 MAC 地址,然后发送包。包的内容是这样的:

源 MAC:服务器 A 的 MAC
目标 MAC:192.168.1.1 这个网口的 MAC
源 IP:192.168.1.101
目标 IP:192.168.56.2

包到达 192.168.1.1 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。

在路由器 A 中配置了静态路由:要想访问 192.168.56.2/24,要从 192.168.56.1 这个口出去,下一跳192.168.56.2。

于是,路由器 A 思考的时候,匹配上了这条路由,要从 192.168.56.1 这个口发出去,发给192.168.56.2。那 192.168.56.2 的 MAC 地址是多少呢?路由器 A 发送 ARP 获取192.168.56.2 的 MAC 地址。

当网络包发送到中间的局域网的时候,服务器 A 也需要有个国际身份,因而在国际上,源IP 地址也不能用 192.168.1.101,需要改成 192.168.56.1。发送包的内容是这样的:

源 MAC:192.168.56.1 的 MAC 地址
目标 MAC:192.168.56.2 的 MAC 地址
源 IP:192.168.56.1
目标 IP:192.168.56.2

包到达 192.168.56.2 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。

在路由器 B 中配置了静态路由:要想访问 192.168.1.101/24,要从 192.168.1.1 这个口出去,没有下一跳了,因为我右手这个网卡,就是这个网段的,我是最后一跳了。

于是,路由器 B 思考的时候,匹配上了这条路由,要从 192.168.1.1 这个口发出去,发给192.168.1.101。

那 192.168.1.101 的 MAC 地址是多少呢?路由器 B 发送 ARP 获取 192.168.1.101 的MAC 地址,然后发送包。内容是这样的:

源 MAC:192.168.1.1 的 MAC 地址
目标 MAC:192.168.1.101 的 MAC 地址
源 IP:192.168.56.1
目标 IP:192.168.1.101

包到达服务器 B,MAC 地址匹配,将包收进来。

从服务器 B 接收的包可以看出,源 IP 为服务器 A 的国际身份,因而发送返回包的时候,也发给这个国际身份,由路由器 A 做 NAT,转换为国内身份

从这个过程可以看出,IP 地址也会变。这个过程用英文说就是Network Address Translation,简称NAT

其实这第二种方式我们经常见,现在大家每家都有家用路由器,家里的网段都是192.168.1.x,所以你肯定访问不了你邻居家的这个私网的 IP 地址的。所以,当我们家里的包发出去的时候,都被家用路由器 NAT 成为了运营商的地址了。

趣谈网络原理 网关(自我提升第二十四天)相关推荐

  1. 极客时间 自我提升第二天 数据结构与算法之美 应该掌握 / 趣谈网络原理 / 深入浅出计算机组成原理 思维导图

    菜鸟今天又来完成所说的诺言,也希望大家督促,在今天的学习中,菜鸟有了新的认知,我会将上一篇中理解不完善的一些地方进行补充,学习本就是不断打破自己的认知,如果思考都不做,何来的知识的积累 文章目录 数据 ...

  2. 趣谈网络协议笔记-二(第十五讲)我与刘超有不同看法

    趣谈网络协议笔记-二(第十五讲) HTTPS协议:点外卖的过程原来这么复杂 前言 好饿啊= =,最近感觉自己真的是胖的不行了,所以开始了适当的节食操作. 我似乎很不擅长隐藏自己的想法.我似乎很不习惯于 ...

  3. 趣谈网络协议笔记-二(第十九讲)

    趣谈网络协议笔记-二(第十九讲) HttpDNS:网络世界的地址簿也会指错路 自勉 勿谓言之不预也 -- 向为祖国牺牲的先烈致敬! 引用 dns缓存刷新时间是多久?dns本地缓存时间介绍 - 东大网管 ...

  4. 趣谈网络协议笔记-二(第十八讲)

    趣谈网络协议笔记-二(第十八讲) DNS协议:网络世界的地址簿 自勉 勿谓言之不预也 -- 向为祖国牺牲的先烈致敬! 正文 DNS用于域名解析,但也不仅仅是用于域名解析,不仅仅是将域名转换成IP. 在 ...

  5. 趣谈网络协议笔记-二(第十六讲上)

    趣谈网络协议笔记-二(第十六讲上) 流媒体协议:如何在直播里看到美女帅哥? 自勉 给岁月以文明,而不是给文明以岁月!--<三体> 在触不到的獠牙上点火--就像不必仰望那星星就能够解决--就 ...

  6. 趣谈网络协议笔记-二(第十三讲)

    趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...

  7. 趣谈网络协议笔记-二(第十二讲)

    趣谈网络协议笔记-二(第十二讲) TCP协议(下):西行必定多妖孽,恒心智慧消磨难 前言 哈哈哈,越当我看刘超的通俗讲解,我就越感觉自己的无能.每次当我看了讲解之后,每次当我感觉到这个东西原来是这么简 ...

  8. 趣谈网络协议笔记-二(第十讲)

    趣谈网络协议笔记-二(第十讲) UDP协议:因性善而简单,难免碰到"城会玩" 自勉 如果手上没有剑,我就无法保护你.如果我一直握着剑,我就无法抱紧你.--<Bleach> ...

  9. 趣谈网络原理 多交换机和VLAN(自我提升第十七天)

    经过了 反思 的小插曲,现在进入正题,现在已经是6月22日18:05了,那么话不多说,开始学习之旅吧! (因为要早睡,没写完,明天发,今天是6月23日8点44,其实菜鸟一直在纠结上一篇的交换机和ARP ...

最新文章

  1. GigaScience:ASaiM基于Galaxy微生物组分析框架
  2. 4j导入节点与关系_Neo4j Cypher 中怎样根据值动态指定关系类型?
  3. 巨头都在争抢无人驾驶 这家智慧停车公司却先上了路 科技事务 百家号 08-14 15:55 今年来,互联网巨头在智慧交通领域动作频频,4月初,百度提出雄心勃勃的“阿波罗计划”,宣布开放自动驾驶平台以
  4. halcon知识:图标对象如何存盘和读入
  5. OpenCV中SUFR、SIFT无法使用的原因及解决办法
  6. python获取输入框内容长度_python3 tkinter 获取输入字符串长度
  7. 数据结构Java07【二叉排序树(添加查找删除-节点)】
  8. Java_memcached 使用说明
  9. 搜狐2012.9.15校园招聘会笔试题
  10. CodeForces 176A Trading Business 贪心
  11. C语言base64编解码
  12. c语言变量命名规则_带你学习C语言—变量
  13. CQRS之旅——旅程6(我们系统的版本管理)
  14. 机器学习基础(五十四)—— 支持向量机(SVM)
  15. 企业项目运行管理体系的实现
  16. mysql 初始化序列_GitHub - IMAUZS/seq: 基于mysql的序列号生成器
  17. 怎么把英文字幕翻译成中文?快把这些方法收好
  18. Python 函数参数引用(传值传址)
  19. icp光谱仪的工作原理_ICP的工作原理
  20. iOS 页面切换控制

热门文章

  1. Win10禁用各种后台更新的方法
  2. 爬取人民邮电新书30页的图书信息
  3. 基于C++的新冠疫苗信息管理系统设计与实现
  4. 2022年要买哪些车险,超级详细(上篇)
  5. 【超实用的浏览器插件】浏览器加 buff 指南,1 分钟改变你的浏览器
  6. Vue中的slot和slot-scope使用
  7. 如何将excel文件转换成csv文件并读取
  8. ArcGIS中单个文件如何生成nc格式的
  9. 亚服服务器维修,亚服游戏服务器地址
  10. 大小写转换快捷键(word大小写转换快捷键)