Linux网络管理技术,OSI七层模型和TCP/IP四层模型

OSI七层模型和TCP/IP四层模型

在这里插入图片描述
OSI七层模型:OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
TCP/IP四层模型:TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。
分层作用:方便管理
在这里插入图片描述
七层模型优点:
1、把复杂的网络划分成为更容易管理的层(将整个庞大而复杂的问题划分为若干个容易处理的小问题)
2、没有一个厂家能完整的提供整套解决方案和所有的设备,协议.
3、独立完成各自该做的任务,互不影响,分工明确,上层不关心下层具体细节,分层同样有益于网络排错
功能与代表设备

在这里插入图片描述
为什么现代网络通信过程中用TCP/IP四层模型,而不是用OSI七层模型呢?
OSI七层模型是理论模型,一般用于理论研究,他的分层有些冗余,实际应用,选择TCP/IP的四层模型。而且 OSI 自身也有缺陷,大多数人都认为 OSI 模型的层次数量与内容可能是最佳的选择,其实并非如此,其中会话层和表示层几乎是空的,而数据链路层和网络层包含内容太多,有很多的子层插入,每个子层都有不同的功能。

常见网络相关的协议
ARP(Address Resolution Protocol):地址解析协议,将IP解析成MAC地址

DNS:域名解析协议 www.baidu.com

SNMP(Simple Network Management Protocol)网络管理协议

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,它是在TCP/IP网络上使客户机获得配置信息的协议

FTP(File Transfer Protocol)文件传输协议,它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。

HTTP(Hypertext Transfer Protocol ):超文本传输协议

HTTPS(Secure Hypertext Transfer Protocol):安全超文本传输协议,它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作.

ICMP(Internet Control Message Protocol):Internet控制信息协议,互联网控制报文协议

ping ip定义消息类型有:TTL超时、地址的请求与应答、信息的请求与应答、目的地不可到达

SMTP(Simple Mail Transfer Protocol):简单邮件传送协议

TELNET Protocol:虚拟终端协议

TFTP(Trivial File Transfer Protocol):小文件传输协议

UDP(User Datagram Protocol):用户数据报协议,它是定义用来在互连网络环境中提供包交换的计算机通信的协议

TCP(Transmission Control Protocol): 传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议 log转发:开启一个协议:tcp(三次握手和四次挥手)

TCP协议和UDP协议的区别
(1)TCP协议:TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立可靠的连接。
(2)UDP协议:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。所以传输速度可更快
4.TCP保证数据正确性,UDP可能丢包;TCP保证数据顺序,UDP不保证。
场景: 视频,语音通讯使用udp,或网络环境很好,比如局域网中通讯可以使用udp。 udp数据传输完整性,可以通过应用层的软件来校对就可以了。
tcp传文件,数据完整性要求高。

TCP和UDP 常用端口号名称
在这里插入图片描述
如果你不知道哪个端口对应哪个服务怎么办?如873端口是哪个服务的?

[root@localhost ~]#netstat -nultp

可以查看所有的服务端口

IP地址分类
IP地址分5类,常见的地址是A、B、C 三类
A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回口用的。因此A类地址的可用的范围其实是从1-126之间。以子网掩码:255.0.0.0.

B类地址:范围从128-191,如172.168.1.1,以子网掩码来进行区别:255.255.0.0

C类地址:范围从192-223,以子网掩码来进行区别: 255.255.255.0

D类地址:范围从224-239,被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

在这里插入图片描述
E类地址:范围从240-254,为将来使用保留。

ABC 3类中私有IP地址范围:
A:10.0.0.0–10.255.255.255 /8
B: 172.16.0.0–172.31.255.255 /16
C: 192.168.0.0–192.168.255.255 /24

ping 127.0.0.1 可以ping通。ping 127.23.23.23 可以ping通吗?
结论:这个127这个网段都用于环回口
在这里插入图片描述
linux网络相关的调试命令
查看网卡物理连接是否正常

 [root@localhost ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

查看IP相关信息

[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.100.56  netmask 255.255.255.0  broadcast 10.10.100.255
        inet6 fe80::e74e:897c:a98f:843b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1d:aa:01  txqueuelen 1000  (Ethernet)
        RX packets 527767  bytes 35203932 (33.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9698  bytes 1035200 (1010.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 185  bytes 18738 (18.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 185  bytes 18738 (18.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

常见的一些网络接口
eth0 … eth4 … 以太网接口(linux6)
waln0 无线接口
eno177776 以太网接口 (linux7)
ens33 以太网接口(linux7)
bond0 team0 网卡绑定接口
virbr0 虚拟交换机桥接接口
br0 虚拟网桥接口
lo 本地回环接口
vnet0 KVM虚拟机网卡接口

修改网卡IP地址
手工修改网卡配置文件
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet #设置类型是以太网设备,如图:
在这里插入图片描述
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none # 参数:static静态IP 或dhcp 或none无(不指定),如是none,配上IP地址和static效果一样
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 #网卡名字
UUID=c713acec-674b-411d-9e61-646482a292ca #网卡UUID,全球唯一
DEVICE=ens33 #设备名字,在内核中识别的名字
ONBOOT=yes #启用该设备,如果no,表示不启动此网络设备
IPADDR=10.10.100.56 #IP地址
PREFIX=24 #子网掩码,24相当于255.255.255.0
GATEWAY=10.10.100.1 #默认网关
DNS1=114.114.114.114 #首选DNS地址
DNS2=8.8.8.8 #备用DNS地址
IPV6_PRIVACY=no
PEERDNS=no

给虚拟机再添加一个网卡,并手动成生网卡配置文件

[root@localhost ~]# init 0   #关机

在这里插入图片描述
新加的网卡,也使用桥接模式。

[root@localhost ~]#systemctl restart NetworkManager  
[root@localhost ~]#service  network restart   #重启网络服务生效

查看端口的监听状态
netstat 命令: 查看系统中网络连接状态信息,
常用的参数格式 : netstat -anutp
-a, --all 显示本机所有连接和监听的端口
-n, --numeric don’t resolve names 以数字形式显示当前建立的有效连接和端口
-u 显示udp协议连接
-t 显示tcp协议连接
-p, --programs 显示连接对应的PID与程序名
在这里插入图片描述
Proto=连接协议的种类
Recv-Q
接收到字节数
Send-Q
从本服务器,发出去的字节数
Local Address
本地的IP地址,可以是IP,也可以是主机名
Foreign Address
==远程主机的IP 地址
网络连接状态STATE:
CLOSED : 初始(无连接)状态。
LISTEN : 侦听状态,等待远程机器的连接请求。
ESTABLISHED: 完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
TIME_WAIT : 在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
扩展:MSL
MSL,即Maximum Segment Lifetime,一个数据分片(报文)在网络中能够生存的最长时间,在RFC 793中定义MSL通常为2分钟,即超过两分钟即认为这个报文已经在网络中被丢弃了。对于一个TCP连接,在双方进入TIME_WAIT后,通常会等待2倍MSL时间后,再关闭掉连接,作用是为了防止由于FIN报文丢包,对端重发导致与后续的TCP连接请求产生顺序混乱

服务器上有大量TIME_WAI连接,如何优化TCP连接,快速释放tcp连接 ?

[root@localhost ~]# netstat  -antup | grep   TIME_WAI 

linux下默认MSL等待时间是60秒
[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
[root@localhost ~]# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout #通过缩短时间time_wait时间来快速释放链接
[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
30

修改主机名配置文件,作用:设置主机名永久生效

[root@localhost ~]# vim /etc/hostname

配置IP与主机名(域名)的对应关系
[root@localhost ~]# vim /etc/hosts #优先级高于DNS解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.100.56 abc.com

配置DNS-路由相关信息
DNS配置的配置文件

[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4

是不是一定先解析hosts再解析DNS?
本机域名解析顺序
[root@localhost ~]# cat /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns myhostname #可以看到是先查看 files hosts文件,再查看DNS的
在这里插入图片描述
查看路由信息:

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.100.1     0.0.0.0         UG    100    0        0 ens33
10.10.100.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

参数: -n :不要使用通讯协定或主机名称,直接使用 IP 或 port number;
route命令输出的路由表字段含义如下:
Destination 目标 :The destination network or destination host. 目标网络或目标主机。
Gateway 网关 :网关地址,如果是本地网段IP,就显示0.0.0.0
Genmask :子网掩码

添加/删除路由条目:

[root@localhost ~]#route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
[root@localhost ~]#route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]

增加 (add) 与删除 (del) 路由的相关参数:
-net :表示后面接的路由为一个网域;
-host :表示后面接的为连接到单部主机的路由;
netmask :与网域有关,可以设定 netmask 决定网域的大小;
gw :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等

添加/删除路由条目:
添加路由(把Linux做成路由器时或服务器有多个网卡,指定到不同网段走哪个网卡)
实战场景:多个网卡,多个网段,实现不同数据走不同网卡。如果网络管理和生产数据分开管理。

[root@localhost ~]# route add -net 10.10.100.1 netmask 255.255.255.0 dev ens33
[root@localhost ~]# route -n

[root@localhost ~]#route del -net 192.168.2.0 netmask 255.255.255.0

路由跟踪:查看经过多少个路由器到目标网址

[root@localhost ~]#yum -y install traceroute
[root@localhost ~]# traceroute baidu.com
traceroute to baidu.com (220.181.38.148), 30 hops max, 60 byte packets
 1  gateway (10.10.100.1)  7.302 ms  7.598 ms  7.538 ms
 2  172.16.2.97 (172.16.2.97)  3.434 ms  3.538 ms  3.875 ms
 3  172.17.17.1 (172.17.17.1)  7.533 ms  7.726 ms  7.672 ms
 4  10.0.3.1 (10.0.3.1)  4.852 ms  4.801 ms  6.606 ms
 5  10.0.100.1 (10.0.100.1)  7.440 ms  7.493 ms  7.430 ms
 6  10.148.153.41 (10.148.153.41)  35.328 ms  33.085 ms  32.960 ms
 7  10.252.252.1 (10.252.252.1)  25.268 ms  24.685 ms  25.479 ms
 8  172.16.30.1 (172.16.30.1)  80.500 ms  80.356 ms  27.173 ms
 9  152-101-131-14.static.hk.net (152.101.131.14)  25.986 ms  26.289 ms  26.237 ms
10  ip202-76-18-120.ip.hk.net (202.76.18.120)  26.906 ms  26.850 ms  26.794 ms
11  ip202-76-18-10.ip.hk.net (202.76.18.10)  60.620 ms  60.776 ms  60.496 ms
12  ip202-76-18-66.ip.hk.net (202.76.18.66)  27.936 ms  28.348 ms  28.298 ms
13  183.91.48.181 (183.91.48.181)  29.520 ms  28.480 ms  28.413 ms
14  59.43.247.245 (59.43.247.245)  30.843 ms  30.754 ms  30.921 ms
15  59.43.246.209 (59.43.246.209)  66.246 ms 59.43.250.173 (59.43.250.173)  67.893 ms 59.43.246.209 (59.43.246.209)  66.160 ms
16  59.43.188.69 (59.43.188.69)  70.244 ms  69.783 ms  69.734 ms
17  59.43.131.253 (59.43.131.253)  78.488 ms  78.448 ms  68.772 ms
18  59.43.80.2 (59.43.80.2)  70.353 ms  70.511 ms  70.223 ms
19  180.149.128.118 (180.149.128.118)  70.396 ms 220.181.16.18 (220.181.16.18)  69.757 ms 180.149.159.10 (180.149.159.10)  70.269 ms
20  * * *
21  * * 220.181.182.174 (220.181.182.174)  72.216 ms
22  220.181.17.146 (220.181.17.146)  71.319 ms 220.181.182.178 (220.181.182.178)  72.086 ms *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

在这里插入图片描述
http://ssa.yundun.com/cc 云盾全球实时攻防图

tcp三次握手及tcp连接状态
TCP报文段的首部格式:
在这里插入图片描述
需要了解的信息:
ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。
synchronization [ˌsɪŋkrənaɪ’zeɪʃn] 同步
FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。
finis ['faɪnɪs] 终结
建立tcp连接时的tcp三次握手和断开tcp连接时的4次挥手整体过程说明图:
在这里插入图片描述

使用tcpdump抓包查看tcp三次握手过程
tcp三次握手过程:
Client:我可以给你发数据吗?
Server:可以
Client:好的

在这里插入图片描述
三次握手的核心是: 确认每一次包的序列号。
tcp三次握手过程:
1、首先由Client发出请求连接即 SYN=1,声明自己的序号是 seq=x
2、然后Server 进行回复确认,即 SYN=1 ,声明自己的序号是 seq=y, 并设置为ack=x+1,
3、最后Client 再进行一次确认,设置 ack=y+1.

tcpdump常用参数:
-c 指定包个数
-n IP,端口用数字方式显示
port 指定端口
在这里插入图片描述

如何产生tcp的链接?

[root@localhost ~]# ifconfig ens33 down  #关闭
[root@localhost ~]# ifconfig ens33 up  #开启
[root@localhost ~]# /usr/bin/yum -y install tcpdump         #安装tcpdump命令
[root@localhost ~]# tcpdump -n -c 3 port 22 -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
17:24:56.666247 IP 10.10.100.56.ssh > 10.10.100.29.55016: Flags [P.], seq 1622221150:1622221362, ack 589960420, win 251, length 212
17:24:56.666460 IP 10.10.100.29.55016 > 10.10.100.56.ssh: Flags [.], ack 212, win 8207, length 0
17:24:56.666742 IP 10.10.100.56.ssh > 10.10.100.29.55016: Flags [P.], seq 212:504, ack 1, win 251, length 292
3 packets captured
3 packets received by filter
0 packets dropped by kernel

打开另一个终端,开始建立tcp连接:

[root@localhost ~]# tcpdump -n -c 3 port 22   -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
03:03:39.902716 IP 10.10.100.75.ssh > 10.10.100.56.55512: Flags [P.], seq 3649372660:3649372848, ack 2477080270, win 273, options [nop,nop,TS val 90917739 ecr 2498131], length 188
03:03:39.903001 IP 10.10.100.56.55512 > 10.10.100.75.ssh: Flags [.], ack 188, win 371, options [nop,nop,TS val 2498164 ecr 90917739], length 0
03:03:39.903075 IP 10.10.100.75.ssh > 10.10.100.56.55512: Flags [P.], seq 188:552, ack 1, win 273, options [nop,nop,TS val 90917740 ecr 2498164], length 364
3 packets captured
5 packets received by filter
0 packets dropped by kernel

注:Flags [S] 中的 S 表示为SYN包为1
client主机返回ACK,包序号为ack=1 ,这是相对序号,如果需要看绝对序号,可以在tcpdump命令中加-S

[root@localhost ~]# tcpdump -n -c 3 port 22  -S -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
03:00:43.756593 IP 10.10.100.75.ssh > 10.10.100.56.55512: Flags [P.], seq 3649371200:3649371388, ack 2477079722, win 273, options [nop,nop,TS val 90741593 ecr 2335377], length 188
03:00:43.756858 IP 10.10.100.56.55512 > 10.10.100.75.ssh: Flags [.], ack 3649371388, win 311, options [nop,nop,TS val 2335567 ecr 90741593], length 0
03:00:43.756916 IP 10.10.100.75.ssh > 10.10.100.56.55512: Flags [P.], seq 3649371388:3649371608, ack 2477079722, win 273, options [nop,nop,TS val 90741593 ecr 2335567], length 220
3 packets captured
7 packets received by filter
0 packets dropped by kernel

TCP三次握手连接状态详解:
在这里插入图片描述
TCP连接状态详解:
服务器端:LISTEN:侦听来自远方的TCP端口的连接请求
客户端:SYN-SENT:在发送连接请求后等待匹配的连接请求
服务器端:SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认
客户端/服务器端:ESTABLISHED:代表一个打开的连接

在局域网中使用 awl伪装IP地址进行多线程SYN洪水攻击
在这里插入图片描述
SYN洪水攻击的过程:
在服务端返回一个确认的SYN-ACK包的时候有个潜在的弊端,如果发起的客户是一个不存在的客户端,那么服务端就不会接到客户端回应的ACK包。
这时服务端需要耗费一定的数量的系统内存来等待这个未决的连接,直到等待超关闭,才能施放内存。

如果恶意者通过通过ip欺骗,发送大量SYN包给受害者系统,导致服务端存在大量未决的连接并占用大量内存和tcp连接,从而导致正常客户端无法访问服务端,这就是SYN洪水攻击的过程。

下载安装AWL
官网 https://gitlab.com/davical-project/awl/-/tags
在这里插入图片描述

[root@localhost ~]#wget https://gitlab.com/davical-project/awl/-/archive/r0.60/awl-r0.60.tar.gz
[root@localhost ~]#tar -zxvf  awl-r0.60.tar.gz
[root@localhost ~]#yum install gcc gcc-c++ -y
[root@localhost ~]#./configure
[root@localhost ~]#make
[root@localhost ~]#make install
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rio520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值