趣谈网络原理 网关(自我提升第二十四天)
第一,菜鸟感觉这个极客时间的专栏因为是每天挑一个学,然后写博客,感觉顺序比较乱,我今天整理了一下。
第二,菜鸟感觉这些东西真的是:一天不学,等于白学。我才几天没看这个趣谈网络原理?完全不记得了,可能是菜鸟太菜了,不过还好有博客,看看就捡起来了(,ԾㅂԾ,)
话不多说,直接开始学习之旅!
文章目录
- 跨网关
- 你了解 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 成为了运营商的地址了。
趣谈网络原理 网关(自我提升第二十四天)相关推荐
- 极客时间 自我提升第二天 数据结构与算法之美 应该掌握 / 趣谈网络原理 / 深入浅出计算机组成原理 思维导图
菜鸟今天又来完成所说的诺言,也希望大家督促,在今天的学习中,菜鸟有了新的认知,我会将上一篇中理解不完善的一些地方进行补充,学习本就是不断打破自己的认知,如果思考都不做,何来的知识的积累 文章目录 数据 ...
- 趣谈网络协议笔记-二(第十五讲)我与刘超有不同看法
趣谈网络协议笔记-二(第十五讲) HTTPS协议:点外卖的过程原来这么复杂 前言 好饿啊= =,最近感觉自己真的是胖的不行了,所以开始了适当的节食操作. 我似乎很不擅长隐藏自己的想法.我似乎很不习惯于 ...
- 趣谈网络协议笔记-二(第十九讲)
趣谈网络协议笔记-二(第十九讲) HttpDNS:网络世界的地址簿也会指错路 自勉 勿谓言之不预也 -- 向为祖国牺牲的先烈致敬! 引用 dns缓存刷新时间是多久?dns本地缓存时间介绍 - 东大网管 ...
- 趣谈网络协议笔记-二(第十八讲)
趣谈网络协议笔记-二(第十八讲) DNS协议:网络世界的地址簿 自勉 勿谓言之不预也 -- 向为祖国牺牲的先烈致敬! 正文 DNS用于域名解析,但也不仅仅是用于域名解析,不仅仅是将域名转换成IP. 在 ...
- 趣谈网络协议笔记-二(第十六讲上)
趣谈网络协议笔记-二(第十六讲上) 流媒体协议:如何在直播里看到美女帅哥? 自勉 给岁月以文明,而不是给文明以岁月!--<三体> 在触不到的獠牙上点火--就像不必仰望那星星就能够解决--就 ...
- 趣谈网络协议笔记-二(第十三讲)
趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...
- 趣谈网络协议笔记-二(第十二讲)
趣谈网络协议笔记-二(第十二讲) TCP协议(下):西行必定多妖孽,恒心智慧消磨难 前言 哈哈哈,越当我看刘超的通俗讲解,我就越感觉自己的无能.每次当我看了讲解之后,每次当我感觉到这个东西原来是这么简 ...
- 趣谈网络协议笔记-二(第十讲)
趣谈网络协议笔记-二(第十讲) UDP协议:因性善而简单,难免碰到"城会玩" 自勉 如果手上没有剑,我就无法保护你.如果我一直握着剑,我就无法抱紧你.--<Bleach> ...
- 趣谈网络原理 多交换机和VLAN(自我提升第十七天)
经过了 反思 的小插曲,现在进入正题,现在已经是6月22日18:05了,那么话不多说,开始学习之旅吧! (因为要早睡,没写完,明天发,今天是6月23日8点44,其实菜鸟一直在纠结上一篇的交换机和ARP ...
最新文章
- GigaScience:ASaiM基于Galaxy微生物组分析框架
- 4j导入节点与关系_Neo4j Cypher 中怎样根据值动态指定关系类型?
- 巨头都在争抢无人驾驶 这家智慧停车公司却先上了路 科技事务 百家号 08-14 15:55 今年来,互联网巨头在智慧交通领域动作频频,4月初,百度提出雄心勃勃的“阿波罗计划”,宣布开放自动驾驶平台以
- halcon知识:图标对象如何存盘和读入
- OpenCV中SUFR、SIFT无法使用的原因及解决办法
- python获取输入框内容长度_python3 tkinter 获取输入字符串长度
- 数据结构Java07【二叉排序树(添加查找删除-节点)】
- Java_memcached 使用说明
- 搜狐2012.9.15校园招聘会笔试题
- CodeForces 176A Trading Business 贪心
- C语言base64编解码
- c语言变量命名规则_带你学习C语言—变量
- CQRS之旅——旅程6(我们系统的版本管理)
- 机器学习基础(五十四)—— 支持向量机(SVM)
- 企业项目运行管理体系的实现
- mysql 初始化序列_GitHub - IMAUZS/seq: 基于mysql的序列号生成器
- 怎么把英文字幕翻译成中文?快把这些方法收好
- Python 函数参数引用(传值传址)
- icp光谱仪的工作原理_ICP的工作原理
- iOS 页面切换控制