1. 程式人生 > >106.網路分層模型及SOCKET/TCP/UDP/HTTP區別和聯絡

106.網路分層模型及SOCKET/TCP/UDP/HTTP區別和聯絡

簡介

本文主要描述了網路分層模型, 分為TCP/IP四層網路模型與OSI七層網路模型說明。還有TCP/IP, SOCKET, HTTP, TCP, UDP之間的聯絡和區別。

網路模型

TCP/IP四層網路模型

TCP/IP分層模型(TCP/IP Layening Model)被稱作因特網分層模型(Internet Layering Model)、因特網參考模型(Internet Reference Model)。Internet的基本協議是TCP/IP協議。  

這裡寫圖片描述

TCP/IP協議被組織成四個概念層,其中有三層對應於ISO參考模型中的相應層。ICP/IP協議族並不包含物理層和資料鏈路層,因此它不能獨立完成整個計算機網路系統的功能,必須與許多其他的協議協同工作。  

第一層:網路介面層  

包括用於協作IP資料在已有網路介質上傳輸的協議。實際上TCP/IP標準並不定義與ISO資料鏈路層和物理層相對應的功能。相反,它定義像地址解析協議(Address Resolution Protocol,ARP)這樣的協議,提供TCP/IP協議的資料結構和實際物理硬體之間的介面。  

第二層:網際層  

對應於OSI七層參考模型的網路層。本層包含IP協議、RIP協議(Routing Information Protocol,路由資訊協議),負責資料的包裝、定址和路由。同時還包含網間控制報文協議(Internet Control Message Protocol,ICMP)用來提供網路診斷息。  

第三層:傳輸層  

對應於OSI七層參考模型的傳輸層,它提供兩種端到端的通訊服務。其中TCP協議(Transmission Control Protocol)提供可靠的資料流運輸服務,UDP協議(Use Datagram Protocol)提供不可靠的使用者資料報服務。  

第四層:應用層  

對應於OSI七層參考模型的應用層和表達層。因特網的應用層協議包括Finger、Whois、FTP(檔案傳輸協議)、Gopher、HTTP(超文字傳輸協議)、Telent(遠端終端協議)、SMTP(簡單郵件傳送協議)、IRC(因特網中繼會話)、NNTP(網路新聞傳輸協議)等。

OSI七層網路模型

網路協議設計者不應當設計一個單一、巨大的協議來為所有形式的通訊規定完整的細節,而應把通訊問題劃分成多個小問題,然後為每一個小問題設計一個單獨的協議。這樣做使得每個協議的設計、分析、時限和測試比較容易。協議劃分的一個主要原則是確保目標系統有效且效率高。為了提高效率,每個協議只應該注意沒有被其他協議處理過的那部分通訊問題;為了主協議的實現更加有效,協議之間應該能夠共享特定的資料結構;同時這些協議的組合應該能處理所有可能的硬體錯誤以及其它異常情況。為了保證這些協議工作的協同性,應當將協議設計和開發成完整的、協作的協議系列(即協議族),而不是孤立地開發每個協議。
在網路歷史的早期,國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)共同出版了開放系統互聯的七層參考模型。一臺計算機作業系統中的網路過程包括從應用請求(在協議棧的頂部)到網路介質(底部) ,OSI參考模型把功能分成七個分立的層次。

這裡寫圖片描述

第一層:物理層   

負責最後將資訊編碼成電流脈衝或其它訊號用於網上傳輸。它由計算機和網路介質之間的實際介面組成,可定義電氣訊號、符號、線的狀態和時鐘要求、資料編碼和資料傳輸用的聯結器。如最常用的RS-232規範、10BASE-T的曼徹斯特編碼以及RJ-45就屬於第一層。所有比物理層高的層都通過事先定義好的介面而與它通話。如乙太網的附屬單元介面(AUI),一個DB-15聯結器可被用來連線層一和層二。   

第二層:資料鏈路層   

通過物理網路鏈路提供可靠的資料傳輸。不同的資料鏈路層定義了不同的網路和協議特徵,其中包括物理編址、網路拓撲結構、錯誤校驗、幀序列以及流控。物理編址(相對應的是網路編址)定義了裝置在資料鏈路層的編址方式;網路拓撲結構定義了裝置的物理連線方式,如匯流排拓撲結構和環拓撲結構;錯誤校驗向發生傳輸錯誤的上層協議告警;資料幀序列重新整理並傳輸除序列以外的幀;流控可能延緩資料的傳輸,以使接收裝置不會因為在某一時刻接收到超過其處理能力的資訊流而崩潰。資料鏈路層實際上由兩個獨立的部分組成,介質存取控制(Media Access Control,MAC)和邏輯鏈路控制層(Logical Link Control,LLC)。MAC描述在共享介質環境中如何進行站的排程、發生和接收資料。MAC確保資訊跨鏈路的可靠傳輸,對資料傳輸進行同步,識別錯誤和控制資料的流向。一般地講,MAC只在共享介質環境中才是重要的,只有在共享介質環境中多個節點才能連線到同一傳輸介質上。IEEE MAC規則定義了地址,以標識資料鏈路層中的多個裝置。邏輯鏈路控制子層管理單一網路鏈路上的裝置間的通訊,IEEE 802.2標準定義了LLC。LLC支援無連線服務和麵向連線的服務。在資料鏈路層的資訊幀中定義了許多域。這些域使得多種高層協議可以共享一個物理資料鏈路。   

第三層:網路層   

負責在源和終點之間建立連線。它一般包括網路尋徑,還可能包括流量控制、錯誤檢查等。相同MAC標準的不同網段之間的資料傳輸一般只涉及到資料鏈路層,而不同的MAC標準之間的資料傳輸都涉及到網路層。例如IP路由器工作在網路層,因而可以實現多種網路間的互聯。   

第四層:傳輸層   

向高層提供可靠的端到端的網路資料流服務。傳輸層的功能一般包括流控、多路傳輸、虛電路管理及差錯校驗和恢復。流控管理裝置之間的資料傳輸,確保傳輸裝置不傳送比接收裝置處理能力大的資料;多路傳輸使得多個應用程式的資料可以傳輸到一個物理鏈路上;虛電路由傳輸層建立、維護和終止;差錯校驗包括為檢測傳輸錯誤而建立的各種不同結構;而差錯恢復包括所採取的行動(如請求資料重發),以便解決發生的任何錯誤。傳輸控制協議(TCP)是提供可靠資料傳輸的TCP/IP協議族中的傳輸層協議。   

第五層:會話層   

建立、管理和終止表示層與實體之間的通訊會話。通訊會話包括髮生在不同網路應用層之間的服務請求和服務應答,這些請求與應答通過會話層的協議實現。它還包括建立檢查點,使通訊發生中斷的時候可以返回到以前的一個狀態。   

第六層:表示層   

提供多種功能用於應用層資料編碼和轉化,以確保以一個系統應用層傳送的資訊可以被另一個系統應用層識別。表示層的編碼和轉化模式包括公用資料表示格式、效能轉化表示格式、公用資料壓縮模式和公用資料加密模式。   
公用資料表示格式就是標準的影象、聲音和視訊格式。通過使用這些標準格式,不同型別的計算機系統可以相互交換資料;轉化模式通過使用不同的文字和資料表示,在系統間交換資訊,例如ASCII(American Standard Code for Information Interchange,美國標準資訊交換碼);標準資料壓縮模式確保原始裝置上被壓縮的資料可以在目標裝置上正確的解壓;加密模式確保原始裝置上加密的資料可以在目標裝置上正確地解密。
表示層協議一般不與特殊的協議棧關聯,如QuickTime是Applet計算機的視訊和音訊的標準,MPEG是ISO的視訊壓縮與編碼標準。常見的圖形影象格式PCX、GIF、JPEG是不同的靜態影象壓縮和編碼標準。   

第七層:應用層   

最接近終端使用者的OSI層,這就意味著OSI應用層與使用者之間是通過應用軟體直接相互作用的。注意,應用層並非由計算機上執行的實際應用軟體組成,而是由嚮應用程式提供訪問網路資源的API(Application Program Interface,應用程式介面)組成,這類應用軟體程式超出了OSI模型的範疇。應用層的功能一般包括標識通訊夥伴、定義資源的可用性和同步通訊。因為可能丟失通訊夥伴,應用層必須為傳輸資料的應用子程式定義通訊夥伴的標識和可用性。定義資源可用性時,應用層為了請求通訊而必須判定是否有足夠的網路資源。在同步通訊中,所有應用程式之間的通訊都需要應用層的協同操作。 OSI的應用層協議包括檔案的傳輸、訪問及管理協議(FTAM) ,以及檔案虛擬終端協議(VIP)和公用管理系統資訊(CMIP)等。

這裡寫圖片描述

四層和七層網路模型對比

這裡寫圖片描述

Socket

什麼是Socket?

Socket又稱之為“套接字”,是系統提供的用於網路通訊的方法。它的實質並不是一種協議,沒有規定計算機應當怎麼樣傳遞訊息,只是給程式設計師提供了一個傳送訊息的介面,程式設計師使用這個介面提供的方法,傳送與接收訊息。
Socket描述了一個IP、埠對。它簡化了程式設計師的操作,知道對方的IP以及PORT就可以給對方傳送訊息,再由伺服器端來處理髮送的這些訊息。所以,Socket一定包含了通訊的雙發,即客戶端(Client)與服務端(server)。
Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。

這裡寫圖片描述

Socket的通訊過程?

每一個應用或者說服務,都有一個埠。比如DNS的53埠,http的80埠。我們能由DNS請求到查詢資訊,是因為DNS伺服器時時刻刻都在監聽53埠,當收到我們的查詢請求以後,就能夠返回我們想要的IP資訊。所以,從程式設計上來講,應該包含以下步驟:
1)服務端利用Socket監聽埠;
2)客戶端發起連線;
3)服務端返回資訊,建立連線,開始通訊;
4)客戶端,服務端斷開連線。

SOCKET原理

套接字(socket)概念

套接字(socket)是通訊的基石,是支援TCP/IP協議的網路通訊的基本操作單元。它是網路通訊過程中端點的抽象表示,包含進行網路通訊必須的五種資訊:連線使用的協議,本地主機的IP地址,本地程序的協議埠,遠地主機的IP地址,遠地程序的協議埠。
應用層通過傳輸層進行資料通訊時,TCP會遇到同時為多個應用程式程序提供併發服務的問題。多個TCP連線或多個應用程式程序可能需要通過同一個 TCP協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與TCP/IP協議互動提供了套接字(Socket)介面。應 用層可以和傳輸層通過Socket介面,區分來自不同應用程式程序或網路連線的通訊,實現資料傳輸的併發服務。

建立socket連線

建立Socket連線至少需要一對套接字,其中一個運行於客戶端,稱為ClientSocket,另一個運行於伺服器端,稱為ServerSocket。
套接字之間的連線過程分為三個步驟:伺服器監聽,客戶端請求,連線確認。
伺服器監聽:伺服器端套接字並不定位具體的客戶端套接字,而是處於等待連線的狀態,實時監控網路狀態,等待客戶端的連線請求。
客戶端請求:指客戶端的套接字提出連線請求,要連線的目標是伺服器端的套接字。為此,客戶端的套接字必須首先描述它要連線的伺服器的套接字,指出伺服器端套接字的地址和埠號,然後就向伺服器端套接字提出連線請求。
連線確認:當伺服器端套接字監聽到或者說接收到客戶端套接字的連線請求時,就響應客戶端套接字的請求,建立一個新的執行緒,把伺服器端套接字的描述發 給客戶端,一旦客戶端確認了此描述,雙方就正式建立連線。而伺服器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連線請求。
這裡寫圖片描述

TCP/IP,SOCKET,HTTP,TCP,UDP聯絡和區別

http協議 對應於應用層
tcp協議 對應於傳輸層
ip協議 對應於網路層

三者本質上沒有可比性。
HTTP協議是基於TCP連線的。
TCP/IP是傳輸層協議,主要解決資料如何在網路中傳輸;而HTTP是應用層協議,主要解決如何包裝資料。
我們在傳輸資料時,可以只使用傳輸層(TCP/IP),但是那樣的話,由於沒有應用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用應用 層協議,應用層協議很多,有HTTP、FTP、TELNET等等,也可以自己定義應用層協議。WEB使用HTTP作傳輸層協議,以封裝HTTP文字資訊, 然後使用TCP/IP做傳輸層協議將它傳送到網路上。
Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。
socket是對TCP/IP協議的實現。socket只是通訊上一種通訊方式, TCP是一種通訊協議,我們所開發的程式大都都是基於TCP協議的socket通訊,當然也可以使用其他協議來通過socket通訊,比如 UDP, 更強悍的話,你可以自定義協議來通過socket進行網路通訊。

HTTP連線

HTTP協議即超文字傳送協議(HypertextTransfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。
HTTP連線最顯著的特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連線的過程稱為“一次連線”。
1)在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連線,在處理完本次請求後,就自動釋放連線。
2)在HTTP 1.1中則可以在一次連線中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。
由於HTTP在每次請求結束後都會主動釋放連線,因此HTTP連線是一種“短連線”,要保持客戶端程式的線上狀態,需要不斷地向伺服器發起連線請 求。通常的做法是即時不需要獲得任何資料,客戶端也保持每隔一段固定的時間向伺服器傳送一次“保持連線”的請求,伺服器在收到該請求後對客戶端進行回覆, 表明知道客戶端“線上”。若伺服器長時間無法收到客戶端的請求,則認為客戶端“下線”,若客戶端長時間無法收到伺服器的回覆,則認為網路已經斷開。

TCP連線

要想明白Socket連線,先要明白TCP連線。手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連線。TCP協議可以對上層網路提供介面,使上層網路資料的傳輸建立在“無差別”的網路之上。
建立起一個TCP連線需要經過“三次握手”:
第一次握手:客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,TCP連線一旦建立,在通訊雙方中的任何一方主 動關閉連線之前,TCP 連線都將被一直保持下去。斷開連線時伺服器和客戶端均可以主動發起斷開TCP連線的請求,斷開過程需要經過“四次握手”(過程就不細寫了,就是伺服器和客 戶端互動,最終確定斷開)

TCP 與 UDP

TCP (傳輸控制協議)
- 建立連線, 行程傳輸資料的通道
- 在連線中進行大資料傳輸(資料大小不受限制)
- 通過三次握手完成大連線, 是可靠協議, 安全送達
- 必須建立連線, 效率會稍低
UDP (使用者資料報協議)
- 將資料及源和目的封裝成資料包中, 不需要建立連線
- 每個資料報的大小限制在64K之內
- 因為無需連線, 因此是不可靠協議
- 不需要建立連線, 速度快

Socket連線與TCP連線

建立Socket連線時,可以指定使用的傳輸層協議,Socket可以支援不同的傳輸層協議(TCP或UDP),當使用TCP協議進行連線時,該Socket連線就是一個TCP連線。

Socket連線與HTTP連線

由於通常情況下Socket連線就是TCP連線,因此Socket連線一旦建立,通訊雙方即可開始相互發送資料內容,直到雙方連線斷開。但在實際網 絡應用中,客戶端到伺服器之間的通訊往往需要穿越多箇中間節點,例如路由器、閘道器、防火牆等,大部分防火牆預設會關閉長時間處於非活躍狀態的連線而導致 Socket 連線斷連,因此需要通過輪詢告訴網路,該連線處於活躍狀態。
而HTTP連線使用的是“請求—響應”的方式,不僅在請求時需要先建立連線,而且需要客戶端向伺服器發出請求後,伺服器端才能回覆資料。
很多情況下,需要伺服器端主動向客戶端推送資料,保持客戶端與伺服器資料的實時與同步。此時若雙方建立的是Socket連線,伺服器就可以直接將數 據傳送給客戶端;若雙方建立的是HTTP連線,則伺服器需要等到客戶端傳送一次請求後才能將資料傳回給客戶端,因此,客戶端定時向伺服器端傳送連線請求, 不僅可以保持線上,同時也是在“詢問”伺服器是否有新的資料,如果有就將資料傳給客戶端。

相關推薦

106.網路分層模型SOCKET/TCP/UDP/HTTP區別聯絡

簡介 本文主要描述了網路分層模型, 分為TCP/IP四層網路模型與OSI七層網路模型說明。還有TCP/IP, SOCKET, HTTP, TCP, UDP之間的聯絡和區別。 網路模型 TCP/IP四層網路模型 TCP/IP分層模型(TCP/IP

1、【網路程式設計】Socket/TCP/UDP/HTTP/HTTPS/網路分層模型

一、簡介 1、相關概念     TCP:傳送控制協議(Transmission Control Protocol)     UDP:使用者資料報協議 (UDP:User Datagram Protocol)     HTTP:全稱是HyperText Transfer Pro

網路分層模型資料傳輸流程

在網路體系中,分層的總體思想是從底層硬體提供的服務開始,然後增加一系列的層,每一層都提供更高階的服務,高層提供的服務使用低層提供的服務實現。 分層的優點:第一,它將建造網路這個問題分解為多個可處理的部

SOCKET, TCP/UDP, HTTP, FTP 淺析

net telnet 應用層 base 中間節點 簡單網絡管理協議 sock 協議 主動 SOCKET, TCP/UDP, HTTP, FTP (一)TCP/UDP,SOCKET,HTTP,FTP簡析 TCP/IP是個協議組,可分為三個層次:網絡層、傳

網路通訊——socket(TCP/IP).Http,同步非同步的區別

1首先說下同步和非同步的區別吧 同步:提交請求->等待伺服器處理->處理完畢返回 這個期間客戶端瀏覽器不能幹任何事 (比如 普通B/S模式) 非同步:請求通過事件觸發->伺服器處理

Socket,TCP,UDP,HTTP基本通訊原理OC版本Demo

非常通俗的例子->寄快遞 TCP和UDP是傳輸方式—> 例如空運,輪渡,陸運 HTTP,XMPP則是資料傳輸格式協議 –> 寄送的東西(吃的,用的,玩的。。。) socket理解為傳輸層和應用層之前的抽象物件,通過對TCP/IP傳世方式的封

ios面試題——TCPUDP區別聯絡

TCP是傳輸控制協議,提供的是面向連線、可靠的位元組流服務。當客戶的伺服器彼此交換資料前,必須先在雙方之間建立一個TCP連線,之後才能傳輸資料。TCP提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。 UDP是使用者資料報協議,是一個簡單的面

java 網路程式設計(Socket) TCP/UDP 總結案例

網路程式設計:關注的是底層的資料傳輸 網頁程式設計:資料的展示 1、基本概念 一、網路:將不同的計算機連線在一起區域網 都會網路 網際網路 二、地址:Ip地址確定網路上的絕對的地址位置   房子的地址 三、埠號(相當於房門):區分計算機上的軟體 相當於房門兩個位元組

TCP/IP協議、網路分層模型

網路程式設計, 用來實現網路互連的不同計算機上執行的程式間可以進行資料互動。 網路互連的不同計算機上、計算機上執行的程式間、進行資料互動。 網路模型: 計算機之間以何種規則進行通訊,就是網路模型研究的問題; TCP/IP參考模型,OSI參考模型;我們在應用層進行開發。

osi七層模型 tcp UDP http協議

ISO/OSIOSI(Open System Interconnect),即開放式系統互聯。 一般都叫OSI參考模型,是ISO(國際標準化組織)組織在1985年研究的網路互聯模型。該體系結構標準定義了網路互連的七層框架(物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用

java 網路 socket TCP / UDP / catch 語句塊捕捉到異常後,繼續執行語句塊後面的程式碼

java 網路 socket TCP / server 端 package test.java.Net; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStr

TCP,UDP,HTTP,IP,SOCKET

限制 -c 開始 java.net 現在 認識 sock 特性 鏈接 近日對各網絡協議進行了一番學習,宏觀認識上有收獲。 網絡由下往上分為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。(引用)IP 協議對應於網絡層,TCP/UDP協議對應於傳輸層, HTTP協

day28 網路協議OSI socket模組

反射都是操作物件中的__dict__的內容 class Student: def study(self): print("正在學習....") stu = Student() if not hasattr(stu,"name"): setattr(stu,"name","比格") print(st

自然語言處理(四)神經網路語言模型詞向量

神經網路語言模型 用句子 S S S的概率

linux網路程式設計之用socket實現簡單客戶端服務端的通訊(基於TCP

一、介紹基於TCP協議通過socket實現網路程式設計常用API 1、讀者如果不是很熟悉,可以先看我之前寫的幾篇部落格,有socket,地址結構的理解,更加方便讀者理解 地址分別是: 2、socket(TCP)程式設計API簡介 1)、socket int s

linux網路程式設計之用socket實現簡單客戶端服務端的通訊(基於UDP

1、sendto和recvfrom函式介紹 sendto(經socket傳送資料) 相關函式 send , sendmsg,recv , recvfrom , socket 表頭檔案 #include < sys/types.h >#includ

socket協議 http協議的區別,長短連線,tcp/udp協議區別

socket http協議的區別簡單來說,我們平常瀏覽的網頁如果已http://開頭的都是http協議傳輸到我們的瀏覽器的,而http是基於socket之上的,就是說http攜帶資料,socket提供傳輸的動力。socket不是一個協議,只是一個介面或者說是api,socke

Android使用Socket(Tcp/Udp)協議進行資料傳輸(傳輸大檔案)

Socket是什麼:所謂Socket 通常也稱作”套接字”,用於描述IP地址和埠,是一個通訊鏈的控制代碼。應用程式通常通過”套接字”向網路發出請求或者應答網路請求。Socket內部又有兩種協議(Tcp/Udp),我們來說說其各自的特點。 先來說說網路程式設

高效能網路程式設計總結TCP/IP Sockets程式設計(C語言實現) (第2版)》 程式碼下載(連結以及檔案打包)

這篇文章將試圖說明應用程式如何接收網路上傳送過來的TCP訊息流,由於篇幅所限,暫時忽略ACK報文的回覆和接收視窗的滑動。 為了快速掌握本文所要表達的思想,我們可以帶著以下問題閱讀: 1、應用程式呼叫read、recv等方法時,socket套接字可以設定為阻塞或者非阻塞,這兩種方式是如何工作的? 2、

黑馬程式設計師---計算機網路分層結構原則

------- android培訓、java培訓、期待與您交流! ----------               大學期間計算機網路課上,老師說常用的分層結構是5層結構,培訓視訊上一般說的是7層,計算機網路是如何劃分層次和分層的原則? 計算機網路分層結構:所謂網路的體系