想更一进步的支持我,请扫描下方的二维码,你懂的~算法
因特网的核心部分是由许多网络
和把它们互连起来的路由器
组成,而主机处在因特网的边缘部分
。缓存
路由器:实现分组交换的关键构建,在路由器中的输入和输出端口之间没有直接连线
(并不是面向链接)。
任务是转发收到的分组
-- 网络核心部分最重要的功能。路由器收到一个分组,先暂时存储下来,再检查其首部,查找转发表,按照首部的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步一步地以存储转发
的方式,把分组交付到最终的目的主机。目的主机收到分组后剥去首部还原成报文。服务器
路由器处理分组的过程是:网络
报文:并发
报文。在发送报文以前,先把较长的报文划分红为一个个更小的等长
数据段, 在每个数据段前面,加上一些必要的控制信息组成的
首部(也称为
包头)后,就构成了一个
分组,也成为
包`。分组是因特网中传送的数据单元。而分组的首部很是重要,由于首部包含了诸如目的地址和源地址等重要信息,每个分组才能在因特网中独立地选择传输路径。分布式
适配器/网络接口卡/网卡
适配器的重要功能:测试
即计算机经过适配器来和局域网进行通讯。spa
集线器很像一个多接口的转发器,工做在物理层.
用集线器能够在物理层上扩展局域网。3d
用网桥能够在数据链路层扩展局域网。code
它根据 MAC 帧的目的地址对收到的帧进行转发。目前用的最多的是透明网桥
。
数据链路层有三个目的:
数据链路层传送的是:帧
。不管是以太网仍是IEEE802封装都采用48bit的目的地址和源地址-- 硬件地址。(ARP/RARP)对32bit的IP地址和48bit的硬件地址进行映射。
数据链路层三个基本问题:
1. 封装成帧
封装成帧(framing)就是在一段数据的先后分别添加首部和尾部(用于帧定界),而后就构成了一个帧。肯定帧的界限。
不管是以太网(46bytes)仍是IEEE802(38bytes)都对帧有最小长度要求, 为保证这一点,须要在不足的空间插入填充字节
。还能够利用字节填充法解决透明传输的问题 。
循环冗余检验 CRC
的检错技术。仅用循环冗余检验只能作到无差错的接受:凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)要作到可靠传输
(即发送什么就收到什么)就必须再加上确认
和重传
机制。
如今全世界使用得最多的数据链路层协议是点对点协议 PPP
. 用户使用拨号电话线接入因特网时,通常都是使用 PPP 协议。
PPP协议不须要作到: 纠错(单要检查错误),流量控制,多点线路...
三个组成部分:
局域网最重要的特色是:网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网的拓扑:1 星形网 2 总线网 (树形网) 3 环形网 (令牌环) -- 如今以太网是局域网代名词。
局域网(以太网)的工做层次跨越了数链层 和 物理层。计算机经过使用适配器和互联网通讯。
以太网提供的服务是不可靠的交付,即尽最大努力的交付。目的站收到有错误的数据帧就丢掉此帧。
以太网中,硬件地址又称为物理地址/MAC地址(48位),实际上就是适配器地址。
网络层向上只提供简单灵活的,无链接的,尽最大努力交付(不可靠)的数据报服务。
不可靠:IP协议不能保证IP数据报能成功地到达目的地。仅提供最好的传输服务,若是发生错误:就丢弃该数据报。
无链接: IP不维护任何关务后续数据报的状态信息。每一个数据报的处理都是相互独立的。
-- IP数据报能够不按发送顺序接收。
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有三个协议:
地址解析协议 ARP
网际控制报文协议 ICMP
网际组管理协议 IGMP
具体关系如图:
IP路由选择分两种状况,对于主机来讲,若是是在PPP点对点或者共享网络(局域网)上,那么IP数据报就能够从源主机直接发送到目的主机;对于互联网来讲,源主机得首先把IP数据报发送到默认路由器
,由该路由器进行转发改数据报。
IP层既能够配置成主机的功能,也能够配置成路由器的功能。区别就是主机不在不一样网络接口间转发数据报,而路由器进行转发。
进一步说就是,IP层在内存中有一个路由表, 当收到一份数据报并进行发送的时候,IP层要对路由表进行搜索一次。当该数据报是来自某个网络接口时,IP首先检查目的IP是否为本机IP地址之一或者IP广播地址。
下面介绍下路由表
,在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
。根据目的网络地址就能肯定下一跳路由器,这样1.IP 数据报最终必定能够找到目的主机所在目的网络上的路由器(despite要经过屡次的间接交付)2. 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
路由表的每一项包括:
IP层执行选路机制(一组决定把那些路由放入路由表的规则);而daemon守护程序提供选路策略。
(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;不然是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;不然,执行(4)。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;不然,执行(5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;不然,执行(6)。
(6) 报告转发分组出错
IP搜索路由表的3个步骤:
1. 搜索路由表,寻找能与目的IP地址彻底匹配的表目。
2. 搜索路由表,寻找能与目的网络号相匹配的表目。
3. 搜索路由表,寻找标为默认的表目。
每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所链接到的网络,而另外一个字段则是主机号 host-id,它标志该主机(或路由器)。
两级IP能够记为 IP地址 ::={<网络号>,<主机号>}
网络类别 | 最大网络数 | IP地址范围 | 第一个可用的网络号 | 最后一个可用的网络号 | 每一个网络最大主机数 |
---|---|---|---|---|---|
A | 126(2^7-2) | 1.0.0.0-126.255.255.255 | 1 | 126 | 16777214 |
B | 16383(2^14-1) | 128.1.0.0-191.255.255.255 | 128.1 | 191.255 | 65534 |
C | 2^21-1 | 192.0.1.0-223.255.255.0 | 192.0.1 | 223.255.255 | 254 |
IP地址特色:
网络号
来转发分组。对基本两级IP结构的改进,由于A类地址和B类地址为主机号分配了太多的空间,而事实上不须要安排这么多主机。
因此不是把IP地址当作单纯的一个网络号+主机号。而是进一步把主机号划分为一个子网号+主机号。 因此IP地址 = 网络号+子网号+主机号。
子网掩码
:除了IP地址外, 主机还须要知道有多少比特用于子网号,有多少比特用于主机号,也就是两者界限。
这是在引导过程经过子网掩码来肯定的。这个掩码是32bit
:值为1的比特留给网络号和子网号。为0的比特留给主机号。
(IP 地址) AND (子网掩码) = 子网的网络地址
给定IP地址和子网掩码之后,主机就能够肯定IP数据报的目的是:(1)本子网的主机;(2)本网络中其余子网的主机;(3)其余网络的主机。
网络层及以上使用IP地址(放在IP数据报首部),链路层及如下使用MAC硬件地址(放在MAC帧首部)
什么是 ARP?
ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在 IP 以太网中,当一个上层协议要发包时,有了该节点的 IP 地址,ARP 就能提供该节点的 MAC 地址。
为何要有 ARP?
OSI 模式把网络工做分为七层,彼此不直接打交道,只经过接口 (layre interface). IP 地址在第三层, MAC 地址在第二层。
协议在发生数据包时,首先要封装第三层 (IP 地址)和而后在封装第二层 (MAC 地址)的报头, 但协议只知道目的节点的 IP 地址,不知道其物理地址,又不能跨第2、三层,因此得用 ARP 的服务。
详细说明:
Ø 在网络通信时,源主机的应用程序知道目的主机的 IP 地址和端口号,殊不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,若是接收到的数据包的硬件地址与本机不符,则直接丢弃。所以在通信前必须得到目的主机的硬件地址。ARP 协议就起到这个做用
Ø 当一台主机把以太网数据帧发送到位于同一局域网上的另外一台主机时,是根据 48 位的以太网地址来肯定目的接口的,设备驱动程序从不检查 IP 数据报中的目的 IP 地址。ARP(地址解析)模块的功能为这两种不一样的地址形式提供映射:32 位的 IP 地址和 48 位的以太网地址
每个主机都设有一个 ARP 高速缓存(ARP cache)
---ARP协议高效运行的关键,为了减小网络上的通讯量。里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。ARP高速缓存在每一项内容都有一个定时器,根据它来删除不完整和完整的表项。
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。若有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,而后经过局域网将该 MAC 帧发往此硬件地址
arp -a arp -d
该命令能够检查ARP高速缓存。
-a : 显示高速缓存中的全部内容。
-d :删除ARP高速缓存的某一项内容。
须要注意:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
若是所要找的主机和源主机不在同一个局域网上,那么就要经过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,而后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工做就由下一个网络来作
为了提升IP数据报交付成功的机会
,在IP层使用了网络控制报文协议ICMP.
ICMP容许主机或路由器报告差错状况
和提供有关异常状况
的报告。ICMP 报文的种类有两种,即ICMP 差错报告报文
和ICMP 询问报文
.
ICMP差错报告报文有5种:
ICMP差错报告报文的数据字段的内容
不该发送ICMP差错报告报文的几种状况
自治系统和内部网关协议IGP(RIP, OSPF),外部网关协议EFP(BGP)
RIP是一种分布式基于距离向量的路由选择协议
原理:要求网络中每个路由器都要维护从它本身到其余每个目的网络的距离记录(这是一组距离,即距离向量)。
RIP 认为一个好的路由就是它经过的路由器的数目少,即“距离短”. 它容许一挑路径最多只包括15个路由器,当距离最大值为16的时候至关于不可达。因此RIP只能用于小型互联网。 RIP不能再两个网络直径同时使用多条路由,RIP选择一个具备最少路由器的路由(最短路由),哪怕还存在另外一条告诉但路由较多的路由。
RIP协议的三个要点:
仅和相邻路由器
交换信息
RIP协议让互联网中的全部路由器都和本身的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每个路由器到每个目的网络的路由都是最短的(即跳数最少)。
虽然全部的路由器最终都拥有了整个自治系统的全局路由信息,但因为每个路由器的位置不一样,它们的路由表固然也应当是不一样的。
交换的信息是当前本路由器所知道的所有信息
,即本身的路由表
交换路由信息
RIP 协议的收敛(convergence)过程较快,即在自治系统中全部的结点都获得正确的路由选择信息的过程.
优势:简单
缺点:当网络出现故障时,要通过比较长的比较时间才能将此信息传送到全部的路由器;
并且限制了网络的规模,所能使用的最大距离是15;
路由器之间交换的路由信息是路由器中完整的路由表,于是随着网络规模的扩大,开销也就增长。
是分布式的链路状态协议
OSPF协议的三个要点:
向本自治系统中全部路由器发送信息
,这里使用的方法是洪泛法为了使 OSPF 可以用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。-- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每个区域而不是整个的自治系统,这就减小了整个网络上的通讯量。
OSPF 优势:
- 因为一个路由器的链路状态只涉及到与相邻路由器的连通状态,于是与整个互联网的规模并没有直接关系。所以当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
- OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
BGP是不一样自治系统的路由器之间交换路由信息的协议。
BGP力求寻找一条可以到达目的网络且比较好
的路由, 而并不是找到一条最佳路由
。BGP采用了路径向量路由选择协议。
是一种具备多个输入端口和多个输出端口的专用计算机,其任务是转发分组。namely, 将路由器某个输入端口收到的分组,按照分组要去的目的地(目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
转发
:就是路由器根据转发表将用户的IP数据表从合适的端口转发出去路由选择
: 是按照分布式算法, 根据各相邻路由器获得的关于网络拓扑的变化状况,动态地改变所选择的路由。
路由表是根据路由选择算法得出的,转发表是从路由表得出的。
单播
每一个以太网帧包含源主机和目的主机的以太网地址。一般每一个以太网帧仅发往单个目的主机,目的地址指明单个接收接口。在此方式下,任意两个主机的通讯不会干扰网内其余主机。
广播
一个主机要向网上的全部其余主机发送帧,这就是广播。
多播
处于单播和广播本身:帧仅传送给属于多播组的多个主机。
主机对信道传送过来帧的过滤过程如图:
首先:一般网卡仅接收那些目的地址为网卡物理地址
或广播地址
的帧。对于以太网,当地址中最高字节的最低位
设置为1
时表示该地址是一个多播地址
,用十六进制可表示为0 1 : 0 0 : 0 0 : 0 0 : 0 0 : 0 0
(以太网广播地址ff : ff : ff : ff : ff : ff
可看做是以太网多播地址的特例)
其次,设备驱动程序接收到帧,对其进行帧过滤:首先帧类型必须制定要使用的协议(IP,ARP)。其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。
4种IP广播地址:
255.255.255.255
。指向子网的广播
即主机号为全1且有特定子网号的地址。做为子网直接广播地址的IP地址须要了解子网的掩码。
例如,若是路由器收到发往128.1.2.255的数据报,当B类网络128.1的子网掩码是255.255.255.0时,该地址就是指向子网的广播地址。但若是该子网的掩码为255.255.254.0,该地址就不是指向子网的广播地址。
广播是一种应该谨慎使用的功能。在许多状况下, I P多播被证实是一个更好的解决办法
IP多播提供两类服务:
1) 向多个目的地址传送数据。
2) 客户对服务器的请求。
使用多播能够明显减轻网络中各类资源的消耗。
多播数据报与通常的IP数据报 区别是它使用D类IP地址做为IP地址,而且首部的协议字段是2,代表使用IGMP协议。此外多播数据报不产生ICMP差错报文,所以不对PING命令产生响应。;
多播数据报的目的地址必定不能写入目的主机的IP地址,由于在同一时间可能有成千上万个主机要加入同一多播组。因此多播数据报不能再其首部写入这样多的主机IP地址。 -- 因此在多播数据报的目的地址写入的是多播组的标示符,即IP地址的D类地址。而后设法让加入到这个多播组的主机的IP地址与多播组的标示符关联起来。
多播使用组地址
--- IP使用D类地址支持多播。多播地址只能用于目的地址,而不能用于源地址。
分配的28 bit均用做多播组号而再也不表示其余。 而这28位的前5位不能用来构成以太网的硬件地址。
IP地址范围224.0.0.0
到239.255.255.255
.
D 类 IP 地址与以太网多播地址的映射关系
接口和网络的有关信息能够经过ifconfig和netstat命令能够得到,包括接口IP地址,子网掩码,广播地址和MTU.
查看路由表的命令:
netstat -rn
ping 用来测试两个主机本身的连通性,执行ping指令使用ICMP传输协议发送请求并发出要求回应的信息。
ping是应用层直接使用网络层ICMP的例子,它没有经过运输层的TCP/UDP
Traceroute用来跟踪一个分组从源点到终点的路径。
Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是没法交付的UDP用户数据报。
arp -a arp -d
该命令能够检查ARP高速缓存。 -a : 显示高速缓存中的全部内容。 -d :删除ARP高速缓存的某一项内容。