一、TCP/IP模型及每层对应通信协议
1.1第一层-应用层
作用:服务及应用程序
HTTP --- 超文本传输协议--- 获取网页信息---80(TCP 80)
HTTPS --- HTTP + SSL(安全传输协议)/TLS ---443(TCP 443)
FTP --- 文件传输协议---TCP 20 21
Tftp --- 简单文件传输协议---UDP 69
Telnet --- 远程登陆协议--- TCP 23
SSH --- Telnet + SSL --- TCP 22
DHCP --- 动态主机配置协议---UDP 67 68
DNS --- 域名解析协议---TCP/UDP 5
1.1.1基于TCP的协议:HTTP\FTP\SMTP\TELNET\SSH
HTTP和HTTPS的区别:
HTTP | HTTPS | |
安全性 | 不安全 | 安全 |
默认端口 | 80 | 443 |
资源消耗 | 较少 | 较多 |
是否需要证书 | 不需要 | 需要 |
报文是否加密 | 明文 | 密文 |
1.1.1.1HTTP
定义:
HTTP 是一个无状态的协议。无状态是指客户机(Web 浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息
HTTP 遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有HTTP 连接都被构造成一套请求和应答。
如何理解HTTP协议是无状态的?
当浏览器第一次发送请求给服务器时,服务器响应了;如果同个浏览器发起第二次请求给服务器时,它还是会响应,但是呢,服务器不知道你就是刚才的那个浏览器。简言之,服务器不会去记住你是谁,所以是无状态协议
HTTP常用状态码及其含义:
1XX | 信息性状态码 |
2XX | 成功类状态码 |
3XX | 重定向状态码 |
4XX | 客户端错误状态码 |
5XX | 服务端错误状态码 |
HTTP常用的请求方式的区别和用途:
GET | 对服务资源获取的简单请求 |
POST | 用于发送包含用户提交数据的请求 |
PUT | 向服务提交数据,以修改数据 |
DELETE | 删除服务器上的某些资源 |
HEAD | 请求页面的首部获取资源的元信息 |
CONNECT | 预留给能够将连接改为管道方式的代理服务器 |
OPTIONS | 允许客户端查看服务器的性能 |
TRACE | 回显服务器收到的请求,主要用于测试或者诊断 |
PATCH | 对PUT方法的补充,对已知资源进行局部更新 |
HTTP缓存有哪些?
强制缓存:只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边
协商缓存:通过服务端告知客户端是否可以使用缓存的方式,协商缓存就是与服务端协商之后,通过协商结果来判断是否使用本地缓存。
HTTP/1.0,1.1,2.0的区别?
简化版区别:
HTTP/1.0:默认是短连接,可以强制开启,通过加入Connection: keep - alive
默认使用短连接,每次请求都需要建立一个TCP连接
HTTP/1.1:默认为长连接
最主要的改进就是引入了持久连接。所谓的持久连接即TCP连接默认不关闭,可以被多个请求复用
引入了管道机制(pipelining),即在同一个TCP连接里面,客户端可以同时发送多个请求。这样就进一步改进了HTTP协议的效率
HTTP/2.0:多路复用
多路复用:在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,做了Header压缩、服务端推送等优化
1.1.1.2HTTPS
定义:
什么是HTTPS?
HTTPS 是以安全为目标的HTTP 通道,它在HTTP 中加入SSL 层以提高数据传输的安全性。
HTTP 被用于在Web 浏览器和网站服务器之间传递信息,但以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP 不适合传输一些敏感信息,比如身份证号码、密码等。为了数据传输的安全, HTTPS 在HTTP 的基础上加入了SSL 协议,SSL 依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信进行数据加密,以保障数据传输的安全性,其端口一般是443 。
HTTPS的加密流程是怎样的?
1. 发起请求: 客户端在通过TCP 和服务器建立连接之后( 443 端口),发出一个请求证书的消息给服务器,在该请求消息里包含自己可实现的算法列表和其他需要的消息。
2. 证书返回:服务器端在收到消息后回应客户端并返回证书,在证书中包含服务器信息、域名、申请证书的公司、公钥、数据加密算法等。
3. 证书验证: 客户端在收到证书后,判断证书签发机构是否正确,并使用该签发机构的公钥确认签名是否有效, 客户端还会确保在证书中列出的域名就是它正在连接的域名。如果客户端确认证书有效,则生成对称密钥,并使用公钥将对称密钥加密。
4. 密钥交换: 客户端将加密后的对称密钥发送给服务器,服务器在接收到对称密钥后使用私钥解密
5. 数据传输: 经过上述步骤,客户端和服务器就完成了密钥对的交换, 在之后的数据传输过程中, 客户端和服务端就可以基于对称加密( 加密和解密使用相同密钥的加密算法)对数据加密后在网络上传输,保证了网络数据传输的安全性。
HTTPS一定安全可靠吗?
从协议本身来说,HTTPS协议目前是没有任何漏洞的,即使你成功进行中间人攻击,本质上是利用了客户端的漏洞(用户点击继续访问或者被恶意导入伪造的根证书),并不是 HTTPS 不够安全。
HTTPS解决了HTTP的哪些问题?
HTTP 由于是明文传输,所以安全上存在以下三个风险:
窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
冒充风险,比如冒充淘宝网站,用户钱容易没。
HTTPS 在 HTTP 与 TCP 层之间加入了SSL/TLS协议,可以很好的解决了上述的风险:
信息加密:交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。
校验机制:无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜索垃圾广告。
身份证书:证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。
混合加密的方式实现信息的机密性,解决了窃听的风险。 摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险。将服务器公钥放入到数字证书中,解决了冒充的风险。
1.1.2基于UDP的协议:DNS\TFTP\SNMP
DNS
DNS的作用
将域名解析为IP地址(正向解析)和IP地址解析为域名(反向解析)。
分层分布式数据库,包含根域名服务器、顶级域名服务器(TLD)、权威域名服务器。
DNS记录类型
A记录:域名到IPv4地址的映射。
AAAA记录:域名到IPv6地址的映射。
CNAME记录:域名别名(如 www.example.com 指向 example.com)。
MX记录:邮件服务器地址。
NS记录:指定域名由哪个DNS服务器解析。
TXT记录:文本记录(如SPF、DKIM验证)。
DNS解析过程
递归查询:客户端请求本地DNS服务器,服务器负责完成全部查询。
迭代查询:本地DNS服务器依次向根→TLD→权威服务器查询。
缓存机制:DNS服务器缓存解析结果(TTL控制缓存时间)。
DNS安全
DNS劫持:篡改DNS响应,引导用户到恶意地址。
DNSSEC:通过数字签名验证DNS数据的真实性。
DNS over HTTPS (DoH) 和 DNS over TLS (DoT):加密DNS查询。
常见面试问题
DNS递归查询和迭代查询的区别?
递归查询由本地DNS服务器完成所有查询步骤,返回最终结果;迭代查询由本地DNS服务器逐级向上查询,最终获取结果。
如何防止DNS污染?
使用可信的DNS服务器(如8.8.8.8)、启用DNSSEC、部署加密DNS(DoH/DoT)。
TTL的作用是什么?
控制DNS记录的缓存时间,减少查询次数,平衡权威服务器的负载。
1.2第二层-传输层
传输层导图:
传输介质:
作用:确认数据传输和错误处理
TCP:面向连接的可靠传输协议
UDP:面向无连接的不可靠传输协议
TCP | UDP | |
传输数据有序性 | 有序 | 无序 |
传输速度 | 慢 | 快 |
流量控制和拥塞控制 | 有 | 无 |
字节 | 20 | 8 |
报文格式 | 面向字节流 | 面向报文 |
使用场景 | 网页、邮件 | 语言广播 |
TCP 和 UDP 可以同时绑定相同的端口吗?
可以。
传输层的「端口号」的作用,是为了区分同一个主机上不同应用程序的数据包。
传输层有两个传输协议分别是 TCP 和 UDP,在内核中是两个完全独立的软件模块。
当主机收到数据包后,可以在 IP 包头的「协议号」字段知道该数据包是 TCP/UDP,所以可以根据这个信息确定送给哪个模块(TCP/UDP)处理,送给 TCP/UDP 模块的报文根据「端口号」确定送给哪个应用程序处理。
1.2.1TCP
1.2.1.1粘包和拆包
TCP是面向流,没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题
1.2.1.2产生粘包和拆包的原因
粘包:1.要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包;2.接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包;
拆包:1.要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包;2.待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。即TCP报文长度-TCP头部长度>MSS
1.2.1.3解决粘包拆包的方法
发送端将每个数据包封装为固定长度
在数据尾部增加特殊字符进行分割
将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且有一个字段声明内容体的大小
1.2.1.4TCP的流量控制
TCP三次握手之后,发送端和接收端进入到ESTABLISHED状态,它们即可以愉快地传输数据啦。
但是发送端不能疯狂地向接收端发送数据,因为接收端接收不过来的话,接收方只能把处理不过来的数据存在缓存区里。如果缓存区都满了,发送方还在疯狂发送数据的话,接收方只能把收到的数据包丢掉,这就浪费了网络资源啦
TCP 提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量,这就是流量控制
1.2.1.5TCP的拥塞控制
官方回答:TCP拥塞控制是(英语:Transmission Control Protocol,缩写TCP)避免网络拥塞的算法,是上主要的一个措施。它使用一套基于的多样化网络拥塞控制方法(包括慢启动和拥塞窗口等模式)来控制拥塞。
拥塞控制:控制的目的就是避免「发送方」的数据填满整个网络。
为了在「发送方」调节所要发送数据的量,定义了一个叫做「拥塞窗口」的概念
拥塞窗口 cwnd是发送方维护的一个的状态变量,它会根据网络的拥塞程度动态变化的。
拥塞窗口cwnd变化的规则:
1.只要网络中没有出现拥塞,cwnd就会增大;
2.但网络中出现了拥塞,cwnd就减少
其实只要「发送方」没有在规定时间内接收到 ACK 应答报文,也就是发生了超时重传,就会认为网络出现了拥塞
TCP拥塞控制的算法有哪些?
1. 慢启动 2. 拥塞避免 3. 拥塞发生 4. 快速恢复
1.2.1.6三次握手
(1)客户端发送syn给服务端,进入syn_send状态
(2)服务端收到syn报文,回应一个syn和ack报文,进入syn_recv状态
(3)客户端收到服务端的syn报文,回应一个ack报文,进入established状态
TCP第一次握手丢失了,会发生什么?
客户端会重传 SYN 报文,也就是第一次握手,最大重传次数由tcp_syn_retries内核参数决定;
TCP第二次握手丢失了,会发生什么?
服务端会重传 SYN-ACK 报文,也就是第二次握手,最大重传次数由tcp_synack_retries内核参数决定
TCP第三次握手丢失了,会发生什么?
第三次握手过程:客户端收到服务端的 SYN-ACK 报文后,就会给服务端回一个 ACK 报文,也就是第三次握手,此时客户端状态进入到ESTABLISH状态。
因为这个第三次握手的 ACK 是对第二次握手的 SYN 的确认报文,所以当第三次握手丢失了,如果服务端那一方迟迟收不到这个确认报文,就会触发超时重传机制,重传 SYN-ACK 报文,直到收到第三次握手,或者达到最大重传次数。
注意,ACK 报文是不会有重传的,当 ACK 丢失了,就由对方重传对应的报文。
为什么每次建立 TCP 连接时,初始化的序列号都要求不一样呢?
为了防止历史报文被下一个相同四元组(源地址、源端口、目的地址、目的端口)的连接接收(主要方面)
1.2.1.7四次挥手
(1)客户端调用断开连接的请求,向服务端发送一个终止标志位FIN=1的消息,表示客户端关闭链路前要发送的数据以及安全发送完毕,可以关闭链路,并且请求服务端确认关闭客户端到服务端的链路操作。客户端处于FIN-WAIT-1状态
(2)服务端收到fin消息后返回一个ACK=1的消息给客户端,表示接收到客户端断开连接的操作请求,这时服务器端通知高层应用释放客户端到服务端链路服务器处于close-wait状态,即半关闭状态。客户端收到消息后处于FIN-WAIT-2状态
(3)服务器端将关闭链路前需要发送给客户端的消息发送给客户端,在等待该数据发送完成之后,发送一个终止标志位FIN=1,ACK=1的消息给客户端,表示关闭链路前需要向客户端发送的消息已经发送完毕,请求客户端确认关闭从服务器到客户端的链路操作,此时服务器处于LAS下的ACK状态,等待客户端最终断开链路
(4)客户端在接受到最终fin消息后,发送一个ACK=1的消息给服务器端,表示接受到服务器端的断开连接请求并准备断开服务器到客户端的链路。此时客户端处于TIM-WAIT状态,TCP还没有释放,经过等待计时器
设置的时间后,客户端进入CLOSE状态
1.2.1.8关于TCP三次握手和挥手的争论
为什么要三次握手?两次行不行?四次呢
非官方解释三次握手
第一次握手:客户端发送网络包,服务端收到了。服务端得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。客户端得出结论:服务端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。服务端得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号
不使用「两次握手」和「四次握手」的原因:
「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。
为什么建立连接是三次握手,关闭连接确是四次挥手呢?
TCP 在建立连接时要进行三次握手,在断开连接时要进行四次挥手,这是由于TCP的半关闭造成的。因为TCP 连接是全双工的(即数据可在两个方向上同时传递),所以在进行关闭时对每个方向都要单独进行关闭,这种单方向的关闭叫作半关闭。在二方完成它的数据发送任务时,就发送一个FIN 来向另一方通告将要终止这个方向的连接
如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
为什么客户端最后还要等待2MSL?
MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。
保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器
防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文
1.2.1.9TCP状态
查看状态:netstat -napt
客户端 TCP 连接 TIME_WAIT 状态过多,会导致端口资源耗尽而无法建立新的连接吗?
要看客户端是否都是与同一个服务器(目标地址和目标端口一样)建立连接。
如果客户端都是与同一个服务器(目标地址和目标端口一样)建立连接,那么如果客户端 TIME_WAIT 状态的连接过多,当端口资源被耗尽,就无法与这个服务器再建立连接了。即使在这种状态下,还是可以与其他服务器建立连接的,只要客户端连接的服务器不是同一个,那么端口是重复使用的。
客户端的端口可以重复使用吗?
在客户端执行 connect 函数的时候,只要客户端连接的服务器 不是同一个,内核允许端口重复使用。
所以,如果客户端已使用端口 64992 与服务端 A 建立了连接,那么客户端要与服务端 B 建立连接,还是可以使用端口 64992 的,因为内核是通过四元组信息来定位一个 TCP 连接的,并不会因为客户端的端口号相同,而导致连接冲突的问题。
1.2.1.10关于TCP的面试题
拔掉网线后,原有的TCP连接还在吗?
TCP 连接在 Linux 内核中是一个名为struct socket的结构体,该结构体的内容包含 TCP 连接的状态等信息。当拔掉网线的时候,操作系统并不会变更该结构体的任何内容,所以 TCP 连接的状态也不会发生改变。
TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?
HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接;
TCP 的 Keepalive,是由 TCP 层(内核态) 实现的,称为 TCP 保活机制;
HTTPS TSL和TCP能同时握手吗?
HTTPS 是先进行 TCP 三次握手,再进行 TLSv1.2 四次握手
同时握手的前提:
客户端和服务端都开启了 TCP Fast Open 功能,且 TLS 版本是 1.3;
客户端和服务端已经完成过一次通信。
多个 TCP 服务进程可以绑定同一个端口吗?
如果两个 TCP 服务进程同时绑定的 IP 地址和端口都相同,那么执行 bind() 时候就会出错,错误是“Address already in use” 如果两个TCP服务进程绑定的IP地址不同,端口相同,则可以绑定(不包含0.0.0.0,可以代表任意地址)
1.2.2UDP
1.3第三层-网络层
作用:服务数据的传输、路由、地址选择
1.3.1IP(IPV4/IPV6)
1.3.1.1IPV4(详细内容见思维导图)
IP地址有哪些分类?
一般可以这么认为,IP地址=网络号+主机号。
1. 网络号:它标志主机所连接的网络地址表示属于互联网的哪一个网络。
2. 主机号:它标志主机地址表示其属于该网络中的哪一台主机
IP地址分为A,B,C,D,E五大类:
A类地址(1~126):以0开头,网络号占前8位,主机号占后面24位。
B类地址(128~191):以10开头,网络号占前16位,主机号占后面16位。
C类地址(192~223):以110开头,网络号占前24位,主机号占后面8位。
D类地址(224~239):以1110开头,保留位多播地址。
E类地址(240~255):以11110开头,保留位为将来使用
1.3.1.2IPV6(详细内容见思维导图)
采用128比特标识(地址空间巨大),精简报文格式,实现自动配置和重新编址,路由聚合,支持端对端的安全,支持更好的Qos,支持移动特性。
八组16进制数,每组4个16进制数
1.3.2ARP(详细内容见思维导图)
ARP 协议的工作过程?
ARP 协议协议,Address Resolution Protocol,地址解析协议,它是用于实现IP地址到MAC地址的映射
当源主机和目的主机要进行通信时
1. 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己的ARP列表,是否存在该IP地址对应的MAC地址;如果有,就直接将数据包发送到这个MAC地址;
2. 如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求的数据包里,包括源主机的IP地址、硬件地址、以及目的主机的IP地址;
3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同,就会忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败
1.3.3URL和URI的区别
URI和URL的区别?
URI,全称是Uniform Resource Identifier),中文翻译是统一资源标志符,主要作用是唯一标识一个资源。
URL,全称是Uniform Resource Location),中文翻译是统一资源定位符,主要作用是提供资源的路径
URI像是身份证,可以唯一标识一个人,而URL更像一个住址,可以通过URL找到这个人
1.3.4特殊ip地址+扩展IP地址
特殊IP地址
1,127.0.0.1-127.255.255.254 ---环回地址
2,255.255.255.255 ----受限广播地址---受路由器的限制---只能作为目标IP地址使用
3,主机位全1 ---192.168.1.X/24 ---192.168.1.255 ----直接广播地址---只能作为目标IP 使用 4,主机位全0 ---192.168.1.X/24 ---192.168.1.0 ---网段---网络号
5,0.0.0.0 ----1,代表没有地址;2,可以代表任意地址
6,169.254.0.0/16 ---自动私有地址/本地链路地址
VLSM ---可变长子网掩码---子网划分
CIDR---无类域间路由---汇总 “取相同,去不同”---二进制
拓展配置
1,负载均衡:当路由器到达同一个目标,具有多条开销相似的路径时,可以让流量进行拆分 后延多条路径同时传输,起到叠加带宽的效果。
2,环回接口---路由器的一个虚拟接口,一般用于虚拟实验,而不受设备的限制。 [r1]interface LoopBack ? LoopBack interface number [r1]interface LoopBack 0 [r1-LoopBack0] [r1]ping -a 192.168.1.1 192.168.3.1---指定源IP发送ping包
3,手工汇总---当路由器可以访问多个连续的子网时,若均通过相同的下一跳,可以将这些 网段进行汇总操作,之后,仅需编辑到达汇总网段的静态路由即可。以达成减少路由条目,提 高转发效率的目的。
4,路由黑洞---在汇总中,如果包含网络内实际不存在的网段时,可能造成流量的有去无 回,浪费链路资源。 192.168.0.0/22 192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24 合理的子网划分和汇总则可以减少路由黑洞的产生。
5,缺省路由---华为体系中也叫默认路由。一旦路由黑洞和缺省路由相遇,将100%出现路 由环路。 缺省路由就是一条不限定目标的路由条目。缺省路由一定是路由表中所有路由条目都无 法匹配时,才最后匹配。 [r1]ip route-static 0.0.0.0 0 12.0.0.2 第五天 2023年1月5日10:00 分区12.28HCIA-中心 的第1 页 [r1]ip route-static 0.0.0.0 0 12.0.0.2
6,空接口路由---用来解决缺省和黑洞相遇出环的问题。---在黑洞路由器上配置一条指向 汇总网段的空接口路由。 1,路由器的匹配原则---最长匹配原则(精准匹配原则)----数据包如果匹配到多条 路由条目,将按照掩码最长的来执行。 2,NULL0--- 空接口--- 虚拟接口--- 如果一条路由条目,出接口为空接口,则如果匹 配到这条路由条目,则将直接丢弃该数据包。 [r1]ip route-static 192.168.0.0 22 NULL 0
7,浮动静态路由---通过修改默认的优先级,实现静态路由的备份效果。 [r1]ip route-static 192.168.2.0 24 21.0.0.2 preference 61--- 手动修改静态路由的优先级 [r1]display ip routing-table protocol static --- 过滤静态路由 [r1-GigabitEthernet0/0/1]shutdown --- 手动关闭接口
1.4第四层-网络接口层
作用:定义物理网络连接的协议,Ethernet、FDDI、ATM等协议
二、OSI七层模型及每层对应通信协议
其通信协议与TCP/IP同
与之对比:
2.1第七层-应用层
定义:基于网络构建具体应用,例如FTP 文件上传下载服务、Telnet 服务、HTTP 服务、DNS 服务、SNMP 邮件服务等。报文
2.2第六层-表示层
定义:主要对接收的数据进行解释、加密、解密、压缩、解压缩等,即把计算机能够识别的内容转换成人能够识别的内容(图片、声音、文字等)。
2.3第五层-会话层
定义:在传输层的基础上建立连接和管理会话,具体包括登录验证、断点续传、数据粘包与分包等。在设备之间需要互相识别的可以是IP , 也可以是MAC 或者主机名。
2.4第四层-传输层(详情见思维导图)
定义:传输数据的协议和端口号,主要用于数据的分段、传输和重组。在这一层工作的协议有TCP 和UDP 等。TCP 是传输控制协议,传输效率低,可靠性强,用于传输对可靠性要求高、数据量大的数据,比如支付宝转账使用的就是 TCP; UDP 是用户数据报协议,与TCP 的特性恰恰相反,用于传输可靠性要求不高、数据量小的数据,例如抖音等视频服务就使用了UDP 。这一层的数据为段
2.5第三层-网络层
定义:主要负责将数据包从源地址路由到目的地址,实现了逻辑地址和物理地址之间的映射,以及路径的选择,流量控制和拥塞控制,这一层的数据为包
2.6第二层-数据链路层
定义:主要用于对数据包中的MAC 地址进行解析和封装。这一层的数据为帧。
2.7第一层-物理层
定义:主要定义物理设备标准,它的主要作用是传输比特流,具体做法是在发送端将1 、0 转化为电流强弱来进行传输,在到达目的地后再将电流强弱转化为l 、0 , 也就是我们常说的模数转换与数模转换,这一层的数据叫作比特。
三、路由器和交换机的工作原理配置以及华为体系下的小型网络的搭建
3.1路由基础
3.1.1数据转发
通过链路层交换机和网络层路由器进行数据转发
交换机(链路层) | mac地址表的数据转发 |
路由器(网络层) | ip路由表的数据转发 隔离广播域,局域网的网关,发现到达目的网络的最优路径,最终实现报文在不同网络间的转发 |
3.1.2自治系统
一个有权自主的决定在本系统中应该采用何种路由协议的小型单位(AS)
编号16bit:
1~64511 已注册编号范围
64512~65535 私有AS编号范围
AS --- 自治系统--- 由单一组织或机构所管理的一些IP网络及其设备所构成的集合。
为了方便对AS进行管理---AS号---16二进制构成---0 -65535(1 -65534)---现在也 有拓展版的AS号---32位二进制构成
AS的通信 AS内部--- IGP --- 内部网关协议 ---RIP,OSPF,IS-IS,EIGRP等 AS之间---EGP --- 外部网关协议---BGP
IGP还可以根据算法进行分类 距离矢量型协议(DV)---RIP ---贝尔曼.福特算法(Bellman-Ford)----直接传递路 由信息---“依据传闻的路由协议” 链路状态型协议(LS)---OSPF ---传递的是LSA信息(链路状态通告)---拓扑信 息--- SPF(最短路径优先算法)---图形结构---树形结构---树形结构不会出现环
3.1.3路由表
destination/mask 目的地址/子网掩码,标识目标网络
Protocol 协议,路由表中此条路由的来源
Preference 优先级,不同来源协议通过比较优先级来确定最佳选路
Flags D:Download to FIB,已将路由表信息下载到路由表接口的FIB
R:Relay,FIB是用于指导转发的,它的下一跳必须直接可达,
根据原始下一跳找到直接下一跳的过程就称为“路由迭代”
Cost 度量值,优先级相同的路由协议比较度量值来确定最佳路径
NextHop 下一跳,指明IP数据包所经过的下一跳路由器的接口地址
Interface 出接口,指明IP数据包将从该路由器的哪个接口转发出去
3.1.4路由表的建立
Direct 直连路由,链路层协议发现的路由(接口IP所在网段)优先级为0
Static 静态路由,管理员手工配置的路由,优先级为0
Dynamic routing 动态路由:
距离矢量算法(D-V,以跳数为度量单位)->RIP(优先级=100)
->BGP(优先级=255)
链路状态算法(L-S,以带宽为度量单位) ->OSPF(优先级=10)
->IS-IS(优先级=15)
3.1.5路由表的查询方法
display ip routing-table //查询设备路由表
display ip routing-table protocol ospf //查询来源为ospf的路由表
display ip routing-table 2.2.2.2 //查询目的地址为2.2.2.2的路由条目
3.1.6选路原则
1.最长匹配原则,子网掩码越长代表网络越精确
2.子网掩码长度相同时,优先级越小越优先
3.优先级相同时,默认优先级越小越优先
4.默认优先级相同,cost越小越优先
5.cost也相同,数据负载分担
3.2交换基础
3.2.1交换机工作原理
基于源mac地址的学习
基于目的mac地址的转发
3.2.2交换机的转发行为
1.对于广播数据帧(即目标mac地址为广播地址全f)和未知单播帧(在本地mac地址表没有记录的,目标地址为单播地址的数据帧):广播(除了源端口向外其它所有端口泛洪)
2.组播帧(即目标mac地址为组播地址的数据帧):(百度搜一搜吧)
3.已知单播帧:转发(基于mac地址表转发)
4.不完整的数据帧:丢弃
交换机的交换模式->Cut-Through:直通模式
->Store-and-Forward:存储转发
->Frag-free:帧自由,64字节为单位
3.2.3以太网端口技术
技术 | |
自协商技术 | 端口速率->10M 标准以太网 ->100M 快速以太网:FE ->1000M 千兆以太网:GE ->10000M 万兆以太网:XE 工作模式->half 半双工 ->full 全双工 |
自适应技术 | 无论交叉网线还是直连网线都可以进行通信 |
流量控制 | 防止在出现拥堵的情况下丢帧; 半双工方式下采用反压技术; 全双工方式下采用PAUSE帧。 |
3.2.4端口配置
在接口下
undo negotiation auto //关闭端口自协商功能
speed 100 //设置端口速率为100M
duplex full //设置端口为全双工工作模式
display this //查询接口配置
display this interface //查询当前接口详细信息(也可在普通模式下display interface g//
g0/0/1)
3.3小型网络搭建
3.3.1访问一个谷歌服务器的流程
注意:(访问浏览器时其核心步骤)
DHCP获取IP地址,通过dns服务器获取服务器IP地址,客户端与服务器建立连接,TCP三次握手建立连接,传输数据,四次挥手断开连接。
3.3.1.1主机需要一个IP地址才能上网(本场景中通过DHCP服务获取IP地址)
DHCP协议回顾
DHCP的8个报文:
DHCP租期更新:(DHCP request)
租期到达50%,如果客户端在线,会向服务器发起租约更新的请求。
租期到达87.5%,如果客户端在线,会向服务器发起租约更新的请求。
DHCP响应拒绝报文,这是服务器端对客户端的DHCP request报文的响应拒绝,比如:租期到期,客户端不在线。服务器端出现故障,导致其没法分配IP地址,则会给客户端发送一个DHCP NAK报文。服务器发
DHCP拒绝报文,当客户端发现服务器端分配给自己的IP地址发生冲突,会给服务器端发送一个DHCP decline报文。客户端发
DHCP地址释放(DHCP release):
如果客户端不再使用服务器分配的IP地址,也可以主动向DHCP服务器发送DHCP RELEASE(DHCP释放报文)报文,释放该IP地址。
DHCP通告报文,客户端已经获取到了IP地址,此时客户端会向服务发送一个DHCP inform报文,向服务器请求IP地址相应的掩码、网关、DNS服务器地址等信息
3.3.1.2要得到 www.goole.com的ip地址
采用DNS域名解析协议得到IP地址
1.DNS协议简介:
域名解析系统----用于域名和IP地址的相互解析,采用C/S模式,是一个具有树状层次结构的、联机分布式的数据库系统;
基于TCP/UDP协议的53号端口,绝大多数的 DNS 查询来说都会使用 UDP 数据报进行传输,TCP 协议只会在区域传输(它的作用就是在多个命名服务器之间快速迁移记录,由于查询返回的响应比较大,所以会使用 TCP 协议来传输数据包)的场景中使用
在浏览器的地址栏中输 www.goole.com( www.baidu.com)-----域名
2.DNS产生背景:
3.域名属性层次化结构
域名结构:顶级域名、二级域名、三级域名等等
域名的特点:不同等级的域名之间使用点号隔开,级别最高的写在左边,低的在右边;
域名的根域用'.'表示,以点号结尾的域名被称为完全合格域名(FQND)
根域:.
完全合格域名:www.sina.com.cn.
4.DNS域名解析的完整过程:
5.DNS域名解析的两种工作模式:
5.1递归查询(UDP)
客户端到本地DNS服务器之间的查询交互采用递归查询
5.2迭代查询(TCP)
DNS服务器会返回一个已知的其他DNS服务器,由请求者自行查询
一般本地DNS服务器到根域名DNS服务器之间的查询交互采用迭代查询
3.3.1.3客户端知道谷歌的ip地址后,会触发客户端与服务器建立TCP连接(TCP三次握手过程)
3.3.1.4建立连接后,客户端使用http协议发送数据包给服务器
客户端发送数据包给谷歌(百度)服务器,谷歌(百度)服务器收到数据包后将数据返回给客户端的浏览器,浏览器通过渲染,最终用户看到了网站上的主页信息。
HTTP协议(见上面有详述)简介:
超文本传输协议,一个典型的C/S架构的协议,HTTP协议传输层是基于TCP协议来进行工作的,使用的端口号是80端口
1.超文本(HyperText):是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
2.超文本传输协议HTTP:包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
3.3.1.5当所有数据都接受完毕后,取消连接(TCP的四次挥手)
3.3.2综合实验
(静态综合实验+动态综合实验+中级综合实验)
四、路由技术和交换技术
4.1路由技术
静态与动态协议的关系:
1,静态路由:由网络管理员手工填写的路由信息。
2,动态路由:所有路由器运行相同路由协议,之后,通过路由器之间的沟通,协商最终计算 生成路由条目。
静态路由: 优点: 1,选路由管理员选择,相对更好掌控; 2,不用占用额外的资源 3,更加安全
缺点: 1,配置量大 2,静态路由无法根据网络拓扑结构的变化而自动收敛
动态路由: 缺点: 1,通过单一算法计算出来的路径,可能会出现选路不佳的情况; 2,会占用额外的链路资源,硬件资源。 3,因为牵扯数据传递,所以可能出现安全问题
优点:1,配置简单 2,动态路由可以根据网络拓扑结构的变化而自动收敛
总结: 静态路由应用在规模较小的网络当中,动态路由可以应用在中大型网络中。
4.1.1静态协议
4.1.2OSPF
特点
优点:适用于大型网络
缺点:产生的更新量大
解决:1.区域划分-区域间传递路由,区域内传递拓扑
2.合理的IP地址规划-一个区域可以汇总成一个网段最佳
3.特殊区域
4.30miin周期更新
工作过程
基础配置
区域划分原则
不规则区域
扩展配置
FA转发原则
网络类型
选路规则
LSA
4.1.3BGP
4.1.4RIP
4.2交换技术
4.2.1VLAN
4.2.2STP(生成树)
4.2.2.1产生原因
网络存在冗余,从而产生环路,stp为了消除环路,阻断冗余链路端口,被阻塞端口不能收发数据,不会形成环路
二层环路的原因->广播风暴、MAC地址表振荡、重复数据帧
4.2.2.2计算过程
1.三步走
(1)在所有交换机选举根交换机:比较桥ID小的(桥ID由优先级(默认32768,步长4096)和MAC地址组成)
(2)在非根交换机选举一个根端口(RP):比较根路径开销(RPC)
链路速率:100Mbps\1000Mbps\10Gbps
(3)在每一个网段(冲突域)选举一个指定端口(DP):发送者桥ID
(4)阻塞非根非指定端口(预备端口AP)
2.四要素
(1)桥ID(RID)
(2)根路径开销(RPC)
(3)发送者的桥ID(BID)
(4)对端端口(PID)->优先级+端口号,小优(优先级0-240,默认128,必须是16的倍数)
(5)本端端口ID
4.2.2.3BPDU(桥协议数据单元)
用于传递STP协议相关报文
1.PID
默认0x0000(生成树)
2.PVI
生成树版本:STP、RSTP(快速生成树)、MSTP(多生成树-华为交换机默认)
3.Flags
最高位bit->TCA
最低为bit->TC
4.分类
(1)TCNBPDU:通告拓扑变更信息
(2)配置BPDU:计算生成树时发送
配置BPDU:传递stp配置信息
网桥通过配置BPDU,获取STP计算所需的参数
配置BPDU基于二层组播方式发送,目的地址:01-80-C2-00-00-00
配置BPDU只由根桥周期性发出,发送周期为Hello Time(2s)
注意区分:TC BPDU(根桥发出的拓扑变化信息,其他交换机收到后会将MAC地址表老化时间由300秒缩短到15秒);
TCN BPDU(非根交换机发的拓扑变化通知,用于报错使用) 两者是属于配置BPDU中不同的flag置位
5.构成
RID
RPC
BID
PID
HELLO TIME=2S(配置BPDU的发送周期)
FORWARD DELAY=15S(状态切换延迟)
MESSAGE AGE=经过交换机转发一次+1\MAX AGE=20S
max age:20s(判断链路故障的时间,10个hello time周期)
4.2.2.4端口状态
Disabled
禁用状态,被手动shutdown的端口。不发送配置BPDU,不进行MAC地址学习,不收发数据
Blocking
阻塞状态:不发送配置BPDU,不进行MAC地址学习,不收发数据。
Listening(15s)
监听状态,发送配置BPDU,不进行MAC地址学习,不收发数据,持续15秒。
Learning(15s)
学习状态,发送配置BPDU,进行MAC地址学习,不收发数据,持续15秒。
Forwarding
转发状态,发送配置BPDU,进行MAC地址学习,收发数据
从中间状态listening经过一个延迟进入另一个中间状态learning;
4.2.2.5拓扑变化
1.根桥故障
非根交换机等待max age时间收不到原有根桥的BPDU,重新计算生成树
2.直连端口故障
原阻塞端口变成根端口计算生成树需要两个转发延迟(30s)
3.非直连链路了故障
阻塞端口需要50s进入转发状态
MAXage+2*forddelay=20+15*2=50s
4.拓扑改变导致MAC地址表变化(TCNBPDU)
所有收到根桥发送的TC报文的接口mac地址表老化时间变为15s
4.2.2.6配置
stp enable
stp mode stp
stp pri 0 #=stp root primaer
stp root secondary #设置为备份根
stp pathcost-satndard{802.1d/802.1t/legacy(华为私有)}
stp cost 2000 #必须在端口模式下
dis stp
dis stp brief
4.2.2.7 缺点
拓扑变更不灵活,主机频繁上下线,网络会产生大量TCN,导致网卡;
收敛时间长:拓扑层次越多,收敛时间越长,一个端口从blocking到forwarding至少需要30秒;
故障切换时间太长;
4.2.3RSTP
4.2.4MSTP
五、链路冗余优化技术
六、实现内外网互通、流量控制以及路由选路相关技术
七、LINUX操作系统基础操作(文件、用户、权限、网络、shell管理)
八、LINUX中的文本三剑客的使用
九、MYSQL数据库的基本操作,增删改查和基本管理
(其余内容还在疯狂码字总结中~~~)