Liunx網絡技術管理及進程管理

Linux網絡技術管理及進程管理(week2_day4)

 

 

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

 

 

  

OSI七層模型:OSI(Open System Interconnection)開放系統互連參考模型是國際標準化組織(ISO)制定的一個用於計算機或通訊系統間互聯的標準體系。html

TCP/IP四層模型:TCP/IP參考模型是計算機網絡的祖父ARPANET和其後繼的因特網使用的參考模型。linux

分層做用:方便管理web

 

 

七層模型優勢:vim

一、把複雜的網絡劃分紅爲更容易管理的層(將整個龐大而複雜的問題劃分爲若干個容易處理的小問題)centos

二、沒有一個廠家能完整的提供整套解決方案和全部的設備,協議.瀏覽器

三、獨立完成各自該作的任務,互不影響,分工明確,上層不關心下層具體細節,分層一樣有益於網絡排錯緩存

功能與表明設備安全

分層服務器

名字網絡

功能

工做在該層的設備

7

應用層

提供用戶界面

QQ,IE 。應用程序

6

表示層

表示數據,進行加密等處理

5

會話層

將不一樣應用程序的數據分離

4

傳輸層

提供可靠或不可靠的傳輸,在重傳前執行糾錯

防火牆

3

網絡層

提供邏輯地址,路由器使用它們來選擇路徑

三層交換機、路由器

2

數據鏈路層

將分組拆分爲字節,並講字節組合成幀,使用MAC地址提供介質訪問,執行錯誤檢測,但不糾錯

二層交換機,網卡

1

物理層

在設備之間傳輸比特,指定電平,電纜速度和電纜針腳

集線器

   

互動:爲何現代網絡通訊過程當中用TCP/IP四層模型,而不是用OSI七層模型呢?

OSI七層模型是理論模型,通常用於理論研究,他的分層有些冗餘,實際應用,選擇TCP/IP的四層模型。並且 OSI 自身也有缺陷,大多數人都認爲 OSI 模型的層次數量與內容多是最佳的選擇,其實並不是如此,其中會話層和表示層幾乎是空的,而數據鏈路層和網絡層包含內容太多,有不少的子層插入,每一個子層都有不一樣的功能。

 

常見網絡相關的協議

 

DNS:域名解析協議 www.baidu.com

SNMP(Simple Network Management Protocol)網絡管理協議

DHCP(Dynamic Host Configuration Protocol)動態主機配置協議,它是在TCP/IP網絡上使客戶機得到配置信息的協議

FTP(File Transfer Protocol)文件傳輸協議,它是一個標準協議,是在計算機和網絡之間交換文件的最簡單的方法。

TFTP(Trivial 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:虛擬終端協議

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 經常使用端口號名稱

 

(1)TCP 端口分配

21

ftp

文件傳輸服務

22

ssh

安全遠程鏈接服務

23

telnet

遠程鏈接服務

25

smtp

電子郵件服務

53

DNS

域名解析服務,有tcp53也有用udp53端口傳輸

80

http

web服務

443

https

安全web服務

 

互動:若是你不知道哪一個端口對應哪一個服務怎麼辦?如873端口是哪一個服務的?

[root@ken~]#  vim /etc/services    #此文件中,包含全部常見端口號及服務名稱

 

linux網絡相關的調試命令

 

1、橋接模式:配置橋接模式的虛擬機做爲獨立計算機存在

 

1. 虛擬機能夠上外網
2. 能夠和局域網內任意一臺電腦通訊
3. 能夠和宿主機通訊
4. 局域網內任意一臺主機均可以和此虛擬機通訊

 

2、nat模式:配置nat模式的虛擬機使用本機IP地址(地址轉化)


1. 物理機vmnet8這個網卡必須開啓
2. 能夠上外網
3. 能夠宿主機通訊
4. 局域網內不能夠訪問此虛擬機


3、僅主機模式


1. 能夠和宿主機通訊
2. 同一臺宿主機上的僅主機模式下的虛擬機之間能夠互相通訊
3. 不能夠上外網
4. 局域網內不能夠相互訪問



1.修改IP相關信息

 
[root@ken ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:13:a1:49 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.190/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe13:a149/64 scope link 
       valid_lft forever preferred_lft forever
 

 

2. 修改網卡信息

修改配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0

 

DEVICE=eth0 #指出設備名稱
NM_CONTROLLED=yes #network mamager的參數,實時生效,不須要重啓
ONBOOT=yes #設置爲yes,開機自動啓用網絡鏈接
IPADDR=192.168.21.129 #IP地址
BOOTPROTO=none #設置爲none禁止DHCP,設置爲static啓用靜態IP地址,設置爲dhcp開啓DHCP服務
NETMASK=255.255.255.0 #子網掩碼
DNS1=8.8.8.8 #第一個dns服務器
TYPE=Ethernet #網絡類型爲:Ethernet
GATEWAY=192.168.21.2 #設置網關
DNS2=8.8.4.4 #第二個dns服務器
IPV6INIT=no #禁止IPV6
USERCTL=no #是否容許非root用戶控制該設備,設置爲no,只能用root用戶更改
HWADDR=00:0C:29:2C:E1:0F #網卡的Mac地址
PREFIX=24
NAME="System eth0" #定義設備名稱
 

 

3.臨時添加IP地址

 
[root@ken ~]# ip a a 192.168.4.191 dev eth0
[root@ken ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:13:a1:49 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.190/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.4.191/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe13:a149/64 scope link 
       valid_lft forever preferred_lft forever
 

 

4.查看端口監聽狀態

ss 命令

經常使用選項:

  -t: 顯示tcp連接

  -n: 以數字形式顯示當前連接的端口

  -l: 只顯示監聽的

  -a:顯示所有

  -p: 顯示PID

經常使用組合:ss -tnl

 

 
[root@ken ~]# ss -tnl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128         *:22                      *:*                  
LISTEN      0      100    127.0.0.1:25                      *:*                  
LISTEN      0      128        :::22                     :::*                  
LISTEN      0      100       ::1:25                     :::*                  
 

 

 進程管理

 

程序:二進制文件,靜態 /bin/date,/usr/sbin/sshd 
進程:是程序運行的過程,動態,有生命週期及運行狀態。

 

下圖所示的是進程的生命週期:

 

 

 

描述以下:

父進程複製本身的地址空間(fork  [fɔ:k] 分叉)建立一個新的(子)進程結構。每一個新進程分配一個惟一的進程 ID (PID),知足跟蹤安全性之需。PID 和父進程 ID (PPID)是子進程環境的元素,任何進程均可以建立子進程,全部進程都是第一個系統進程的後代。

centos5或6PID爲1的進程是: init  

centos7 PID爲1的進程是:     systemd

殭屍進程:一個進程使用fork建立子進程,若是子進程退出,而父進程並無調用wait或waitpid獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中。這種進程稱之爲殭屍進程。

用本身的話表達:父進程退出了,子進程沒有退出,那麼這些子進程就沒有父進程來管理了,就變成殭屍進程。

 

進程的屬性

 

進程ID(PID):是惟一的數值,用來區分進程

進程狀態:狀態分爲運行R、休眠S、殭屍Z

 

使用ps查看進程工具

 

一、ps查看進程工具

例1:經常使用的參數:

a: 顯示跟當前終端關聯的全部進程

u: 基於用戶的格式顯示(U: 顯示某用戶ID全部的進程)

x: 顯示全部進程,不以終端機來區分

 

 
[root@ken ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125328  3832 ?        Ss   20:40   0:01 /usr/lib/syst
root          2  0.0  0.0      0     0 ?        S    20:40   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    20:40   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   20:40   0:00 [kworker/0:0H
root          6  0.0  0.0      0     0 ?        S    20:40   0:00 [kworker/u256
root          7  0.0  0.0      0     0 ?        S    20:40   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    20:40   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    20:40   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   20:40   0:00 [lru-add-drai
root         11  0.0  0.0      0     0 ?        S    20:40   0:00 [watchdog/0]
 

注:最後一列[xxxx] 使用方括號括起來的進程是內核態的進程。沒有括起來的是用戶態進程。

上面的參數輸出每列含意:

USER: 啓動這些進程的用戶

PID: 進程的ID

%CPU 進程佔用的CPU百分比; 
%MEM 佔用內存的百分比; 

VSZ:進程佔用的虛擬內存大小(單位:KB) 
RSS:進程佔用的物理內存大小(單位:KB) 

STAT:該程序目前的狀態,Linux進程有5種基本狀態:

     R :該程序目前正在運做,或者是可被運做;

     S :該程序目前正在睡眠當中,但可被某些訊號(signal) 喚醒。

     T :該程序目前正在偵測或者是中止了;

     Z :該程序應該已經終止,可是其父程序卻沒法正常的終止他,形成 zombie (疆屍) 程序的狀態

     D  不可中斷狀態.  

5個基本狀態後,還能夠加一些字母,好比:Ss、R+,以下圖:

 

 

它們含意以下::

<: 表示進程運行在高優先級上

N: 表示進程運行在低優先級上

L: 表示進程有頁面鎖定在內存中

s: 表示進程是控制進程

l: 表示進程是多線程的

+: 表示當前進程運行在前臺

START:該 process 被觸發啓動的時間;

TIME :該 process 實際使用 CPU 運做的時間。

COMMAND:該程序的實際指令

 

uptime查看系統負載

 

[root@ken ~]# uptime 
 22:14:16 up  1:33,  2 users,  load average: 0.00, 0.01, 0.04

 

彈出消息含意以下:

當前時間 系統運行時間 當前登陸用戶 系統負載1分鐘,5分鐘,15分鐘的平均負載

 

top命令

 

 
[root@ken ~]# top
top - 22:19:03 up  1:38,  2 users,  load average: 0.07, 0.03, 0.04
Tasks:  95 total,   1 running,  94 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 s
KiB Mem :   997956 total,   769528 free,    91376 used,   137052 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   750772 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND   
   638 root      20   0  298712   6120   4788 S  0.7  0.6   0:06.92 vmtoolsd  
   646 root      20   0  476188   8996   6748 S  0.7  0.9   0:00.30 NetworkMa+
     1 root      20   0  125328   3832   2576 S  0.0  0.4   0:01.30 systemd   
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd  
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.14 ksoftirqd+
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0+
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.14 kworker/u+
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration+
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh    
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.40 rcu_sched 
 

 

第1行:系統時間、運行時間、登陸終端數、系統負載(三個數值分別爲1分鐘、5分鐘、15分鐘內的平均值,數值越小意味着負載越低)。

第2行:進程總數、運行中的進程數、睡眠中的進程數、中止的進程數、僵死的進程數。

第3行:用戶佔用資源百分比、系統內核佔用資源百分比、改變過優先級的進程資源百分比、空閒的資源百分比等。其中數據均爲CPU數據並以百分比格式顯示,例如「97.1 id」意味着有97.1%的CPU處理器資源處於空閒。

第4行:物理內存總量、內存使用量、內存空閒量、做爲內核緩存的內存量。

第5行:虛擬內存總量、虛擬內存使用量、虛擬內存空閒量、已被提早加載的內存量。

第6行: 

PID — 進程id
USER — 進程全部者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/中止 Z=殭屍進程
%CPU — 上次更新到如今的CPU時間佔用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)

 

lsof命令

 

lsof命令用於查看你進程打開的文件,打開文件的進程,進程打開的端口(TCP、UDP)

-i<條件>:列出符合條件的進程。(四、六、協議、:端口、 @ip )

[root@ken ~]# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     867 root    3u  IPv4  19361      0t0  TCP *:ssh (LISTEN)
sshd     867 root    4u  IPv6  19370      0t0  TCP *:ssh (LISTEN)
相關文章
相關標籤/搜索