一,ARP协议

使用ARP协议可以查出擅自更改IP地址主机的MAC地址。在学习ARP协议前需要了解广播和广播域的相关概念。

1.1 广播与广播域

在超市找人时,如果不知道对方的位置就需要到服务台通过广播进行找人,当知道对方的位置时就可以直接到对方所在位置。在网络中也存在这种情况。如果不知道对方的地址就需要进行广播。即发送广播帧;而知道对方的地址就发送单播到对方处。所以,广播通信是“一对所有”的通信形式。而单播通信是“一对一”的通信形式。所有听到找人广播的范围就是广播域。广播和广播域的具体定义如下:

  • [x] 广播:将广播地址作为目的地址的数据帧
  • [x] 广播域:网络中能接收到同一个广播的所有节点的集合

1.1.1 MAC地址广播

MAC地址的广播地址:FF-FF-FF-FF-FF-FF
MAC地址的广播域是所有相连接的交换机或集线器的集合。如果一台主机发送一个MAC地址广播。则这个广播将转发到所有相连的交换机或集线器的所有端口。收到广播帧的主机会比较数据帧包中的目的IP地址是否为自身IP地址。如果是,则继续处理数据包中的承载数据;如果不是,则丢弃数据。
交换机转发MAC地址广播,而路由器会阻挡MAC地址广播。

1.1.2 IP广播

iP网段的最后一个地址为广播地址,即主机部分全部为1.在数据帧中,目的MAC地址是FF-FF-FF-FF-FF-FF,目的IP地址是IP网段的广播地址。

1.2 解析MAC地址的过程

(1)查找ARP缓存表

(2)发送ARP广播

(3)ARP应答

(4)添加ARP缓存记录

二, 路由原理

路由器工作在OSI参考模型的网络层,它的重要作用是为数据包选择最佳路径,最终送达目的地。那么路由器是怎样选择路径的呢?

  • [x] 在只有一个网段的网络中,数据包可以很容易地从源主机到达目的主机。但是如果一台计算机要和非本网段的计算机进行通信,数据包可能就要经过很多路由器。主机A和主机B所在的网段被许多路由器隔开,这时主机A和主机B的通信就要经过这些中间路由器,这就要面临一个很重要的问题--如何选择到达目的地的路径。

  • [x] 数据包从A到达B有很多条路径可供选择,但是很显然,这些路径中在某一时刻总会有一条路径是最好(最快)的。因此,为了尽可能地提高网络访问速度,就需要有一种方法来判断从源主机到达目标主机所经过的最佳路径,从而进行数据转发,这就是路由技术。

2.1 路由器的工作原理

  1. 对于普通用户来说,通过在PC上设置默认网关就可以使局域网的计算机与Internet进行通信。其实在PC上所设置的默认网关就是路由器以太口的IP地址。
  2. 如果局域网的计算机要和外面的计算机进行通信,只要把请求提交给路由器的以太口即可,接下来的工作就由路由器来完成。
  3. 因此可以说路由器就是互联网的中转站,网络中的数据包就是通过一个一个的路由器转发到目的网络的。
  4. 那么路由器是如何进行数据包的转发的呢?就像一个人如果要去某个地方,他的脑海里一定要有一张地图一样,在每个路由器的内部也有一张地图,这张地图就是路由表。
  5. 在这个路由表中,包含该路由器掌握的所有目的网络地址,以及通过此路由器到达这些网络的最佳路径
  6. 正是由于路由表的存在,路由器才可以高效地进行数据包的转发。

###2.2 静态路由

###2.3 默认路由

###2.4 路由器转发数据包的封装过程

三,学云计算必会的网络数据传输原理

3.1 同网段下(同广播域),两台主机通信过程

我们知道两主机要通信传送数据时,就要把应用数据封装成IP包(因为我们的网络大多都是TCP/IP的以太网),然后再交给下一层数据链路层继续·封装成帧;之后根据MAC地址才能把数据从一台主机,准确无误的传送到另一台主机。

当NO要和N1通信时,

1)假如NO知道N1的IP但却不知道它的MAC地址,那NO就会发送一个ARP的广播请求(里面源IP是NO目标IP是N1源MAC是N0目标MAC是12个F)给同一广播域中的所有成员。

2)当交换机SW0从自己的1接口上收到这个广播包,然后它会读取这个帧的源MAC地址和目标MAC地址,由于交换机SW0刚启动加电时,它的MAC表为空的。所以它会把NO的MAC地址与之相对应的接口1放到一张表里,这张表就是MAC地址表。

3)然后SW0再从别的接口广播这个数据帧,当别的主机收到这个广播时,查看目标IP不是自己的,就会丢弃此包。如果N1接收到这个数据帧,它检查目标IP和这个的IP是一样的,就会回应这个ARP请求,把自己的IP和MAC封装成源IP和源MAC,N0的IP和N0的MAC地址为目标IP与目标MAC,并记录N0的MAC与IP,放进自己的ARP缓存表中。

4)此时,这个应答包经过交换机SWO时,它又会检查源MAC,目标MAC,把N1的MAC和自己接口2放进MAC地址表中,再查看自己的MAC地址表,发现存在目标MAC与自己的1接口对应(由于刚开始有记录过N0的MAC),那它就会直接把这个应答包从接口1送出去了。

5)主机N0收到这个包后发现目标MAC是自己,就会处理这个包。并把N1的MAC与IP放进自己的ARP缓存表中。这时主机N0就知道N1的MAC地址了,
6)后续的发送数据任务,就会直接把N1的IP与MAC封装进帧中进行点对点的发送了。

3.2 跨路由(不同网段)数据传输过程

当N0要和N2通信时

1)N0会先检查N2的IP地址和自己是否处于同一网段,由于N2和自己处在不同网段,因此,N0会把数据包给它的网管,也就是R0上的F0/0接口了。

2)当这个数据包到达R0时,路由器R0会查看目标IP是否是自己的,由于目标不是自己,所以会查看自己的路由表,找出到达N2网段的路由;(如果找不到就会丢弃数据包)

3)当R0查看路由表发现到达N2网段的出接口是F0/1.于是,把数据包转到F0/1接口上,再由接口F0/1传给R1.这个过程,数据包的源IP是N0源MAC是F0/1目标IP是N2目标MAC是R1的F0/1接口IP

4)当R1收到这个数据包后,同样也要检查包的目标IP是否自己,它会主动查找自己的路由表,发现目标IP跟自己F0/0接口处在同一网段,于是就把包传到F0/0接口上去发给N2。)

Linux运维基础入门(三):网络基础知识梳理03的更多相关文章

  1. 面试 Linux 运维工作至少需要知道哪些知识?

    前言 我们已经发过不少 Linux 面试题,但是单独的面试题总感觉会过于零碎,没有体系化内容给人的帮助大. 知乎上有这样一个问题:一个新手面试 Linux 运维工作至少需要知道哪些知识?其中有一个答案 ...

  2. Linux运维工程师必须掌握的基础技能有哪些?

    这个问题挺好的,回答这个问题也是对自身的审查,看看自己还欠缺哪些.(所以我估计得好好思考下,也许下一刻我就会突然惊醒,发现我还是战⑤渣) 首先限定在Linux运维工程师上 回答仅代表我想到,不代表我都 ...

  3. Linux运维工程师入门的10大实用工具

    说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就基本没问题了. 工具如下: 1.Linux系统基础 这个不用说了,是基础中的基础,连这 ...

  4. Linux运维工程师入门须掌握的10个技术点

    本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧 说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就基本没问 ...

  5. Linux运维工作中需要掌握的知识

    说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具.我就大概列出这几方面,这样入门就基本没问题了.linux系统如果是学习可以选用redhat或centos,特别是cent ...

  6. Linux运维人员-服务器组成硬件基础

    第1章 1.1关于运维人员 1.1.1 运维的职责 数据不能丢 网站7*24小时运行 保证用户体验(用户体验要好) 1.1.2 运维原则 简单.易用.高效  === 简单.粗暴 1.2 服务器 1.2 ...

  7. Linux运维技术之NFS网络文件系统

    NFS:网络文件系统,只能工作在Unix/linux之间,不能与windows之间交互. NFS文件系系统只能基于ip来认证! RPC:远程过程调用,简化分布式应用程序的开发, 对Linux系统而言, ...

  8. Linux运维的第三周总结

    01. 下列文件中, 包含了主机名到IP地址的映射关系的文件是()       A. /etc/HOSTNAME    B. /etc/hosts    C. /etc/resolv.conf    ...

  9. 【Linux 运维】Centos7初始化网络配置

    设置网络 (1)动态获取一个IP地址 #dhclient        系统自动自动获取一个IP地址#ip addr         查看获取的ip地址(2)查看网关,子网掩码 虚拟机编辑>虚拟 ...

  10. Linux 运维测试及第三应用及测试工具

    一 .第三方应用及测试工具链接地址 https://pan.baidu.com/s/1rLQ5NCZvxcy93YQ4fGFaBQ 1.linux LSI系列raid卡监测工具 1)使用参数详解链接: ...

随机推荐

  1. 《selenium2 python 自动化测试实战》(13)——上传文件

    看代码: # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Firefo ...

  2. {Reship}{Meanshift}Mean Shift Tracking: 2000-2012回顾

    Mean Shift跟踪从 2000年被提出至今已经经历了十余个年头,从被大量灌水到如今不屑被拿来作为比较算法,经历了辉煌高潮的 Mean-Shift based Tracking正在慢慢淡出主流tr ...

  3. 基于jquery的可查询多级select控件(可记录历史选择)

    一.功能和使用 公司有功能需求,还要一条代码引入的控件,网上找完全符合的控件比较难,寻找所花的时间还不如自己写一个,所以找个空闲时间自己写了一个   控件功能:1.可手动输入查询,也可点击下拉框查询, ...

  4. 使用JDK合成照片

    原图(工程所在目录7098849.jpg): 头像(工程所在目录20181023201750.jpg): 开始合成(执行如下main方法): public static void main(Strin ...

  5. Python——深浅Copy

    1. 赋值 赋值:指向同一块内存地址,所以同时改变 l1 = [1,2,3] l2 = l1 l1.append('a') print(l1,l2) # [1, 2, 3, 'a'] [1, 2, 3 ...

  6. (新)解决php版本ueditor中动态配置图片URL前缀(imageurlprefix)的方法

    昨天晚上写了一篇文章<解决ueditor中没法动态配置imageurlprefix的方法>,通过修改js获取当前域名的方法,配置imageurlprefix值: 发现还是不够灵活,因为域名 ...

  7. C#(.Net)中调用Sql sever汉字字符串显示为?问号

    利用Sql语言,向数据库中导入‘C语’,结果在检查的时候,发现如上图所示. 网络上,很多人说是编码问题,但是都没给出具体的解决方案,最终用这种方法解决了! 把上图中需要储存汉字字符串的类型变为 nva ...

  8. webpack快速入门(三):资源管理

    上一章说了基本的webpack是用,包括命令行打包,npm脚本打包等基础的东西. 这篇说一下webpack的资源管理,包括(图片,字体,数据),首先调整一下项目结构成: webpack-demo |- ...

  9. (转)使用 linux tar 命令压缩与解压文件

    原文链接 http://www.cnblogs.com/qq78292959/archive/2011/07/06/2099427.html tar -c: 建立压缩档案-x:解压-t:查看内容-r: ...

  10. 第三章 k8s cluster环境创建

    1  用如下方法安装指定版本的docker,但是我的环境会报错 # 安装rpm apt install rpm # 下载 RPM 包, docker 版本 wget https://download. ...