第一章、HCIA复习
一、OSI七层参考模型
- 应用层:为应用程序提供网络服务
- 表示层:定义数据格式,对数据进行压缩、解压缩、编/解码、加/解密
- 会话层:对通信双方的会话进行建立、维护、拆除;session id--区分同一程序的不同进程(应用分身)
- 传输层:建立端到端的连接(端口号--逻辑连接);提供分段(MSS--最大分段长度-1500字节)
- 网络层:通过IP寻址转发数据;数据分片(MTU--最大传输单元--1500字节);
- 数据链路层:通过MAC地址转发数据;封装成帧、差错检测、透明传输
- 物理层:传输光信号、电信号、比特流(三个都是二进制);定义一些物理参数,如电压、线缆、信号的传输模式。
端口号范围:0-65535;系统保留:0、65535,不能用
知名端口号:0-1023
动态端口号:1024-65534
常见端口号:
HTTP--80/8080--TCP
HTTPS--443--TCP
FTP--20/21--TCP
TFTP--69--UDP
DNS--53--TCP/UDP
SMTP--邮件的发送端--25--TCP
POP3--邮件的接收端--110--TCP
Telnet--23--TCP
DHCP--67(服务器端)/68(客户端)--UDP
IP地址和MAC地址转发数据的最主要的区别:
IP地址转发是范围转发,MAC地址转发是精确转发
信号的三种传输方式:
单工:通信的一方只具备收/发其中一个功能——收音机
半双工:通信的双方不能同时具备收/发功能——对讲机
全双工:通信的双方同时具备收发功能——手机,电话
二、封装和解分装
封装:在原始数据的基础上加一些额外信息形成新的格式
解封装:拆掉封装的额外信息,还原成原始数据
1.过程
数据发送时,从上到下逐层封装;
数据接收时,从下到上逐层解封装;
只有拆除外层封装,才能看到内层原始数据;
2.TCP/IP参考模型
常问到的是对等模型
3.TCP/IP的跨层分装
3.1、目的
提高封装和解分装速度,提高传输效率。
3.2、应用
3.2.1、跨四层封装-跳过传输层
特点:直连的路由设备之间
典型代表:OSPF协议(89),ICMP(1)
分片代替分段的功能,protocol代替端口号的功能
Procotol范围:0-255,其中TCP---6 UDP----17;其他的协议号用来标定跨层封装协议,例如OSPF是89,ICMP是1。
3.2.2、跨三四层封装--跳过传输层和网络层
- 特点:直连的交换设备之间
- 典型代表:STP协议
类型--标识上层协议
LLC:逻辑链路控制子层:为传输提供可靠的保障,减少帧的丢失、重复、失序,负责分片和提供帧类型号
MAC:媒体介入控制子层:负责识别网络层的协议,封装成帧,差错检测,透明传输的功能
三、访问一个谷歌(百度)服务器的流程
3.1、DHCP工作过程
首先,PC会广播发送DHCP discover报文,Server在接收到这个广播包以后,先会选择一个未分配 的IP地址,然后(单播或广播)发送一个DHCP offer报文,该报文携带了网络参数给PC。
华为体系中,所有的网络设备均使用单播,linux使用广播,windows两者均可。
若网络中存在多个DHCP服务器,又因为discover报文是广播发送,故所有的DHCP服务器均会回复 offer报文给PC端。此时,PC仅对接收到的第一个offer报文进行回复,其余均丢弃。
PC再一次使用广播发送request报文向server请求offer报文中携带的网络参数。
request报文有两重意义;1、向选择的服务端请求网络参数;2、告诉其余服务器,已经有了 选择。
服务器接收到request报文后,若目的为本地,则发送ACK报文回复;若目的不为本地,则丢弃报 文。
当存在两台PC同时请求地址,结果服务器给出的地址是同一个,这也就会导致后一个发送 request报文的PC无法获取地址。
PC接收到ack报文后,可以使用该IP地址,但是同时PC会发送三次免费ARP来检测网络中是否有其 他主机使用该IP地址。
如果网络中存在该IP地址,则PC向Server发送DHCP decline报文来通知服务器该IP冲突,并 重新发送一个DHCP discover重新申请IP地址。
如果网络中不存在该IP地址,则直接使用该IP内容。
如果PC需要释放IP地址,则发送DHCP release报文给服务端。
交换机工作原理
1、自学习:基于收到的数据帧中的源MAC地址以及该接口编号,动态生成MAC地址表项,并记录在MAC地址表中。老化时间300S
2、查表:基于数据帧中的目的MAC地址,再MAC地址表中查找对应记录关系,若存在记录关系,则直接单播转发;若不存在,则进行洪泛操作(交换机将数据从除了进入的接口外的所有接口发送一遍数据)。交换机的洪泛情况:
1、遇到未知单播数据帧
2、遇到广播帧或组播帧时--->01-00-5e-xx-xx-xx
最长掩码匹配原则
匹配不上的话,如果表里有缺省,就按缺省转发,没有的话就丢弃。
路由器转发原理:
路由器收到一个数据包,会根据路由器中的IP地址进行查表转发,此时会根据最长掩码匹配规则遍历整个路由表,如果有发现对应的路由条目就转发,如果没有则看是否有缺省路由条目,存在则转发,反之则丢弃。
数据链路层封装:以太网协议
3.2、DNS介绍
(2)产生背景:
通过IP地址访问目标主机,不便于记忆。
通过容易记忆的域名来标识主机位置。
(3)域名的属性层次化结构
(4)DNS工作过程
过程分析
第一步:在浏览器中输入www . google .com 域名,本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的 IP 地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过 TTL 属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的 IP 有变化,会导致被客户端缓存的域名无法解析到变化后的 IP 地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名
第二步:如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的 DNS 解析结果。其实操作系统也有一个[域名解析]的过程,在 Linux 中可以通过 / etc/hosts 文件来设置,而在 windows 中可以通过配置 C:\Windows\System32\drivers\etc\hosts 文件来设置,用户可以将任何域名解析到任何能够访问的 IP 地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地 DNS 解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的 IP 地址上,导致这些域名被劫持
第三步:前两步是在本地电脑上完成的,若无法解析时,就要用到我们网络配置中的 "DNS 服务器地址" 了。操作系统会把这个域名发送给这个本地 DNS 服务器。每个完整的内网通常都会配置本地 DNS 服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地 DNS 服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约 80% 的域名解析到这里就结束了,后续的 DNS 迭代和递归也是由本地 DNS 服务器负责
第四步:如果本地 DNS 服务器仍然没有命中,就直接到根 DNS 服务器请求解析
第五步:根 DNS 服务器返回给本地 DNS 域名服务器一个顶级 DNS 服务器地址,它是国际顶级域名服务器,如. com、.cn、.org 等,全球只有 13 台左右
第六步:本地 DNS 服务器再向上一步获得的顶级 DNS 服务器发送解析请求
第七步:接受请求的顶级 DNS 服务器查找并返回此域名对应的 Name Server 域名服务器的地址,这个 Name Server 服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。 比如我要访问 www.baidu.com,而这个域名是从 A 公司注册获得的,那么 A 公司上的服务器就会有 www.baidu.com 的相关信息
第八步:返回该域名对应的 IP 和 TTL 值,本地 DNS 服务器会缓存这个域名和 IP 的对应关系,缓存时间由 TTL 值控制
第九步:Name Server 服务器收到查询请求后再其数据库中进行查询,找到映射关系后将其IP地址返回给本地DNS服务器
第十步:本地DNS服务器把解析的结果返回给本地电脑,本地电脑根据 TTL 值缓存在本地系统缓存中,域名解析过程结束在实际的 DNS 解析过程中,可能还不止这 10 步,如 Name Server 可能有很多级,或者有一个 GTM 来负载均衡控制,这都有可能会影响域名解析过程
3.3、TCP连接
3.4、数据传输
POST:提交表单
HTTP和HTTPS的比较
HTTPS在HTTP和TCP层之间加入了TLS协议
过程:
1.客户端和服务端进行三次握手,成功以后进行TLS握手。
2.客户端发送ClientHello报文,其中包含TLS版本号、客户端随机数C、密码套件(RSA)。服务端在收到后会回复一个ServerHello报文,其中包含TLS版本号、服务端随机数S、密码套件。然后再发送CA证书Cercificate以及ServerKeyExchange报文。
客户端证书验证流程:客户端在收到服务端的证书后,其中的包含了未被处理的原始信息和被Hash算法处理过又被CA私钥加密的信息。客户端用CA公钥解密后得到HASH值(H1),又将原始信息通过Hash算法计算得到H2,将H1和H2比较,一样则认为证书可靠,验证完成。
3.此时客户端会生成一个预加密密钥pre-master,再用服务端公钥D加密pre-master传送给服务端。
4.服务端用自己的私钥解密得到pre-master
5.双方利用客户端随机数C+服务端随机数S+pre-master得到会话密钥M。
6.之后双方改用密钥M进行加密通信与数据传输。
3.5、断开连接
四、TCP连接的扩展
TCP是一种面向连接可靠性协议。
点到点(point to point):在TCP的通讯中,永远只有通讯双方,而不存在第三方。
4.1、TCP的报文结构
TCP连接的“四元组”:源IP地址,源端口,目标IP地址,目标端口。
可以唯一标识一条TCP连接。
4.2、TCP的异常连接
主机就会给发送源发一个TCP报文段,将其中的RST标记位置1。用来中断这次连接。
(一般发送到一个无效的TCP连接时,都会使用RST报文段来终止)。
4.3、TCP的可靠性传输机制---连接确认机制,重传,流控、校验和
4.3.1、连接确认机制
做法:TCP协议保证对方能够收到本端发送的数据段,就是让对方回复一个确认报文段,
这个确认报文段其最主要的标志就是TCP头部中的一个标记位ACK将置1,同时激活了确认序列号。确认序列号的做法
4.3.2、重传机制
超时重传
(1)RTT(Round-Trip Time)往返时间----衡量超时重传的参数
RTT往返时间 --- 指的是发出端将数据发出后,直到接收到对端反馈的确认报文
(2)RTO(Retransmission Timeout 超时重传时间)
RTO是一个动态变化的值
超时间隔加倍原因:在网络环境拥塞时,如果还是不停的去重传报文段,只会使拥塞加重。所以,TCP采用了这种超时间隔加倍的方式,来缓解这一点。
快速重传机制
超时重传的问题就是这个超时间隔会越来越长,这样超长时间的重传间隔,会加重端到端之间的时延。在TCP中,发送方可以通过接收方的反馈,在超时时间到达前,意识到数据包丢失的现象,并进行重传。
失序报文:接受方在收到一个数据段中的序列号大于自己期望的序列号,这就说明自己期望的报文可能在茫茫网海中丢失了。
冗余ACK(Duplicate ACK):服务器将会通过再次发送携带确认序列号未丢失报文序号的确认报文,并且连续发送三次。(如上图所示)TCP就是通过这种方式来告知对端,这个报文已经丢失了,期待对方重传。
4.3.3、流控机制
目的:为了防止发送方发送流量过大,导致接收方缓存区溢出的问题
(1)滑动窗口
(2)小窗口处理
零窗口:如果接收方的缓冲区已满,会将窗口大小设置为0,发送方暂停发送数据,直到接收方通知新的窗口大小。
接收方:窗口通告的最小值。这个最小值通常选择MSS或者1/2缓存空间这两个值中较小者。当窗口值小于其二者较小者的值时,将通告窗口值为0。
发送方:而发送方一般的策略是启用延时处理,只有在满足以下两个条件中任意一个时,才会发送数据,否则,将一直囤积数据,直到满足任一条件为止。
条件一:要等到窗口大小 >= MSS 并且 数据大小 >= MSS;
五、TCP的拥塞控制
1、目的:
TCP会观察网络的拥堵情况,如果网络拥塞严重的话,则将降低发送量,以缓解网络塞情况
2、TCP拥塞判断
3、TCP拥塞控制方法:
(1)拥塞窗口:
除了接收方的窗口大小,发送方还会维护一个拥塞窗口,用于控制网络拥塞情况下的数据发送速率。网络没有拥塞,拥塞窗口值大些, 反之,拥塞窗口值小些。
拥塞窗口大小:动态调整,拥塞窗口大小可达1---几百个MSS,受到拥塞窗口和接收窗口共同影响,取两者最小值,一般最小是1个MSS
(2)拥塞控制方法及过程
慢启动算法:在连接刚建立时,拥塞窗口的大小通常初始化为1个MSS,在慢启动阶段,每收到一个应答确认,拥塞窗口大小就会增加a的n次方个MSS,因此拥塞窗口大小呈指数增长。
慢启动门限(ssthresh):为了防止拥塞窗口增长过大造成网络拥塞
拥塞窗口 = ssthresh,既可以使用慢启动算法,也可以使用拥塞避免算法。
拥塞避免算法:当拥塞窗口大小达到慢启动阈值时,TCP进入拥塞避免阶段。在这个阶段,每收到一个ACK确认,拥塞窗口大小增加1个cwnd,因此拥塞窗口大小呈线性增长。
快速恢复:在快速重传之后,TCP进入快速恢复阶段,拥塞窗口大小减半,并继续发送数据
第二章、网络类型及数据链路层协议
一、网络类型的分类(4种)
出现原因:对于不同的二层链路类型的网段,OSPF会生成不同的网络类型
1、多点接入网络(MA)------一条网段内上出现多个设备
广泛应用在运营商的接入网中,可以用一根线连接多个宽带用户,并且每个用户之间是隔离的,互不影响,节省运营商成本
注:不同网络类型实际为不同的数据链路层技术,由于二层同时作为了物理层的大脑,故当使用不同数据链路层技术,也将调用不同的物理层设备。
2、P2MP(点到多点网络)point-to-Multipoint
点到多点网络,由其他网络类型手动更改:例如在ospf接口下:ospf network-type 网络类型模拟组播发送协议报文(帧中继建子接口模拟组播发报文),需要手动指定邻居;
我理解的P2MP网络:在NBMA网络上加上子接口使其可以广播或组播发送报文。
3、点到点网络(P2P)point-to-point
点到点网络的搭建:使用串线连接设备的串线接口(serial),形成一个P2P网络
二、数据链路层协议
1、MA网络:
(1)以太网协议
定义:以太网不是一个网络,而是一个协议,传输标准EthernetII 类型帧的网络
特征:多路访问,广播式的网络,需要使用MAC地址对设备进行区分和标识
所属类型:可细分至BMA----因为其支持多点接入和广播行为
构建方法:使用以太网线连接设备的以太网接口,形成的网络是以太网络,所运行的二层协议就是以太网协议
以太网特色:可以提供极大的传输速率---频分技术:一根铜丝上其实可以同时发送不同频段的电波而互不干扰,实现数据的并行发送,起到叠加带宽的效果。
2、P2P网络:
(1)HDLC协议,High-Level Data Link Control--高级数据链路控制协议,
标准HDLC:ISO组织根据SDLC(面向比特的同步数据链路控制协议)发展改进而来
非标准HDLC:各个厂家在ISO标准的HDLC上再进行修改而成
注:思科设备默认采用的串线协议是HDLC,华为设备默认采用PPP协议
[r1-serial4/0/0]link-protocol hdlc
[r1]display interface serial 4/0/0
(2)PPP协议,point to point protocol--点到点协议
PPP基本概念:
1、ppp协议,公有协议,所有厂商兼容,支持同步和异步线路;
同步、异步本质区别:所有电路是否在同一时钟沿下同步地处理数据。
[Huawei-Serial4/0/0]remote address 12.0.0.2 -----配置在主动给对端分配地址的设备上
[Huawei-Serial4/0/0]ip address ppp-negotiate ----配置在需要主动获取IP地址的设备上
ppp数据帧封装结构:
address:固定长度8位,固定取值:0XFF---目标MAC地址
protocol:协议字段,表明其信息部分所采用的协议类型(LCP/NCP)
ppp协议的组成:
LCP:链路控制协议--主要是完成ppp会话建立第一阶段的协商
NCP:网络控制协议:完成ppp会话建立的第三阶段,针对网络层协议进行协商,IP地址协商。
ppp工作过程:
- 链路建立阶段--LCP建立:通过相互发送LCP协议数据包来商议,如:MTU、是否需要认证,以及使用什么方法认证、链路通信模式、接口速率
- 认证阶段--ppp认证(可选项)
- 网络层协议协商阶段--NCP协商---IP地址协商
ppp会话流程:
PPP验证:
ppp配置命令总结
[R2-aaa]local-user wangdaye password cipher wdy12345
[R2-aaa]local-user wangdaye service-type ppp
[R2-Serial3/0/0]ppp authentication-mode chap/pap //设置验证类型
[R2-Serial3/0/0]link-protocol ppp //设置接口报文的封装模式
[R1-Serial3/0/0]ppp chap user wangdaye
[R1-Serial3/0/0]ppp chap password cipher wdy12345
[R1-Serial3/0/0]ppp pap local-user wangdaye password cipher wdy12345
ppp mp简介:
MP(multilink ppp),将多个ppp链路捆绑后,当做一条链路使用;