一.网络基础
1.有什么用?
1.1 打破地域上数据传输的限制;
1.2 提高数据传输效率。
2.是什么?
通过通信链路和协议将多台计算机或设备连接起来,实现资源共享和信息交换的系统。
信息传输,接收,共享的虚拟平台,把信息联系在一起,实现资源共享。
由若干节点和连接这些节点的链路组成。
3.信息传输前提
3.1 通过物理介质将计算机连接在一起;
3.2 通信过程中必须使用统一的通讯协议。
二.互联网通讯协议
国际标准:OSI七层(应、表、会、传、网、数、物)
写程序:OSI五层(应、传、网、数、物)---->应用层(包含表、会)
1.物理层
通过物理设备实现数据转成电信号传输。
设备:网线,光纤等。
封装结果:比特。
2.数据链路层
提供节点到节点(如主机到交换机)的可靠数据传输,处理物理地址(MAC地址),进行错误检测。
设备:交换机,网桥。
封装结果:帧。
注意:
1)电信号分组标准方式:
一组数据称为一个数据帧,数据帧分为head和data 两部分;
head:
源地址:MAC地址;(6字节)
目标地址:MAC地址;(6字节)
数据类型:(6字节)
data:存放网络层整体数据
2)一主机一网卡一MAC地址------>你真的懂唯一的定义吗?
3)以太网通信采用的是广播方式。
------>什么是广播?
一台设备(源地址)向网络中的所有其他设备同时发送(数据包),只有(目标地址)会接受执行,其他设备会丢弃。
3.网络层
负责逻辑寻址(如IP地址)和路径选择(路由),实现不同网络之间的通信。
设备:网关/路由
封装结果:包。
注意:
1)数据包分成head+data
head:发送者/源地址,接收者/目标地址,地址为IP地址;
data:存放传输层数据。
2)判断两台主机是否在同意广播域(IP地址划分)
IPV4地址=ip/子网掩码;
两个地址广播域一样,则处在同一区域。------>如何判断?(适用IPV4)
判断方法:对两个IP分别与子网掩码做按位与运算,结果相同则在同一子网。
示例:
计算机1与2通信,1必须拿到2的IP地址
1)处在同一局域网:
本地电脑根据数据包检查目标IP为本地局域网;
直接通过交换机广播MAC寻址,将数据包转发过去。
2)不同局域网:
本地根据数据包检查目标IP如果不为本地局域网,则尝试获取网关MAC;
本地封装数据转发给交换机,交换机拆解后发现目标是网关MAC,送往网关设备;
网关收到数据包后,拆解至第二层后发现请求目标是网关本机MAC;
网关继续拆解至三层,发现目标地址不为网关本机;
网关重新封装数据报,将源地址替换为网关的WAN地址,目标地址不变;
路由器根据自身路由表信息将数据包发出去,直至到目标网关。
4.传输层
提供端到端(进程到进程)的可靠或不可靠数据传输。
封装结果:段。
网络层:区分子网,数据链路层:找到主机,如何区分数据是哪个进程?
------>通过端口(应用程序与网卡关联的编号)范围(系统0-1023,其他:0-65535)
注意:
head:源端口,目标端口,协议(TCP/UDP);
data:应用层整体数据。
5.应用层
面向用户,提供网络服务接口。
常见协议:HTTP、HTTPS、FTP、SMTP、DNS、Telnet、SNMP。
6.封装与解封装
封装(Encapsulation),从应用层开始,在原始数据上添加该层的头部(有时还有尾部)信息。
接收端执行相反操作(解封装):从物理层开始,逐层剥离头部(和尾部),直到将原始数据交付给目标应用程序。

三.TCP协议
戳这里------>https://blog.csdn.net/Bert_Field/article/details/151899230?spm=1001.2014.3001.5501 <------
补充:
客户端需与服务段建立连接,服务段与客户端也需建立连接,双向通路是虚拟链路;
虚拟链路:由于每次通信都需拿到IP和端口号,每次都需查找,建立好虚拟通路,下次两台主机就可直传数据。
1.三次握手
由于建立连接时未传输数据,第二次确认和第三次请求可以合并为一次。

补充:
seq(序号)与ack(确认号):为了实现可靠传输,通信双方需确认发送的数据包对方收到,如果没收到,则重发。
2.四次挥手

看到这,你会不会问:为什么这次的第二步和第三步不能合并?(如果有天我们不在一起,你会不会问为什么?)
------>第二步服务端回复确认,但不是立马确认,因为数据可能没传输完。
3.转换状态
3.1三次握手

3.2四次挥手

注意:
当客户端收到服务段FIN包,理想状态下可直接关闭,但是但是:
网络是不稳定的,可能服务端发送的数据包比FIN包还晚到;
若客户端回复的ACK包丢失,服务段会一直处于LAST_ACK状态,若客户端没有关闭,服务段还会重传FIN包,客户端继续确认......
客户端如果ACK后立即关闭连接,会导致数据不完整、也可能造成服务器端无法释放连接。所以需等待2个报文生存最大时长,确保网络中没有任何遗留报文,再关闭连接;
------>补充:为什么是2个报文?
如果丢包存在,在1MSL时间内即可触发重传,而2MSL足矣(一次丢包概率是百分之一,连续两次万分之一)
3.3 UDP协议
依旧:(再回首恍然依旧......)
戳这里------>https://blog.csdn.net/Bert_Field/article/details/151899230?spm=1001.2014.3001.5501 <------
不需要先建立连接,仅需获取IP+port,发送完毕也无需服务器回复ACK
四.网卡绑定
1.有什么用?
1.1实现网络冗余,避免单点故障;
1.2实现负载均衡,提升网络传输能力
1.3两种模式
1)0:balance-rr负载轮询:两网卡(各100MB)可聚合为(200MB)。
2)1:active-backup高可用:两网卡若一条断线,另外线路自动顶替。
2.配置round-robin
2.1eth32网卡配置
[root@node ~]# cp ifcfg-ens32 ifcfg-ens32-bak
[root@node network-scripts]# nmcli con down ccd7892c-552b-4f64-bf95-0e0311315455 &&nmcli con up 152beb06-47c5-c5e8-95a9-385590654382

2.2eth33网卡配置

2.3bond网卡配置

[root@node network-scripts]# nmcli con reload
2.4bond状态检查


2.5网卡删除

[root@node ~]# nmcli con up ens32
3.配置active-backup
3.1eth0网卡配置

3.2eth1网卡配置

3.3bond网卡配置


------补充------bond获取MAC地址有两种方式:
1)从第一个活跃网卡获取MAC地址,其余网卡的MAC地址都使用该地址;
2)适用fail_over_mac参数,bond1适用当前活跃网卡的mac地址,地址随活跃网卡的转换而变。
fail_over_mac参数虚拟机必配,物理机可不配。
3.4状态检查

------拓展------修改配置文件两种方式:
1)nmcli con modify+nmcli con down &&nmcli con up(nmcli仅仅修改保存了配置,激活更改需重新连接)
2)vim+nmcli con reload +nmcli con down &&nmcli con up
3.5bond故障模拟
断开活跃网卡eth1,再次检查发现eth1变为活跃网卡。

尝试ping,一切正常

五.网关/路由
1.什么是路由?
数据包从源主机发送到目标主机过程中,选择最佳路径的过程。(LAN接口收包,转发到WAN接口)
例:你在公司(局域网)要寄快递(发数据)到外地(互联网),你不会自己送,而是交给前台(网关),前台再交给快递公司(路由器)。
你家的 Wi-Fi 路由器,一边连着你的手机/电脑(局域网),一边连着运营商的网络(广域网),它负责把你的上网请求“路由”到互联网。
2.有什么用?
确定最佳路径;
通过网络传输信息。
实现不同地域的主机互联互通。
3.有哪些种类?
3.1主机路由
指明到某台主机应该如何走;destination精确到某一台主机。
3.2网络路由
指明到某类网络应该如何走;destination精确到某一网段主机。
3.3默认路由
匹配不到主机路由和默认路由,走默认路由。
3.4永久路由
route添加的路由为临时,永久生效需在/etc/sysconfig/network-scripts目录下创建route-xxx的网卡名称,添加路由条目。
4.路由配置实践
一台Linux主机能被当成路由前提:
1)至少有两块网卡连接两个不同的桥段;
2)开启路由转发功能/proc/sys/net/ipv4/ip_forward;
3)在Linux主机添加网关指向该服务器。

4.1v1配置
4.1.1eth0配置

4.1.2eth1配置

------注意------1.1.1.1被占用,更换为1.1.1.10
4.1.3网关状态

4.2v2配置
4.2.1eth0配置

4.2.2eth1配置

4.2.3网关状态

4.3v3配置
4.1.1eth0配置

4.1.2eth1配置

4.1.3网关状态

4.4v4配置
4.1.1eth0配置

4.1.2eth1配置

4.1.3网关状态

4.5实践
1)1.1.1.10如何与2.2.2.2进行互通?
数据包只能送到1.1.1.2,而无法送达2.2.2.2,需要添加一条去往2.2.2.0/24网段的路由,从eth1接口发出。

2)1.1.1.10如何与2.2.2.3互通?
数据包只能至vmnet2交换机,将去往2.2.2.0/24网段的数据包交给1.1.1.2主机转发至2.2.2.3主机;v2上有去往2.2.2.0/24网段路由,开启转发。

[root@v2 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@v2 ~]# sysctl -p
[root@v3 ~]# route add -net 1.1.1.0/24 gw 2.2.2.2

3)1.1.1.10如何与3.3.3.3互通?
数据包只能至vmnet2交换机,在v1主机将去往3.3.3.0/24网段的数据包交给1.1.1.2,转发至3.3.3.3主机;
[root@v1 ~]# route add -net 3.3.3.0/24 gw 1.1.1.2
在v2添加至3.3.3.0/24网段的路由,开启转发功能,否则数据包无法转发会被丢弃;
[root@v2 ~]# route add -net 3.3.3.0/24 eth1
数据包至v3主机后,送回还需要在v3主机添加去往1.1.1.0/24网段的数据包由2.2.2.2主机转发。
------补充------
转发功能:核心作用是让该虚拟机能够作为路由器或网关,在不同网络之间转发数据包。本例中为了能在两个网络间传递流量,但两个网络不直接连通,v2充当中间虚拟机(路由)则需开启转发功能。
4)1.1.1.10如何与3.3.3.4互通?
数据包只能从vmnet2交换机至vmnet3,在v1主机上将去往3.3.3.0/24网段的数据交给1.1.1.2转发至3.3.3.4;
[root@v1 ~]# route add -net 3.3.3.0/24 gw 1.1.1.2
在v2开启转发功能,添加3.3.3.0/24网段的路由,由2.2.2.3转发至3.3.3.4;
[root@v2 ~]# route add -net 3.3.3.0/24 gw 2.2.2.3
在v3开启转发功能;
[root@v3 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@v3 ~]# sysctl -p
v4将数据包送回还需要在v4主机添加至1.1.1.0/24网段的数据包由3.3.3.3主机转发。

------最后的最后------如何与4.4.4.4互通?
[root@v2 ~]# route add -net 4.4.4.0/24 gw 2.2.2.3
[root@v3 ~]# route add -net 4.4.4.0/24 eth1
至此:1.1.1.10联通4.4.4.4。
所有路由如下:




5)如何优化?
以v1为例,除了第一个路由条目外,其他路由条目都需要由1.1.1.2转发,故配置默认路由。
1>恢复至最初路由;
2>配置默认路由
[root@v1 ~]# route add default gw 1.1.1.2

其他机器自行优化,祝你顺利。(实在配不出来文末附后续......^.^)------但建议自己个尝试!!!!
附录:
无法连接到官方镜像源
自 2024年6月30日起,CentOS 7 正式停止维护,官方镜像源已关闭,因此 mirrorlist.centos.org 不再提供服务。
1.备份原有repo文件

2.下载新的 CentOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
or
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3.清理缓存并重建

修改主机名:hostnamectl set-hostname xx +bash
接后续:
v2:

[root@v4 ~]# route add -net 2.2.2.0/24 gw 3.3.3.3
v3:

v4:


2226

被折叠的 条评论
为什么被折叠?



