一.OSI 7層模型 由下至上為1至7層,分別為: 應用層(Application layer) 表示層(Presentation layer) 會話層(Session layer) 傳輸層(Transport layer) 網絡層(Network layer) 數據鏈路層(Data link layer) 物理層(Physical layer) 其中上三層稱之為高層,定義應用程序之間的通信和人機界面。什么意思呢,就是上三層負責把電腦能看懂的東西轉化為你能看懂的東西,或把你能看懂的東西轉化為電腦能看懂的東西。 下四層稱之為底層,定義的是數據如何端到端的傳輸(end-to-end),物理規范以及數據與光電信號間的轉換。 下面一層一層的來說明: 應用層,很簡單,就是應用程序。這一層負責確定通信對象,并確保由足夠的資源用于通信,這些當然都是想要通信的應用程序干的事情。 表示層,負責數據的編碼、轉化,確保應用層的正常工作。這一層,是將我們看到的界面與二進制間互相轉化的地方,就是我們的語言與機器語言間的轉化。數據的壓縮、解壓,加密、解密都發生在這一層。這一層根據不同的應用目的將數據處理為不同的格式,表現出來就是我們看到的各種各樣的文件擴展名。 會話層,負責建立、維護、控制會話,區分不同的會話,以及提供單工(Simplex)、半雙工(Half duplex)、全雙工(Full duplex)三種通信模式的服務。我們平時所知的NFS,RPC,X Windows等都工作在這一層。 傳輸層,負責分割、組合數據,實現端到端的邏輯連接。數據在上三層是整體的,到了這一層開始被分割,這一層分割后的數據被稱為段(Segment)。三次握手(Three-way handshake),面向連接(Connection-Oriented)或非面向連接(Connectionless-Oriented)的服務,流控(Flow control)等都發生在這一層。 網絡層,負責管理網絡地址,定位設備,決定路由。我們所熟知的IP地址和路由器就是工作在這一層。上層的數據段在這一層被分割,封裝后叫做包(Packet),包有兩種,一種叫做用戶數據包(Data packets),是上層傳下來的用戶數據;另一種叫路由更新包(Route update packets),是直接由路由器發出來的,用來和其他路由器進行路由信息的交換。 數據鏈路層,負責準備物理傳輸,CRC校驗,錯誤通知,網絡拓撲,流控等。我們所熟知的MAC地址和交換機都工作在這一層。上層傳下來的包在這一層被分割封裝后叫做幀(Frame)。 物理層,就是實實在在的物理鏈路,負責將數據以比特流的方式發送、接收。 二.網絡協議 IP(Internet Protocol 網際協議)連接兩個節點。每個節點都由一個32位地址來標識。當發送消息時,IP協議從較高級的協議(TCP或UDP)接受消息,并添加包含有關目標主機信息的IP報頭。 TCP(傳輸控制協議),TCP要求在發送數據之前必須打開連接。服務器應用程序必須執行一個稱作被動打開(passive open)的操作,以利用一個已知的端口號創建一個連接,這時,服務器并不是對網絡進行呼叫,而是偵聽并等待引入的請求??蛻魬贸绦虮仨殘绦幸粋€主動打開(active open),為此,它向服務器應用程序發送一個同步序列號(SYN)以標識連接??蛻魬贸绦蚩梢詫討B端口號作為本地的端口使用。服務器必須向客戶發送一個確認(ACK)以及服務器的序列號(SYN),隨后,客戶恢復一個ACK,這樣就建立連接了。如果在收到ACK之前發送方已經超時,則消息將被放到重發隊列中以再次發送。 UDP(用戶數據報協議),UDP是一個速度很快的協議,因為它僅僅指定了數據傳輸所需要的最低機制,它的缺點,消息接收順序不確定,第一個發送的消息可能最后一個被接到。消息可能丟失,也可能同時接收到2個相同的消息。在發送多播和廣播時,我們通常不希望從每個節點都返回一個確認,這樣將使服務器超負荷,并且網絡負荷變大,所以在這個情況下使用UDP協議是很好的選擇。 ICMP(Internet控制消息協議)是一個控制協議,IP設備用來向其他的IP設備通知網絡中的活動和錯誤。如果沒有TCP協議,則IP并不是一個可靠的協議,并且沒有確認,沒有數據的錯誤控制功能(只有一個報頭校驗和),也不能重新傳輸。ICMP消息在IP報頭的內部發送,ICMP消息來發送的類型:響應和響應回復,目標不可達和重定向,超時。在用PING命令時會發送4個ICMP消息。 IGMP(Internet組管理協議)是IP協議的一個擴充,必須由IP模塊來實現。多播應用程序使用IGMP,利用IGMP消息發送對某個多播地址的一組成員請求,這樣就能夠注冊某條多播消息,也可以使用IGMP取消成員的關系。 FTP(File Transfer Protocol 文件傳輸協議)用于將文件復制到服務器,反之亦然。他還能列舉服務器上的文件和目錄。他是一個基于TCP的應用層協議,FTP命令封裝在TCP消息的TCP數據塊中。 HTTP(Hypertext Transfer Protocol 超文本傳輸協議)HTTP是一個可靠的協議,這通過使用TCP來實現,HTTP具有:緩存、客戶應用程序身份識別、支持各種MIME格式的不同附件等。 HTTPS(SSL上的HTTP)如果需要與WEB服務器交換機密數據,則可以使用HTTPS,SSL(Secure Socket Layer 安全套接字層),SSL在TCP之上,他使用一個公鑰/私鑰原理來交換保密的對稱密鑰,用一個對稱密鑰來加密消息。想要支持HTTPS,WEB服務器必須安裝一個證書,HTTPS默認端口是443。 SMTP(Simple Mail Transfer Protocol 簡單郵件傳輸協議)是一個用于發送和接受郵件消息的協議。SMTP不允許我們從郵件服務器讀取消息,為此需要使用POP3或者IMAP協議。 POP3(Post Office Protocol 郵局協議)是為斷開環境設計的。利用POP3,客戶可以訪問服務器,并獲取服務器為其所保留的消息。 IMAP(Internet Message Access Protocol Internet消息訪問協議)用來訪問郵件服務器上的郵件,IMAP客戶可以有脫機模式,這時可以在本地機器上對郵件進行操作。IMAP使客戶能夠對遠程郵箱進行操作,就像是本地操作郵箱一樣。 NNTP(Network News Transfer Protocol 網絡新聞傳輸協議)是一個用于提交,中繼和獲取消息的應用層協議,該協議提供了能夠訪問新聞服務器并且從中獲取選定消息的客戶應用程序,并且還支持服務器到服務器的消息傳輸。 SNMP(Simple Network Management Protocol 簡單網絡管理協議)可以對網絡上的設備進行管理。SNMP的目的在于利用性能問題和故障觸發的警報來有效的管理設備,并且允許對設備進行配置。與網絡設備相關聯的SNMP代理將有一個MIB(Management Information Base 管理信息庫)數據庫,它將面向對象的方式包含了該設備的可管理信息。SNMP客戶通過發送SNMP GET 請求來訪問數據庫中的信息,用SNMP SET 請求配置MIB數據庫。 Telnet協議,該協議使我們能夠利用用戶身份驗證連接到一個遠程系統,然后從一個控制臺環境遠程調用命令。 |