我真的不知道用什麼樣的語言來整理我學過的網絡知識,如果說是理論知識,百度百科上一搜一大堆,我希望我整理的東西在生活中都能找到模闆,貼近生活,源于生活。
網絡我們都很熟悉,無論是qq 微信等社交軟體還是遊戲,我們都離不開網絡,網絡貫穿我們生活的點點滴滴,而且今天成熟的網絡系統,都是由傳統的網絡一點一點發展而來的。
帶着問題去思考,我們都知道OSI七層,那麼什麼叫做層,為什麼要分層?分層有有什麼優勢?為什麼每一層有對應的不同的協定?
層:描述了所有需求上的有效通訊過程,我們把這些過程叫做層。
<a href="https://s4.51cto.com/wyfs02/M02/A6/7C/wKioL1nQPNThc_AiAAJVqgmIMCQ962.png-wh_500x0-wm_3-wmp_4-s_1093962866.png" target="_blank"></a>
為什麼要分層?
這就像一個公司,剛開始公司人很少,随着公司規模的擴大,我們就要劃分各個部門來實作各部門的作用,網絡經過長期的發展,日益成熟與健壯,人們就邏輯的給劃分為七層,來讓每一層實作每一層的作用,來形成一個完善的網絡系統。
分層的優勢?
把複雜的網絡劃分成易于管理的層,易于排錯,創造更好的內建環境,低層為上層提供服務。(什麼是低層,什麼是高層見上圖)
為什麼每一層有每一層對應的裝置和協定?
裝置和協定是相關的,因為有網絡的發展帶動了生産不同裝置的廠商,主要就是路由器和交換機,剛開始它們各自的廠商有自己的标準,導緻不同廠商裝置之間不能通信,例如可能戴爾的路由器就不能和聯想的通信,這就導緻網絡的通信遇到了很多的阻礙,是以為了形成統一的标準,就出來了标準協定,各個廠商就必須遵守的一個協定。
這就類似國語,協定隻是為了達成一個公認的統一的标準。
由上層協定開始介紹OSI七層:
應用層(使用者接口)
應用層一般都是應用程式:qq 浏覽器 郵箱(專門針對具有通信功能應用程式的一層)
簡單說一個具有通信功能的應用程式就是應用層一個使用者的接口(不叫端口,端口是相對傳輸層而言的)。
常用協定:telnet http smtp ftp
表示層(沒有協定,隻是把應用層給細緻劃分)
上層資料表示加密等特殊處理過程,定義資料格式及加密。
會話層(沒有協定,隻是把應用層給細緻劃分)
保證不同應用(應用程式)間的資料區分。
例如:你打開一個qq 和一個浏覽器,你就有兩個應用程式,但是你qq聊天中的内容隻在qq中呈現,不可能在浏覽器中呈現,這就是會話層給做了一個資料的區分。
如果了籠統一點,這三層可以統稱為應用層
下面介紹下層協定(裝置都是硬體裝置)
實體層
最底層,發送或接收比特流。
比特流是什麼,我們都知道計算機的世界裡隻有0和1,這都是相對于實體層來說的。1B=8b,1MB=1024kB B(位元組) b(比特位,表示0 1)
例如:00101011 就是8比特位,1位元組
流是什麼意思,就是很多,例如水流,是以網線裡面傳的就是很多很多的0和1叫比特流。
硬體裝置: 網線網卡,光纖,電纜
資料鍊路層
作用:将比特流轉換成資料幀,負責成幀
在這層資料都叫幀
典型裝置:交換機
協定資料單元:幀
有裝置就有協定,資料鍊路層的協定:ppp HDLC ATM Ethernet(以太網,包括802.3 802.2) FR(幀中繼)
交換機的工作原理:
交換機接收資料幀(到了交換機的資料都封裝成了資料幀,交換機隻接收資料幀,裡面有源MAC位址,和目的MAC位址),根據源MAC 位址更新MAC 位址表,根據目标MAC 位址做出轉發決定。
如果是已知單點傳播或廣播幀,則直接由已知端口轉發,如果是未知,則除了接收幀的接口以外的接口全部轉發,稱為泛洪。這時候接收到的計算機就會給交換機一個相應(告訴交換機我就是擁有目的位址的那台計算機),這時候交換機中就會多一條記錄,MAC 位址和端口的對應關系,但是這條記錄是動态的,老化時間300秒,這條記錄隻存300秒。
MAC 位址相當于交換機内部一個資料庫,記錄着MAC位址和接口編号的對應關系
交換機檢視MAC 位址表 show mac-address-table
以太網(這一層一個重要的協定)幀格式:
<a href="https://s4.51cto.com/wyfs02/M00/A6/7E/wKioL1nQYBTSPSNhAAN_l13YtW8946.png-wh_500x0-wm_3-wmp_4-s_2170679085.png" target="_blank"></a>
*****網絡層(點到點的通信)
決定路徑的邏輯尋址,實作不同網絡間的通信
裝置:路由器
協定:ip arp icmp (ping 指令)
協定資料單元(pdu):包
這幾個協定很重要很重要,ip是個泛指,網際網路協定。ip協定的格式:
<a href="https://s1.51cto.com/wyfs02/M02/07/CC/wKiom1nQYs_ioBZMAAEAVCH6IFY585.jpg-wh_500x0-wm_3-wmp_4-s_4014038338.jpg" target="_blank"></a>
arp 的作用:将ip位址解析成MAC位址,是計算機通信的橋梁,很重要,因為ip隻是确定的一個範圍,MAC位址才是每台計算機的唯一辨別。ip位址為什麼隻确定一個範圍呢?這是由路由表決定的,路由表裡面隻有網段和端口的對應。ip就相當于你在哪個班,MAC就相當于你是這個班裡的哪個人。
***傳輸層(端到端的通信)
協定:TCP UDP
裝置:無
作用:可靠或不可靠的資料傳輸,資料重傳前的資料糾正。
TCP 是可靠的,面向連接配接的資料傳輸,UDP 是不可靠的,不面向連接配接的資料傳輸。
為什麼這麼說?為什麼說可靠?為什麼說面向連接配接?
TCP 經曆三次握手,四次斷開的過程。
TCP的資料格式:
UDP的資料格式:
<a href="https://s1.51cto.com/wyfs02/M01/07/CD/wKiom1nQbf_SR5m4AALj5XHVhRE687.png-wh_500x0-wm_3-wmp_4-s_3061769362.png" target="_blank"></a>
比較源端口号或目的端口号,我們發現UDP 會比TCP 少很多東西,沒有序号沒有确認序号,沒有标記字段,重要的都沒有。
一些重要标記字段的作用:
RST:重新連接配接
FIN:請求斷開
SYN:請求建立連接配接
ACK:确認序列号
端口的概念:範圍(0~65535)
<a href="https://s2.51cto.com/wyfs02/M01/A6/7E/wKioL1nQbArg1pkzAAV48JXpt_s297.png-wh_500x0-wm_3-wmp_4-s_1467149385.png" target="_blank"></a>
三次握手的過程:
<a href="https://s5.51cto.com/wyfs02/M00/07/CD/wKiom1nQbL3DNBMxAARJoWXWDAE651.png-wh_500x0-wm_3-wmp_4-s_536380535.png" target="_blank"></a>
為什麼說TCP可靠呢?
因為它麻煩,就像你的微信換台裝置登入一樣,就要經過舊的裝置認證,确認機制比較多,是以安全。TCP 也是同樣的道理,因為它的确認機制比較多,是以安全可靠。
什麼是面向連接配接?
面向連接配接是指依賴于發送方和接收方顯示通信或阻塞來管理資料連接配接。
三次握手語言描述:
TCP 的連接配接是一個非常謹慎的過程,A和B 說我請求連接配接,但是計算機和人不一樣,B怎麼樣來區分你說的這句話是用來請求連接配接的?是不是A給B 發了一個标記字段,并且發了一個序号seq=A,這時候B 就給A發了一個确認序列号,代表我同意,是以ack=A+1(确認序列号都是源序号加1),還給A發了一個他自己的序号seq=B;這時候還沒完,當A收到B的回複以後就開始建立會話,當在建立回話的時候seq=A+1;用來表示這是A主機和B說的第二句話,ack=B+1:(ack的确認永遠是确認的對方的)
四次斷開示意圖:
<a href="https://s2.51cto.com/wyfs02/M00/A6/7F/wKioL1nQgGjRHCT6AAA5l6PfM5I218.jpg-wh_500x0-wm_3-wmp_4-s_118413570.jpg" target="_blank"></a>
三次握手,四次斷開主要是因為TCP協定的格式中有标記字段,UDP沒有。
TCP(傳輸控制協定) UDP(使用者資料協定)
TCP UDP的協定格式都存在端口号,有時候我們會說web服務--http協定--tcp--80端口
http協定指的是應用層協定,tcp 指的是在這個協定傳輸層的傳輸形式,80端口是在傳輸層的端口号。
這時候可能就已經十分懵逼了,總結下,ip用來說明一個範圍,例如一個班級,MAC 用來辨別特定的主機,例如一個班級的某一個人,端口号用來确定這台計算機上的一個應用,例如一個班上的一個人的一隻手。
是以說隻要有提供服務的用戶端軟體,就有一個應用層協定,當經過傳輸層時就有端口号,但是資料有兩種情況,要麼走TCP,要麼走UDP.
端口号的介紹:
<a href="https://s4.51cto.com/wyfs02/M01/07/CD/wKiom1nQhQmDwHEdAAMTo3Od9rA028.png-wh_500x0-wm_3-wmp_4-s_102685716.png" target="_blank"></a>
比如說Telent協定,當資料傳輸時源端口号是任意一個,目的端口号是23.
大概OSI七層就介紹完了,但是在實際生産中可能不會劃分的這麼細,是以人們也習慣性的說TCP/IP五層:
網絡接口層、網際網路層、主機到主機層、應用層。
<a href="https://s3.51cto.com/wyfs02/M02/A6/7F/wKioL1nQhfmytgAIAAQhmpkdp6s072.png-wh_500x0-wm_3-wmp_4-s_2546263669.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M00/07/CD/wKiom1nQhySCHFeiAAPNlcrYUcw431.png-wh_500x0-wm_3-wmp_4-s_1289947500.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M00/A6/7F/wKioL1nQhxKgayd5AAMpsWs8Py8094.png-wh_500x0-wm_3-wmp_4-s_2074152642.png" target="_blank"></a>
我自己畫了一張圖來表示我對這七層的了解
<a href="https://s3.51cto.com/wyfs02/M01/07/CD/wKiom1nQivLieJlTAAG0HTkhIxk040.png-wh_500x0-wm_3-wmp_4-s_1961577123.png" target="_blank"></a>
總結:
常用服務 協定 端口
1. POP3 TCP 110
2. IMAP TCP 143
3. SMTP TCP 25
4. Telnet TCP 23
5. 終端服務TCP 3389
6. TFTP UDP 端口69
7. HTTP TCP 80
8. NTP UDP 端口123
9. HTTPS TCP 443
10. FTP 控制TCP 21 FTP 預設資料TCP 20
11. RADIUS UDP 1645
12. DHCP 伺服器UDP 67
13. DNS UDP 53 DNS TCP 53
14. SNMP UDP 161
15 ipsec UDP 500
16 PPTP TCP 1723
17 L2TP UDP 1701
代理伺服器常用以下端口:
(1). HTTP協定代理伺服器常用端口号:80/8080/3128/8081/9080
(2). SOCKS代理協定伺服器常用端口号:1080
(3). FTP(檔案傳輸)協定代理伺服器常用端口号:21
(4). Telnet(遠端登入)協定代理伺服器常用端口:23
HTTP伺服器,預設的端口号為80/tcp(木馬Executor開放此端口);
HTTPS(securely transferring web pages)伺服器,預設的端口号為443/tcp 443/udp;
Telnet(不安全的文本傳送),預設端口号為23/tcp(木馬Tiny Telnet Server所開放的端口);
FTP,預設的端口号為21/tcp(木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的端口);
TFTP(Trivial File Transfer Protocol ),預設的端口号為69/udp;
SSH(安全登入)、SCP(檔案傳輸)、端口重定向,預設的端口号為22/tcp;
SMTP Simple Mail Transfer Protocol (E-mail),預設的端口号為25/tcp(木馬Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個端口);
POP3 Post Office Protocol (E-mail) ,預設的端口号為110/tcp;
WebLogic,預設的端口号為7001;
Webshpere應用程式,預設的端口号為9080;
webshpere管理工具,預設的端口号為9090;
JBOSS,預設的端口号為8080;
TOMCAT,預設的端口号為8080;
WIN2003遠端登陸,預設的端口号為3389;
Symantec AV/Filter for MSE ,預設端口号為8081;
ORACLE EMCTL,預設的端口号為1158;
Oracle XDB(XML 資料庫),預設的端口号為8080;
Oracle XDB FTP服務,預設的端口号為2100;
MS SQL*SERVER資料庫server,預設的端口号為1433/tcp 1433/udp;
MS SQL*SERVER資料庫monitor,預設的端口号為1434/tcp 1434/udp;
本文轉自 大雪兒 51CTO部落格,原文連結:http://blog.51cto.com/dingxue/1970088,如需轉載請自行聯系原作者