计算机网络(二)之网络层篇

网络层概述

问题回顾(上一篇文末)

  • 跨节点传输?

网络层相关内容

IP协议详解

  • 虚拟互联网络

  1. 计算机网络是错综复杂的
  2. 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
  3. 当网络中主机使用IP协议连接时,则无需关注网络细节
  4. IP协议使得复杂的实际网络便为一个虚拟互联的网络
  5. IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
  6. IP协议解决了在虚拟网络中数据报传输路径的问题
  • IP协议

MAC地址和IP地址的区别

IP协议定义

  1. IP地址长度为32位,常分成4个8位
  2. IP地址常用使用点分十进制来表示(0-255.0--255.0--255.0--255)
    例如: 114.114.114.114 、 1.1.1.1 、8.8.8.8 、70.12.34.34 、255.255.255.255 、111.111.111.111
    总共有 2^32 = 4294961292 个IP地址

对于上节提到的"帧"数据,主要是分为"帧"首部,"帧"尾部,"帧"的数据;对于帧的数据主要就是IP数据报

IP数据报

IP数据报分为 IP首部IP数据报的数据
IP首部图解如下:

  1. 版本 :占四位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
  2. 首部长度: 占4个字节,最大数值为15,表示的是IP首部长度,单位是"32位字"(4个字节),也即是IP首部最大长度为60字节,最小长度为20字节
  3. 总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据),最大的数据链路长度MTU为1500,显然65535远大于1500,因此数据链路层会把IP协议进行分片.
  4. 标识:协议内部主要的相关信息
  5. 标志: 标记IP报文是否可以分片
  6. 片偏移:将IP报文进行分片,拆分成多个数据帧.记录当前数据帧保存的是第几个偏移的数据.
  7. TTL:占8位,IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文,丢掉之后通过会发出一个ICPM终点不可达差错报文
    解决的是,当IP报文找不到终点的时候,避免IP数据在网络中无限的传输而消耗带宽,因此设置TTL可以让IP在有限次传输后到达目的机器或者未到达丢弃掉.
  8. 协议:占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)
    具体如下图:
  9. 首部校验和: 占16位,校验IP首部是否有出错!
  10. 源IP地址:发送IP数据包的IP地址
  11. 目的IP地址:数据包到达目的地的IP地址

IP协议的转发流程

逐跳(hop-by-hop)

路由表简介

流程:

  • A通过网卡发出数据帧
  • 数据帧到达路由器,路由器取出前6字节
  • 路由器匹配MAC地址表,找到对应的网络接口
  • 路由器往该网络接口发送数据帧

计算机或者路由器都拥有路由表

IP协议的转发流程


流程如下:

  • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
  • A将数据报发送给E
  • E查询路由发现下一跳为F,将数据报发送给F
  • F查询路由表发现目的地C直接连接,将数据报发送给C

结合数据链路层/网络层:

  • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
  • A将IP数据报交给数据链层,并告知目的MAC地址是E
  • 数据链路层填充源MAC地址A目的MAC地址E
  • 数据链路层通过物理层将数据发送给E
  • E的数据链路层接收到数据帧,把帧数据交给网路层
  • E查询路由表,发现下一跳为F
  • E把数据报交个数据链路层,并告知目的MAC地址为F
  • E的数据链路层封装数据帧并发送
  • F的数据链路层接收到数据层,把帧数据交给网路层
  • F查询路由表,发现下一跳为C
  • F把数据报交给数据链路层,并告知目的地MAC地址为C
  • F的数据链路层封装数据帧并发送

总结:

  • 数据帧的每一跳的MAC地址都在变化
  • IP数据报每一跳的IP地址始终不变

ARP协议与RARP协议


转发基本流程

  • A通过网卡发出数据帧
  • 数据帧到达路由器,路由器取出前6字节
  • 路由器匹配MAC地址表,找到对应的网络接口
  • 路由器往该网络接口发送数据帧

问题:路由器不知道C的MAC地址?

  • E检查MAC地址表,发现没有C的信息
  • E将广播A的数据包到除A以外的端口
  • E将收到来自B、C的回应,并将MAC 地址记录


A把IP数据包交给数据链路层处理 ,并且得知下一跳的MAC地址为E
那么A是如何知道E的MAC地址呢?

ARP(Addess resolute Protocol)地址解析协议


将网络层的IP32位地址转换为数据链路层MAC48位地址
ARP缓存表

ARP缓存表有两种情况

  1. ARP缓存表缓存有IP地址和MAC地址的映射关系(如 转发基本流程)
  2. ARP缓存表没有缓存IP地址和MAC地址的映射关系(如 上述提到的问题)

因此 ARP缓存表是ARP协议和RARP协议运行的关键, ARP缓存表缓存了IP地址到硬件地址之间的映射关系,ARP缓存表中的记录并不是永久有效的,有一定的期限.(cmd -> arp -a)

ARP协议具体的报文信息

注意:ARP是直接封装到数据链路层中的数据帧中的
如图:


RARP(Revese Address Resolute Rrotocol)逆地址解析协议

图解:



与ARP类似


补充:在前面的跳转传递中,需先要查询ARP缓存表得知目的地的MAC地址

IP地址的子网划分

IP地址长度为32为位,常分成4个8位

分类的IP地址

主要是网络号、主机号总共是32位
A类地址:网络号----8位、主机号----24位、首位是0
B类地址:网络号----16位、主机号----16位、首位是10
C类地址:网络地址----24位、主机号----8位、首位是110

特殊主机号:

  • 主机号全0表示当前网络段,不可分配为特定主机
  • 主机号为全1表示广播地址,向当前网络段所有主机发消息
    如1.2.3.4、1.0.0.0 、1.255.255.255
    特殊的网络号:
  • A类地址网络段全0(00000000)表示特殊网络
  • A类地址网络段后7位全1(01111111:127)表示回环地址
  • B类地址网络段(10000000.00000000:128.0)是不可使用的
  • C类地址网络段(192.0.0)是不可使用的
    精确图解(对比上图)

125.125.3.60: 前八位 01111101
163.70.31.23:前八位10100011
210.36.127.11:前八位11010010

127.0.0.1,通常被称为本地回环地址( Loopback Address,不属于任何
个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远
不会宕掉的接口。在 Windows操作系统中也有相似的定义,所以通常在
安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络
协议、基本数据接口等是否正常的

划分子网

某公司拥有256名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?
答:应该选择A类地址,但是造成了很大的地址空间浪费
因此新增子网号

问题:子网号这么多有没有办法快速判断某个IP的网络号?
答:通过子网掩码

子网掩码

  • 子网掩码和|P地址一样,都是32位
  • 子网掩码由连续的1和连续的0组成
  • 某一个子网的子网掩码具备网络号位数个连续的1
    图解:


子网掩码划分(看图解析)

网络号:193.10.10.0



无分类编址CIDR

  • CIDR中没有A、B、C类网络号、和子网划分的概念
  • CIDR将网络前缀相同的IP地址称为一个“CIDR地址块”

主要是分为网络前缀(网络前缀是任意位数的)、主机号

斜线记法

  • 193.10.10.129/25
    25:表示当前的网络号前缀为25位


公司


城市

网络地址转换NAT技术

  • 网络地址转换NAT(Network Address Translation)
  • NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
  • NAT减缓了IP地址的损耗,但是增加了网络通信的复杂度

首先我们先了解
内网地址:

  • 内部机构使用
  • 避免与外网地址重复

外网地址:

  • 全球范围使用
  • 全球公网唯一

三类内网地址

  • 10.0.0.0 ~ 10.255.255.255 (支持万级数量级设备)
  • 172.16.0.0 ~ 172.31.255.255(支持百万级数量级设备)
  • 192.168.0.0 ~ 192.168.255.255(支持万数量级设备)

对于公司:可以在外部使用外网IP,在内部使用内网地址;对于家庭:可以使用外网IP,在内部使用C类的内网地址

图解:




如果电脑(192.168.2.11)发送数据报文到手机(192.168.2.10),通过路由器(173.21.59.10)将地址替换成路由器的地址和端口号,手机接收到的实际上是路由器的IP地址. 也就是内网-外网相互转换

ICMP协议解析

  • 网际控制报文协议(Internet Control Message Protocol)
  • 辅助IP协议传输,ICMP协议可以报告信息错误或者异常情况
  • 封装在IP数据包中,ICMP是IP是数据中的一部分

图解:


ICMP首部


8位类型:主要是ICPM种类
8位代码:不同的ICPM出现的错误代码
16位校验和:对ICMP报文数据进行校验

ICMP协议详解


在进行传输的时候,会将在IP数据包中将ICMP中的字段值 1 写入

报文类型

  • 差错报告报文
  • 询问报文


ICMP的应用

  • Ping 应用
  • Traceroute应用
  1. Ping应用
    ping应用,会发出ICMP的询问报文,因此在输入Ping命令的时候,首先会组装IP协议的报文,数据包里面会组装一个ICMP的询问报文,并将其封装到IP协议中,在通过数据链路层发出.
    Ping回环地址127.0.0.1
    Ping网关地址
    Ping远端地址



    因为IP首部最小字节数为20,所有该数据报(在这里表示ICMP,因为无数据)为12,时间表示传输时间

  2. Traceroute应用
    Traceroute可以探测IP数据报在网络中做够的路径
    图解如下:


网络层的路由概述

(见上述IP转发流程)

自治系统(Autonomous System)

  • 一个自治系统(AS)是处于一个管理机构下的网络设备群
  • AS内部网络自行管理,AS对外提供一个或多个出(入)口

自治系统内部路由的协议称为:内部网关协议(RIP,OSPF)
自治系统外部路由的协议称为:外部网关协议(BGP)
例如:公司内部AS1学校内部AS2 通信

内部网关路由协议之RIP协议

距离矢量(DV)算法

  • 每一个节点使用两个向量DiSi
  • Di描述的是当前节点到别的节点的距离
  • Si描述的是当前节点到别的节点的下一节点
  • 每一个节点与相邻的节点交换向量Di和Si的信息
  • 每一个节点根据交换的信息更新自己的节点信息

图解


蒙蔽

目的就是为了求dij的最小值

DV图解


通过观察发现距离矢量信息会有所差别
原因是:
A -> C -> B: A到B的距离可能是由A到C在到B的
B -> C -> D -> A:同上

RIP协议的过程

  • RIP(Route Infomation Protocol) 协议
  • RIP协议是使用DV算法的一种路由协议
  • RIP协议把网络的跳数(hop)作为DV算法的距离
  • RIP协议每隔30s交换一次路由信息
  • RIP协议认为跳数 > 15的路由则为不可达路由

RIP协议的过程

  1. 路由器初始化路由信息(两个向量Di和Si)
  2. 对相邻路由器X发来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
    i. 检索本地路由,将信息中的新的路由插入到路由表里面
    ii. 检索本地路由,对于下一跳为X的,更新为修改后的信息
    iii. 检索本地路由,对比相同目的地距离,如果更新信息的距离更小,则更新本地路由()
  3. 如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(>15跳)

图解

i

图1代表的是路由器到D的距离为2下一跳的为A, 收到图2新路由发到A点的距离为4下一跳为C,到B点的距离为2下一跳为C,图三(灰色)是图二距离加1后更新的信息,图四是将新的路由器(图二)中的路由表添加到图一中

ii
  1. DV算法过程


    iii

RIP缺点
RIP协议:实现简单,开销很小
RIP协议:限制了网络的规模
RIP协议:"坏消息传递慢",更新收敛时间过长

Dijkstra(迪杰斯特拉)算法

  • Dijkstra算法是著名的图算法
  • Dijkstra算法解决有权图从一个节点到其他节点的最短路径问题
  • "以起始点为中心,向外层层扩展"
最短路径
  1. 初始化两个集合(S,U)(S为只有初始顶点A的集合,U为其他顶点集合
  2. 如果U不为空,对U集合顶点进行距离的排序,并取出距离A最近的一个顶点D
    i. 将顶点D的纳入S集合
    ii. 更新通过顶点D到达U集合所有点的距离(如果距离更小则更新,否则不更新
    iii. 重复2步骤
  3. 知道U集合为空,算法完成
    (网上查查资料明白道理就好/~)

内部网关路由协议之OSPF协议

链路状态(LS)协议

  • 消息描述该路由器相邻路由器的链路状态(距离、时延、带宽)

特点:

  1. 向所有的路由器发送消息
  2. 消息描述该路由器与相邻路由器的链路状态
  3. 只有链路状态发生变化时,才发送更新信息

OSPF协议的过程

  • OSPF(Open Shorttest Path First:开放最短路径优先)
  • OSPF的协议的核心是Dijkstra算法

1. 向所有路由器发送消息
获取网络中的所有信息 => "网络的完整拓扑"
每个路由器都会运行Dijkstra算法,进而找到自己到达某个顶点的最短路径
* 也称为"链路状态数据库"
* "链路状态数据库"是全网一致的
2.消息描述该路由器与相邻路由器的链路状态
OSPF协议更加客观、更加先进(仔细理解理解~)
3.只有链路状态发生变化时,才发送更新信息
减少了数据的交换,更快收敛

五种消息类型
  1. 问候消息(Hello)
  2. 链路状态数据库描述信息
  3. 链路状态请求信息
  4. 链路状态更新信息
  5. 链路状态确认消息

图解:


OSPF

RIP和OSPF协议对比

RIP VS OSPF

外部网关路由协议之BGP协议

  • BGP(Border Gateway Protocol:边际网关协议)
  • BGP协议是运行在AS之间的一种协议
  • BGP协议能够找一套到达目的比较好的路由

原由

  • 互联网规模很大
  • AS内部使用不同的路由协议


    BGP
  • AS之间需要考虑除网络特性以外的一些因素(政治、安全...)

BGP发言人(speaker)

  • BGP并不关心内部网络拓扑
  • AS之间通过BGP发言人交流信息
  • BGP Speaker 可以认为配置策略


    BGP Speaker

完结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容