第一天
ARP协议
正向ARP:通过IP地址获取目的MAC地址
过程: 目的IP到目的MAC再到ARP表中,所需时间是180s
反向ARP:通过目标MAC地址获取目标IP地址
免费ARP:利用正向ARP的原理请求自己的IP地址
1.自我检测
2.检测地址冲突
TCP/IP
四层模型:标准模型
五层模型:对等模型
PDU:协议数据单元(在分层网络结构,例如在OSI模型中,在传输系统的每一层都将建立协议数据单元)
举例:
L1PDU
L2PDU
…
L7PDU
在应用层中是数据报文
在传输层中是数据段
在网络层中是数据包
在数据链路层中是数据帧
在物理层中是比特流
封装和解封装:一般把数据从应用层开始到数据链路层的加工过程称为封装,反过程称为解封装
应用层:存在封装过程,取决于不同的应用程序(比如在电脑上同时登陆三个QQ号,这时要给其中的某一个发送信息,就要依靠QQ号来进行区分(不能用端口号来区分,因为端口号是区分不同的应用的,所以就要依靠QQ号来充当会话层的地址来区分不同的QQ号之间的信息),微信依靠微信号来区分,这就是封装方式取决于不同的应用)
传输层:TCP,UDP(端口号)(由工作在传输层的协议来封装端口号)
网络层:封装IP地址(由工作在网络层的协议封装IP地址)
数据链路层:封装MAC地址(由工作在数据链路层的协议封装MAC地址)
物理层:数据已经成为电信号,不存在封装(电信号不能封装,只能对它进行传输和处理)
TCP/IP的跨层封装(用于直连设备间的协议通讯)
目的:提高封装和解封装的速度
跨四层封装:应用层的数据封装完成后,直接封装网络层数据(应用在直连路由设备之间)
跨三四层封装:在应用层封装之后直接封装二层数据
当跨层封装到3层报头时,IP报头将使用分片技术来取代4层的分段;
使用协议号来对应4层的端口号;
协议号—0-255,一个协议号对应一个协议
网络层使用协议号来对应4层的协议—TCP 6 UDP 17
其他号码用于跨层封装 1号ICMP OSPF89
若跨层封装到2层;以以太网举例:
非跨层封装时,以太网使用二代封装规则;
跨层封装时使用一代:MAC+LLC 介质访问控制子层+逻辑链路控制子层
MAC-802.3 LLC—802.2 MAC负责物理寻址和控制物理层
LLC负责分配和类型号;
SOF:帧首定界符
MAC子层:介质访问控制层(802.3)
LLC子层:逻辑链路控制层(802.2)
DSAP:标识接收方上层处理数据报文的模块
SSAP:标识发送方上层梳理数据报文的模块
Control:决定我们数据传送方式的模块
1.无连接模式
2.面向连接模式---控制分片,重组,排序
IP地址
IPv4版本:32位二进制
IPv6版本:128位二进制
点分十进制:把32位二进制分为4部分,每部分8位,进行二进制到十进制的转换
网络位:网络位相同,则代表在同一个广播域
主机位:在同一个广播域中,使用主机位来区分不同的主机
掩码:由连续的1和连续的0组成,1代表网络位,0代表主机位
IPv4地址分类
单播地址:一对一通讯
特点:既能作为源IP地址,又能作为目的IP地址
组播地址:一对多通讯
广播地址:一对所有通讯(仅作为目的IP地址使用)
A:掩码 255.0.0.0
B:掩码 255.255.0.0
C:掩码 255.255.255.0
D
E
IP地址分类原则:根据IP地址二进制的前八位数字特征分类
A:0XXX XXXX( 0-127)
B:10XX XXXX (128-191)
C:110X XXXX (192-223)
D:1110 XXXX (224-239)
E:1111 XXXX (240-255)
私网IP地址(注:私网IP地址可以重复使用,但是在私网内部需要保证唯一性)
A:10.0.0.0-10.255.255.255(1个A类网段)
B:172.16.0.0-172.31.255.255(16个B类网段)
C:192.168.0.0-192.168.255.255(256个C类网段)
特殊IP地址
1.无效地址/缺省(默认)地址--0.0.0.0/0 ---代表所有的IP地址
2.本地环回地址---127.0.0.1
用于检测TCP/IP协议栈道是否能够正常的封装和解封装数据---用于检测网卡的好坏
在系统安装完成之后,默认存在--127.0.0.1
3.受限广播地址---255.255.255.255 ---只能作为目标地址去使用--通知到所有的IP地址
4.本地私有地址---169.254.x.x/16 ---当PC没有办法通过自动获取IP地址的方式获取IP地址 时 PC会自动产生一个IP地址。
5.主机位全0的地址 192.168.1.0/24 ---代表整个网段内的所有地址 ---网络地址
192.168.1.0/24-192.168.1.255/24 ---256个地址
6.主机位全1的地址 192.168.1.255/24 ---代表本网段内的广播地址--只能作为目标地址去使用
VLSM:可变长子网掩码
思路:从主机位向网络位借位
192.168.1.0/24
192.168.1.0 000 0000/24---192.168.1.0/25
192.168.1.1 000 0000/24---192.168.1.128/25
CIDR:无类域间路由
思路:取相同,去不同
192.168.0.0/24
192.168.10./24
192.168.2.0/24
192.168.3.0/24
192.168.0000 0000.0
192.168.0000 0001.0
192.168.0000 0010.0
192.168.0000 0011.0
超网:192.168.0.0/22
172.16.0.0/24
172.16.1.0/24
172.16.2.0/24
172.16.3.0/24
子网汇总:172.16.0.0/22
CIDR是把几个标准网络合成一个大的网络
VLSM是把一个标准网络分成几个小型网络(子网)
CIDR是子网掩码往左边移了,VLSM是子网掩码往右边移了
DHCP服务:动态主机配置协议
DHCP Discover:广播
应用层 | DHCP Discover |
传输层 | UDP---源端口号68---目的端口号67 |
网络层 | IP---源IP地址0.0.0.0;目的IP地址255.255.255.255 |
数据链路层 | 以太网协议---源MAC地址:00-16-D3-23-68-8A 目的MAC:FFFF-FFFF-FFFF |
使用DHCP的好处:
1.减少管理员的工作量
2.避免了IP冲突(同一个网段可用的IP,0和255不能用,可用1-254)
3.提高了IP地址的利用率
4.方便客户端的配置
5.避免普通用户输入错误的可能(家里路由器上网,只需要自动获取IP即可联网)
缺点:如果在一个局域网内,有两个DHCP服务器,客户端获取时,谁优先回复,就从谁那里优先获取IP,无法控制,可能会影响真实网络连接
交换机的转发原理
交换机收到电信号后,将电信号转换为二进制之后,截取到数据帧。 查看数据帧的源MAC地址,之后将该地址和数据进入的接口的对应关系记录在本地的MAAC地址表中(时间为300s)。之后,看数据帧中的MAC地址,基于目标MAC地址查询本地MAC地址表,如果表中存在记录关系,则按照记录进行转发;若表中无记录关系,则将进行洪泛(交换机将数据从除了进入的接口外的所有接口发送一遍)
交换机洪泛的三种情况
1.遇到广播帧
2.遇到组播帧
3.遇到未知单播地址
DHCP Offer报文(该报文中存在一个可用的IP地址给DHCP客户端)
应用层 | DHCP OFFER(可用IP地址,网关,DNS,掩码) |
传输层 | UDP---源67;目标68 |
网络层 | IP协议---源IP:68.85.2.1---目的IP:68.85.2.101 |
数据链路层 | 以太网协议---源MAC:路由器;目的MAC:00-16-D3-23-68-8A |
DHCP Request报文
方式:广播
应用层 | DHCP Request |
传输层 | UDP---源端口:68;目标端口67 |
网络层 | IP协议---源IP:0.0.0.0;目标IP地址:255.255.255.255 |
数据链路层 | 以太网协议---源MAC:00-16-D3-23-68-8A 目标MAC:FFFF-FFFF-FFFF |
DHCP ack报文
方式:广播或者单播
应用层 | DHCP ACK |
传输层 | UDP 67 68 |
网络层 | IP -源IP:68.85.2.1---目的IP:68.85.2.101 |
数据链路层 | 以太网协议---源MAC:路由器;目的MAC:00-16-D3-23-68-8A |
DNS服务:域名解析协议
URL:资源定界符,它和域名有区别
协议+网站的域名信息+文件所在路径
目的:通过域名获取对应的IP地址
DNS端口号:53 基于TCP/UDP
DNS查询:
递归查询:当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。
迭代查询:当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,如图所示。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。
应用层 | DNS请求报文 |
传输层 | UDP 源端口:随机;目标端口:53 |
网络层 | IP 源IP:68.85.2.101 目的IP:68.87.71.226 |
数据链路层 | 以太网封装---源MAC:主机 目的MAC:网关设备 |
网络层 | ARP协议---源IP:68.85.2.101;目的IP:68.85.2.1 |
数据链路层 | 以太网协议---源MAC:主机;目的MAC:FFFF-FFFF-FFFF |
路由器的转发原理
原理:路由器将基于数据包中的目的IP地址查询本地路由表。若路由表中存在记录,则无条件按照记录转发;若没记录,则将直接丢弃该数据包
获取位置网段的信息
1、直连路由:路由器默认生成可用接口直连网段的路由条目
2、静态路由:由网络管理员手工配置
3、动态路由:所有路由器运行相同的路由协议,之后路由器之间彼此沟通,计算出未知网段的路由信息
直连路由的生成条件
1、接口双UP
物理层面UP:代表链路正常
协议层面UP:代表具备通讯协议
2、接口必须配置IP地址
第二天
HTTP:超文本传输协议
TCP 端口号80
超文本:包含有超链接link和多媒体元素标记的文本
TCP协议:是一种面向连接的可靠性传输协议
面向连接:数据在传输之前建立一条链路
可靠性
确认机制:传输确认,每接收一个数据段则需要进行一次确认
重传机制:保证可靠性的最优机制,当一个数据段中某一个包丢失,会提醒要求重新传输这个报文
排序机制:传输一个数据段,被分为多个报文,从不同路径传输,最终到达目的地的顺序会被打乱,所以需要进行重新排序,根据TCP数据包中的序号字段
流控机制:滑动窗口机制(调节窗口大小从而对流量进行控制)
MTU=1500字节(最大)
IP=20字节(最小)
TCP=20字节(最小)
MSS=MTU-TCP头部-IP头部(在TCP协议的选项字段)
PMTU:路径MTU发现协议
在IP报头中,有一个字段是DF,该字段表明了IP报文是否允许分片,PMTU功能开启后会将该字段设置为1,表示不能分片。此时,当需要进行分片时,发现该报文不能分片,设备会丢弃该报文,并向发送方发送一个ICMP报文(数据不可达),同时携带当前的设备接口的MTU值。发送方接收到该ICMP报文后,因为TCP重传机制,会重新发送一次数据,但是也会根据新的MTU值来产生新的报文进行传输。
TCP的面向连接
1.首先客户端向服务器发送一个 SYN 包,并等待服务器确认,其中:
标志位为 SYN,表示请求建立连接;
序号为 Seq = x(x 一般取随机数);
随后客户端进入 SYN-SENT 阶段。
2.服务器接收到客户端发来的 SYN 包后,对该包进行确认后结束 LISTEN 阶段,并返回一段 TCP 报文,其中:
标志位为 SYN 和 ACK,表示确认客户端的报文 Seq 序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接;
序号为 Seq = y;
确认号为 Ack = x + 1,表示收到客户端的序号 Seq 并将其值加 1 作为自己确认号 Ack 的值,随后服务器端进入 SYN-RECV 阶段。
3.客户端接收到发送的 SYN + ACK 包后,明确了从客户端到服务器的数据传输是正常的,从而结束 SYN-SENT 阶段。并返回最后一段报文。其中:
标志位为 ACK,表示确认收到服务器端同意连接的信号;
序号为 Seq = x + 1,表示收到服务器端的确认号 Ack,并将其值作为自己的序号值;
确认号为 Ack= y + 1,表示收到服务器端序号 seq,并将其值加 1 作为自己的确认号 Ack 的值。
随后客户端进入 ESTABLISHED。
当服务器端收到来自客户端确认收到服务器数据的报文后,得知从服务器到客户端的数据传输是正常的,从而结束 SYN-RECV 阶段,进入 ESTABLISHED 阶段,从而完成三次握手。
第一次挥手:
客户端向服务器发送一个 FIN 数据包(FIN = 1,seq = u)主动断开连接,报文中会指定一个序列号。
告诉服务器:我要跟你断开连接了,不会再给你发数据了;
客户端此时还是可以接收数据的,如果一直没有收到被动连接方的确认包,则可以重新发送这个包。
此时客户端处于 FIN_WAIT1 状态。
第二次挥手:
服务器收到 FIN 数据包之后,向客户端发送确认包(ACK = 1,ack = u + 1),把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了
这是服务器在告诉客户端:我知道你要断开了,但是我还有数据没有发送完,等发送完了所有的数据就进行第三次挥手
此时服务端处于 CLOSE_WAIT 状态,客户端处于 FIN_WAIT2 状态
第三次挥手:
服务器向客户端发送FIN 数据包(FIN=1,seq = w),且指定一个序列号,以及确认包(ACK = 1, ack = u + 1),用来停止向客户端发送数据
这个动作是告诉客户端:我的数据也发送完了,不再给你发数据了
此时服务端处于LAST_ACK状态,客户端处于TIME_WAIT状态
第四次挥手:
客户端收到 FIN数据包 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值
此时客户端处于 TIME_WAIT 状态。
需要过一了一定时间(2MSL)之后,客户端发送确认包(ACK = 1, ack = w + 1),此时客户端才会进入 CLOSED 状态,以确保发送方的ACK可以到达接收方,防止已失效连接请求报文段出现在此连接中。
至此,完成四次挥手。
MSL(最长报文段寿命):一个数据包在网络中所能传输的最大时间(2min)
应用层 | HTTP请求报文---请求方式:GET(用于请求一个网页信息) |
传输层 | TCP 源端口号:随机端口 ; 目的端口号:80 |
网络层 | IP协议--源IP:小明电脑 ; 目的IP:web服务器 |
数据链路层 | 以太网封装---MAC源:小明 ; 目的MAC:网关MAC |
GET:请求读取一个web页面
POST:附加一个命名资源(web页面)
PUT:请求存储一个web页面
应用层 | HTTP应答报文--应答状态码 200--OK |
传输层 | TCP协议--源端口号:80;目的端口号:请求方的随机数 |
网络层 | IP协议--源IP:web服务;目的IP:小明电脑 |
数据链路层 | 以太网封装--源MAC:web服务器;目的MAC:下一跳设备的MAC地址 |
1XX--100:通知信息
2XX--200:成功
3XX--300:重定向
4XX--403:客户错误
5XX--500:服务器错误(503)
静态路由
静态路由的优点:
1.选路合理(由网络管理员手工配置)
2.安全(动态路由协议的计算是需要路由器之间交互数据报文)
3.不需要额外占用设备资源
静态路由的缺点:
1.配置量大
2.无法基于拓扑结构的变化而自动收敛
静态路由基本配置
方法一:
举例:
标记R:该条路由项是由递归计算产生
方法二:
举例:
数据不通,原因在于此时的数据报文构造中,目的MAC地址被写为目的IP地址所对应的MAC地址。但是此时的路由器无法获取目的MAC地址(ARP无法跨广播域)
解决方法:在下一个路由器的入接口上开启ARP代理功能
举例:
代理ARP思路:当接收到ARP数据包后,路由器会查看本地路由表,若本地路由器中存在到达目的IP地址的路由,此时该路由器会冒充目的IP地址来回答ARP报文。
方法三:
举例:
注:该方法不需要进行递归操作
方法四:
举例:
注:需要提前铺垫好所有在路由递归查找过程汇总的所有路由项
静态路由的拓展配置
负载均衡
举例:
手工汇总(当路由器可以访问多个连续的子网时,若均通过相同的下一跳,则可以将这些网段进行汇总计算,直接写一条汇总网段的静态路由)
举例:
路由黑洞(在汇总中,如果包含网络中实际不存在的网段时,可能造成流量有去无回,浪费链路资源。在上述配置中,汇总过后,将出现192.168.0.0/24和192.168.3.0/24两条路由,这两条路由实际不存在,数据无法到达目的地,被下一跳设备丢弃,产生路由黑洞。)
提示:合理的划分和汇总,减少路由黑洞
缺省路由
举例:
注:缺省路由和路由黑洞相遇时,一定会产生环路
空接口路由
防环,在黑洞路由器上配置一条到达汇总网段指向空接口的路由
举例:
第三天
BFD
概念:双向转发检测,是一种全网统一的检测机制,用于快速检测,监控网络中链路或者IP路由的转发连通状况。
定义: 双向转发检测BFD (Bidirectional Forwarding Detection) 是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况
目的: 为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快 检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。
在现有网络中,有些链路通常通过硬件检测信号,如SDH告警,检测链路故障, 但并不是所有的介质都能够提供硬件检测
此时,应用就要依靠上层协议自身的hello报文机制来进行故障检测。 上层协议的检测时间都在1秒以上,这样的故障检测时间对某些应用来说是不能 容忍的。同时,在一些小型三成网络中,如果没有部署路由协议,则无法使用 路由协议的hello报文机制来检测故障。
BFD协议就是在这种背景下产生的,BFD提供了一个通用的标准化的介质无关和 协议无关的快速故障检测机制,具有以下优点 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。这些故障包括接 口、数据链路,甚至有可能是转发引擎本身
用单一的机制对任何介质、任何协议层进行实时监测
缺省状态下,BFD会话每隔1000ms发送一次报文,当连续三次报文均无响应后,则BFD会话状态断开,从而引起联动协议失效。
网络类型及数据链路层协议
网络类型是根据数据链路层所运行的协议及规则来划分
网络类型的分类
P2P:点到点
MA:多点接入网络
BMA:广播型多点接入网络
NBMA:非广播型多点接入网络
数据链路层协议
MA网络
以太网协议 特点:需要使用MAC地址对设备进行区分和标识
原因:(为什么以太网需要使用MAC地址进行物理寻址)
利用以太网协议建立起来的二层网络中可以包含多个接口,每个以太网接口之间都可以进行交互以太网数据帧,从而进行通讯,若不存在MAC地址,则无法找到对应的接收数据帧的设备。
以太网所属类型:BMA
以太网网络的构建方式:使用以太网线缆,连接设备的以太网接口,形成的网络称为以太网络,所运行的协议就是以太网协议
以太网的特色:可以提供极大的传输速率(频分技术)
P2P网络
定义:当一个网络中只能存在两台设备,并且不允许第三台设备加入,这样的网络称之为P2P网络
P2P网络的搭建:使用串口线缆连接设备的串口接口形成的网络
串口线:一种比较古老的线缆,早期主要使用的线缆之一
串口的标准:
E1:传输速率2.048M/bps
T1:传输速率1.544M/bps
HDLC
High-Level Data Link Control:高级数据链路控制协议
标准:满足工业标准的HDLC协议--ISO组织(IBM--SDLC:是一种面向比特的同步数据链路控制协议)
不满足工业标准的HDLC协议--各家厂商根据ISO标准的HDLC上进行修改得出
同步:以帧为单位传输数据
异步:以字节为单位传输数据
注意:标准的HDLC和非标准的HDLC彼此之间不兼容(思科,锐捷)
HDLC网络搭建
Address :写的unicast,代表没有填写内容,因为点到点网络实际上不需要IP地址就可以通讯,而配置IP地址的原因,仅仅是为了服务上层协议。
Control:原本为了做一些策略,但该字段在现今网络中没有备用到,使用0填充
Protocol:表示上层封装协议的类型,跟以太网协议中的类型字段相似
HDLC的接口地址借用
串行接口可以借用loopback接口的IP地址和对端建立连接
不写下一跳的原因在于
1.如果用下一跳方式书写,则需要递归路由
2.因为接口没有IP地址,故无法产生下一跳的直连路由
在最后需要在双方设备补充上对端设备的静态路由信息,保障数据可以进行查表转发
将环回接口IP地址配置为对端接口IP地址的同网段地址,且掩码为32
PPP协议(点到点协议)
优点:相较于HDLC,PPP协议具备良好的兼容性,统一标准协议(任何串行接口或串行线缆,只要能够支持全双工通讯,就可以支持PPP协议)
具有良好的可移植性---PPPoE
可以完成认证和授权
没有重传机制,开销小,速度快
PPP会话的搭建
ppp协议建立会话需要经历三个阶段
链路建立阶段---LCP协议
认证阶段---PPP认证(可选)
网络层协议协商阶段---NCP协商
Dead阶段:该阶段被称为物理层不可用阶段
当通讯双方的两端检测到物理链路激活,就会从dead阶段跃迁到establish阶段
Establish阶段:该阶段会进行LCP参数协商
在该阶段,当LCP参数协商成功后,会进入opened阶段,表示底层链路已经建立
Authenticate阶段:大多数情况下,链路两端的设备是需要经过认证阶段后才能进入到网络层协议协商阶段
ppp链路在缺省情况下,不要求进行认证
如果要求进行认证,则在链路建立阶段必须指定认证协议
认证方式是在双方链路建立阶段进行协商的
在network阶段:ppp链路进行NCP协商
通过NCP协商来选择和配置一个网络层协议并进行该网络层协议的参数协商
只有当相应的网络层协议协商成功后,该网络层协议才可能通过这条ppp链路进行发送
NCP协议成功后,ppp链路将保持通讯状态
若ppp运行过程中,物理链路断开,认证失败,定时器超时,手工关闭连接等操作斗湖导致链路进入terminate阶段
terminate阶段:链接关闭的阶段
若此时的所有链路资源均已被释放,则通讯双方都将回到初始态dead状态,直到双方重新建立ppp连接
LCP协议:链路控制协议
LCP协议主要用于完成PPP会话建立的第一阶段协商过程
NCP协议:网络控制协议
NCP协议是一系列协议的总称,完成PPP会话建立第三阶段时针对网络层协议进行协商,网络层所使用的协议不同,则对应的NCP协议不同
LCP报文类型
LCP具有三大报文类型
链路配置报文(重点)
链路终止报文
terminate-request:终止请求
terminate-ack:终止确认
链路维护报文
echo-request:回波请求
echo-reply:回波应答
LCP建立
1.MRU值 :在PPP数据帧中所允许携带的最大数据单元,单位字节,默认1500
2.认证方式:根据第二阶段认证来判断,若存在认证,则需要协商认证方式,若不存在认证,则不需要协商
3.魔术字:用来检测链路中是否存在环路,是由本地设备随机生成的字符串(设备序列号,硬件地址)