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)