4、网络层:三层物理设备:集线器、交换机、路由器【IP、ICMP、BGP、OSPF

  • 1、集线器(一层设备,就是什么都不改,直接用)
  • 2、链路层交换机(二层设备,修改mac头。解开mac头,根据ip头来操作,如ARP通过ip信息来运作,然后根据mac头来转发。也叫第二层的分组交换机,因为会用到两层)
  • 3、路由器(三层设备,修改mac头和ip头。解开mac和ip,看里面的东西。用到了三层)
  • 4、分组交换机:全能选手,通用转发

在数据包从客户端发出的时候,会经过很多物理设备才最终找到服务端,下面介绍各种服务器。
交换机是第二层的分组交换机,路由器是第三层的分组交换机。

1、集线器(一层设备,就是什么都不改,直接用)

集线器工作在物理层,它采用广播的方式,将收到的每一个字节复制到其他所有端口上,也就是客户端发送的数据包能被所有人看到。

集线器存在的问题:安全性(包所有人都能看见)、带宽

2、链路层交换机(二层设备,修改mac头。解开mac头,根据ip头来操作,如ARP通过ip信息来运作,然后根据mac头来转发。也叫第二层的分组交换机,因为会用到两层)

交换机会学习,学习到每个设备的mac地址与交换机上转发端口的对应关系,以后发给mac的数据包就只发给这个口。交换机学习到的信息会通过转发表记录下来。

ARP请求过程:
在最开始交换机的转发表里没有任何信息。机器1只知道机器4的IP地址,发起广播,交换机A由于不知道机器4在哪边,所以也是广播。连续广播到交换机B进行广播。机器4收到广播之后会响应并回复MAC信息,通过广播的方式信息传回了给机器1,机器1就知道了机器4的mac地址。在这个过程中,交换机A和交换机B都分别知道了机器1和机器4对应的端口,下次再找机器1的话就不会广播了,直接往学到的端口上发就行。

交换机和主机等设备之间会形成一个图的拓扑结构,这样简单的交换机存在环路问题,同一个信息可能会绕圈从多个口回到这个交换机,那交换机就不知道机器到底在哪里。既然是图,解决环路问题就可以用最小生成树算法STP来解决(这属于有权无向图的生成树了吧)。

交换机存在的问题:安全(包依然能被很多人看到,因为转发表偶尔会要更新,到时候依然要广播)
解决方法:
物理隔离:分成单独的交换机,配置单独的子网。交换机与交换机之间不再直接连接,而是通过路由器来连接。这样就不存在一个交换机的信息被不应该听到的交换机听到的情况。但这样需要配备很多交换机,容易造成交换机接口的浪费。
虚拟隔离:使用VLAN虚拟局域网,这样一个交换机上就会连着属于多个局域网的机器。
只有相同VLAN的包才会互相转发,不同VLAN的包是看不到的。类似于广播之前加了一道局域网信息作为判断,同一局域网的才广播。

3、路由器(三层设备,修改mac头和ip头。解开mac和ip,看里面的东西。用到了三层)


(1)网关往往是个路由器,但是路由器不只是一个网关,路由器多个网口或者网卡,接着多个局域网,对每个局域网而言这个路由器都是网关。路由知道去到某个终点(IP地址)的话,需要去的下一站是哪里(下一个网关的IP),这是不断更新得来的。

网关相当于海关,既可以说这是大陆到香港的关口,也可以说是香港到大陆到关口。
数据包通过网关出局域网的时候要更换mac头(因为这个mac头只表示我下一站要到这个网关,现在我到达网关了,要去下一站了,自然要更换下一站的mac了。最终目的地由IP记录,MAC记录下一站目的地。但是也不能直接用最终目的地的MAC地址作为起始的目的地址,原因很简单,因为你根本就不知道目的地的目的地址啊,我此行的目的不就是想知道这件事吗。所以类似于IP记录长期目标,mac记录短期目标,一步步向终点靠近。)。报文中,每个头都存储了不同的信息,以及记录了下一层所使用的协议,例如mac中记录下一层用的是IP协议而不是ICMP协议,IP头中记录了下一层使用的是TCP还是IP协议。

IPv4报文
【TTL:Time to live,寿命,保证数据报不会无限循环下去。每过一个路由就减一,为0时丢弃。
【为什么IP和TCP都要执行差错检测?一方面IP的检验和只是检查首部的,TCP的检验和是检查整个数据报的。其次TCP和IP不一定是搭配着使用的,TCP可以搭别的网络层协议,IP也能搭别的传输层协议。
【标识、标志、片偏移是用来对被分片的IPv4数据包进行组装所使用的。因为发送方与目的方的路径上所使用的链路层协议不一定相同,他们的MTU(Maximum Transmission Unit,最大传送单元)也不一定相同,所以某些数据包可能会被分片成多个数据包,然后把信息写在头部里,让端系统组装。

IPv6报文
IPv6没有了标识、标志、片偏移,因为IPv6不允许分片和重新组装(因为这两个操作太费时间了),如果在路上发现数据包太大就会直接丢掉,然后返回一个“分组太大”的ICMP差错报文。
IPv6没有了首部检验和,因为觉得费时间,交给传输层协议来搞就行。

IPv4和Ipv6怎么迁移?用隧道,如果头尾路由器要用IPv6协议,中间用IPv4,那么到了IPv4路由器的时候就把整个IPv6的数据包装到IPv4的有效载荷字段里(把首部也塞进去了),到了使用IPv6的路由其哪里在将其取出。类似于套娃搭便车。

(2)静态路由
就是在路由器上一条条配置规则,满足条件A的到1口去1号局域网,满足条件B的到2口去2号局域网。这里网关分为转发网关(不改变IP地址,只改变MAC头)和NAT网关(既改变IP地址,也改变MAC头)。这里所说的满足条件一般是将IP的前N位进行匹配,采取最长前缀匹配规则进行转发。
一、转发网关
每一站都不改IP,每到一个网关就会看看终点ip是哪里,然后根据静态路由信息指出下一个应该去的网关的ip,通过ARP获得下一个网关的mac,改掉mac头将包传到下一个网关,不断重复。直到最后一个网关的时候发现诶我和终点ip在同一个局域网,那就直接广播ARP得到终点的mac,到达。

二、NAT网关(Network Address Translation):套马甲
接收方与发送方的ip地址可能是一样的,mac是世界唯一,但是ip不一定,就像家家的网关ip都是192.168.0.1那样,说明我们在家里用的都是192.168.0字段的ip。那就很容易冲突了,发送方和接收方看起来在一个局域网,实际上并不是(就是公网私网)。这个问题的解决办法就是NAT网关。
简单来说就是发送方和接收方的ip可以重复,但是网关的ip不重复就行。那么接收方发包的时候目的地址填的是终点所在网关的ip。在出局域网的时候,网关会改掉发送方的ip地址,相当于套一层马甲,换成网关的ip。相当于代言人,大家在家里都是弟弟妹妹的喊,但是和别人相亲的时候就由父母出马。王家女儿想和张家长子聊天,就摆脱王家掌门,王氏家族掌门请求与张氏家族掌门通话,中间全程对外都是说我们这是掌门间的谈话,实际上传到最后张家掌门会切换回ip,在局域网内找到长子,把话传达过去。因为什么女儿长子家家都有,但是王家掌门和张家掌门独一无二就行,总不能王家女儿说,我要找一个儿子聊天,家家户户都有儿子,谁知道她想找的是张家的。
具体实现是用子网将数据包发送到NAT网关时,网关会记录源数据包的子网IP地址和源端口号(如3345),然后改写IP和端口号(如5001),然后在NAT转换表里添加表项记录5001对应的是3004端口和子网IP地址。这样所有发送到这个网关伪装后的IP的端口为5001的数据包都能被正确转发到源地址处。

(3)、动态路由算法
根据路由协议算法生成动态路由表,随着网络运行状况的变化而变化,就是找图的最短路径问题。
【1】距离矢量路由算法(Distance-Vector,DV算法):基于Bellman-Ford算法:盯紧长期目标,每个人都关注和终点的距离
每个路由里存一张表,A到B最短距离为a1,A到C最短距离为a2,A到D最短距离为a3,B到C最短距离为b1,等等。即记录的是每个路由器到其他路由器的最短距离,即一个个距离矢量。如果某个路由器发现它自己和邻居的距离发生变化,就通知邻居。邻居接收到变化了,就检查更新自己路由表,某些路径可能有更好的选择了。然后更新了的表项,又会通知对应的邻居。这样直到最后无更新报文发出的时候就静止了,直到新的变动发生。在DV中,每个路由只和邻居交流,但是为邻居提供了自己到所有路由器的最低开销估计。
优点:链路开销小
缺点:收敛慢,路由错误的话会扩散得很远

【2】链路状态路由表(Link State broadcast,LS算法):基于Dijkstra算法:以小组大,每个人先关注和邻居的距离
每个路由都知道所有节点的开销,即A到B,A到C,【由于A不和D直接相连,所以没有A到D的信息,这是和距离矢量不同的地方】。
每个路由器保留全局信息,知道各个路由器离终点的距离,以及应该前往的下一个路由器的。路由器根据自己邻居离终点的距离以及自己离邻居的距离来更新自己离终点的距离。
这种方法的缺点是当路由下线的时候,大家需要很久才能发现。同时每次发送信息都要发送整个全局路由表。在LS中,每个路由和所有路由交流,但是只提供了自己到邻居的开销。
优点:收敛快,路由计算是分离的,大家单独算,所以比较健壮
缺点:链路开销大

具体协议:
【1】基于链路状态路由算法的OSPF(Open Shortest Path First,开放式最短路径优先)
主要用于数据中心内部,称为内部网关协议(Interior Gateway Protocol,简称IGP),找到组织内部最短路径。

【2】基于距离矢量路由算法的BGP(Border Gateway Protocol,简称BGP,边界网关协议)
又叫AS(自治系统)间路由选择协议。主要用于外网,它允许每个子网向因特网其他部分通告它的存在,如果没有BGP的话,每个子网都是孤岛。
自治系统的边界路由器之间用eBGP广播,边界路由学到的路由信息用iBGP传入内网,使得内网知道从哪个边界路由出去最好。举个例子,三个AS的边界路由分别是AS1a,AS2a,AS3a。10是AS1里的内部路由或者主机。当AS1a-0发送数据包的时候AS1a边界路由会在前面写上自己的名字“AS1a 10”,表示通过AS1a我,能够找到我里面的10主机。接着数据包再通过AS2a的时候,AS2a又可以盖上自己的名字“AS2a AS1a 10”这样大家都能知道有10的存在,也知道怎么去10那里。
距离矢量路由协议的缺点是收敛慢,但是BGP在路径中将一个自治系统看成一个整体,所以这样的自治系统不多,发送全局信息也是可以的。
BGP路由选择方法:
【A】热土豆路由选择:自私地想着尽快把包送出去
AS0收到一个数据包,根据前缀它直到要怎么去10那里,要先过AS1,再过AS2。但是AS0去这些网关有很多个办法去这些前缀了,他会选择一个最低开销的来送,比如他发现去AS2更近,那就直接送到AS2了。

【B】路由器选择算法
复杂,既考虑本地偏好,又要用上热土都。

4、分组交换机:全能选手,通用转发

分组交换机和交换机不同,分组交换机更强大,它基于一个流表,匹配里面的首部字段值的集合、计数器集合决定采取什么样的动作(转发发送到哪个端口,丢弃复制还是丢弃分组,修改是否重写某些首部字段)。这样一来就实现了路由选择(选择端口)、第二层交换路由(改mac头)、防火墙(是否丢弃分组)、负载均衡(发送到哪个端口、重写某些字段)、虚拟网络(类似NAT那样重写首部字段)。有些字段它并不匹配,因为没啥用,没必要增加复杂度。

4、网络层:三层物理设备:集线器、交换机、路由器【IP、ICMP、BGP、OSPF相关推荐

  1. OSI的七层模型,网线,网卡,集线器,交换机,路由器分别工作在七层模型中的哪一层?

    OSI七层网络模型由下至上为1至7层,分别为物理层(Physical layer),数据链路层(Data link layer),网络层(Network layer),传输层(Transport la ...

  2. 网络-1集线器/交换机/路由器

    什么是集线器 首先我要介绍一下集线器,集线器是属于局域网的设备,比如一个公司的内网,集线器处于OSI模型中的下数第一层,物理层,集线器由于是半双工的(我自己理解的半双工的概念:电脑A给电脑B发送信号的 ...

  3. 集线器 交换机 路由器关系

    号称网络硬件三剑客的集线器(Hub).交换机(Switch)与路由器(Router)一直都是网络界的活跃分子,但让很多初入网络之门的菜鸟恼火的是,它们三者不仅外观相似,而且经常呆在一起,要想分清谁是谁 ...

  4. 网卡 集线器 交换机 路由器 调制解调器的作用

    网卡工作在osi的第二层也就是数据链路层数据链路层有个非常明确的协议就是物理地址协议网卡保存有明确的地址因此可以确认其属于数据链路层 集线器它就是起一个信号中继放大的作用,与古老的中继器一样,都是工作 ...

  5. 网络传输--集线器,交换机,路由器(局域网/广域网传输)

    1.IP地址和MAC地址 IP地址 在IP协议中, 用来标识网络中不同主机的地址,作用在网络层; IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默 ...

  6. 网络硬件三剑客集线器交换机路由器

    号称网络硬件三剑客的集线器(Hub).交换机(Switch)与路由器(Router)一直都是网络界的活跃分子,但让很多初入网络之门的菜鸟恼火的是,它们三者不仅外观相似,而且经常呆在一起,要想分清谁是谁 ...

  7. 集线器 交换机 路由器 modem 区别

    介绍 平时用到网络的时候,不管是生活还是工作,都会或多或少听过或用过这些设备,那么本次索性整理出来,供后续参考使用 1.集线器 如上图: 1.集线器主要目的是让其中内部所有的网络设备连通,它有一个具有 ...

  8. 集线器 交换机 路由器

    集线器将信号采用广播的方式发送出去,接收方根据mac地址判断是否接受这个包. 交换机的工作原理: 信号到达交换机的网线接口,由PHY(MAU)接受,传递给MAC模块,MAC模块将信号转换为数字信号,并 ...

  9. 集线器、路由器与交换机

    1. 集线器.交换机与路由器的区别 1.1. 集线器.交换机和路由器的定义 集线器(HUB)属于数据通信系统中的基础设备,它和双绞线等传输介质一样,是一种不需任何软件支持或只需很少管理软件管理的硬件设 ...

最新文章

  1. 让html:error只显示第一条错误信息
  2. Day10_linux计划任务管理
  3. python利器怎么编程-Python任务调度利器之APScheduler详解
  4. 组件和模块间Activity路由框架
  5. python:opencv 二值化处理
  6. 去掉PE文件随机基址的方法
  7. 内联函数 —— C 中关键字 inline 用法解析
  8. E20170830-mk
  9. wps的计算机在哪里设置密码,wps文件怎么设置和取消密码 wps文件密码设置和取消的步骤方法...
  10. 利用对象池优化数据库操作
  11. 基于Wi-Fi的HID注射器,利用WHID攻击实验
  12. Win10系统离线安装可选功能XPS查看器(XPS Viewer)的详细说明(修订版)
  13. android 提取方法,Android ROM文件提取方法
  14. 艾尔塔7号/Elta7
  15. android+ios+账号互通,ios和安卓游戏账号能互通吗?
  16. 3D体感试衣镜,实现虚拟试穿,提升顾客的购物体验!
  17. 【STM32F407】第5章 RTX5操作系统移植(MDK AC6)
  18. 计算机拨打比赛策划书,电脑打字擂台赛活动策划书
  19. Android组件化实战五: APT的高级用法JavaPoet
  20. 为什么电脑传到手机上的html,电脑上的Excel表格传到手机上,手机为什么打不开?...

热门文章

  1. macvlan源码分析
  2. windows下修改中用户名为英文
  3. 【SQL】遍历字符串之Substr
  4. 数据分析体系 - 用户粘性(DAU/MAU 和 月人均活跃天数)
  5. html表格文字方向改变,excel表格怎么改变文字方向
  6. 初识C语言系列-5-完结篇-#define,指针,结构体
  7. 自定义SSLSocketFactory
  8. redis 在java中的实例使用场景
  9. Audio Codec介绍-6(音频设备的3种硬件接口--PCM,IIS和AC97)
  10. 微信公众号获取微信用户共享收货地址