android 網路編程--socket tcp/ip udp http之間的關係

來源:互聯網
上載者:User

標籤:

網路七層由下往上分別為物理層、資料連結層、網路層、傳輸層、會話層、展示層和應用程式層,一般編程人員接觸最多的就是應用程式層和運輸層,再往下的就是所謂的媒體層了,不是我們研究的對象。

下面是應用程式層、運輸層,網路層、鏈路層通訊協定概圖。我們經常接觸到的一般是:

http協議:應用程式層協議,並且http協議是基於tcp串連的,主要解決的是如何封裝協議的

tcp協議:運輸層協議,通常也叫做tcp/ip協議,主要解決資料如何在網路中傳輸

udp協議:運輸層協議,使用者資料包通訊協定,不可靠的協議,只負責把應用程式層的協議的資料傳送到ip層的資料報,而不管資料是否到達。

ip協議:網路層。

socket串連:長串連

http串連:短串連

下面詳細介紹網路通訊中的幾個概念與原理:

(1)Socket(通訊端):

通訊端(socket)是通訊的基石,是支援TCP/IP協議的網路通訊的基本操作單元。它是網路通訊過程中端點的抽象表示,包含進行網路通訊必須的五種資訊:串連使用的協議,本地主機的IP地址,本地進程的協議連接埠,遠地主機的IP地址,遠地進程的協議連接埠。

應用程式層通過傳輸層進行資料通訊時,TCP會遇到同時為多個應用程式進程提供並發服務的問題。多個TCP串連或多個應用程式進程可能需要通過同一個 TCP協議連接埠傳輸資料。為了區別不同的應用程式進程和串連,許多電腦作業系統為應用程式與TCP/IP協議互動提供了通訊端(Socket)介面。應用程式層可以和傳輸層通過Socket介面,區分來自不同應用程式進程或網路連接的通訊,實現資料轉送的並發服務。

ps:說白了,socket就是一組調用介面(API),封裝了做tcp/ip開發的網路介面,通過Socket,我們才能使用TCP/IP協議。

(2)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串連的請求,斷開過程需要經過“四次握手”。

(3)Socket串連:

由於通常情況下Socket串連就是TCP串連,因此Socket串連一旦建立,通訊雙方即可開始相互發送資料內容,直到雙方串連斷開。但在實際網路應用中,用戶端到伺服器之間的通訊往往需要穿越多個中間節點,例如路由器、網關、防火牆等,大部分防火牆預設會關閉長時間處於非活躍狀態的串連而導致 Socket 串連斷連,因此需要通過輪詢告訴網路,該串連處於活躍狀態。

建立Socket串連至少需要一對通訊端,其中一個運行於用戶端,稱為ClientSocket ,另一個運行於伺服器端,稱為ServerSocket 。

通訊端之間的串連過程分為三個步驟:伺服器監聽,用戶端請求,串連確認。

1。伺服器監聽:伺服器端通訊端並不定位具體的用戶端通訊端,而是處於等待串連的狀態,即時監控網路狀態,等待用戶端的串連請求。

2。用戶端請求:指用戶端的通訊端提出串連請求,要串連的目標是伺服器端的通訊端。為此,用戶端的通訊端必須首先描述它要已連線的服務器的通訊端,指出伺服器端通訊端的地址和連接埠號碼,然後就向伺服器端通訊端提出串連請求。

3。串連確認:當服 務器端通訊端監聽到或者說接收到用戶端通訊端的串連請求時,就響應用戶端通訊端的請求,建立一個新的線程,把伺服器端通訊端的描述發給用戶端,一旦用戶端 確認了此描述,雙方就正式建立串連。而伺服器端通訊端繼續處於監聽狀態,繼續接收其他用戶端通訊端的串連請求。

(4)Http串連

HTTP協議是建立在TCP協議之上的一種應用,HTTP串連使用的是“請求—響應”的方式,不僅在請求時需要先建立串連,而且需要用戶端向伺服器發出請求後,伺服器端才能回複資料。在請求結束後,會主動釋放串連。從建立串連到關閉串連的過程稱為“一次串連”。由於HTTP在每次請求結束後都會主動釋放串連,因此HTTP串連是一種“短串連”,要保持用戶端程式的線上狀態,需要不斷地向伺服器發起串連請求。通常的做法是即時不需要獲得任何資料,用戶端也保持每隔一段固定的時間向伺服器發送一次“保持串連”的請求,伺服器在收到該請求後對用戶端進行回複,表明知道用戶端“線上”。若伺服器長時間無法收到用戶端的請求,則認為用戶端“下線”,若用戶端長時間無法收到伺服器的回複,則認為網路已經斷開。

(5)TCP/IP協議和Http協議之間的關係

TPC/IP協議是傳輸層協議,主要解決資料 如何在網路中傳輸,而HTTP是應用程式層協議,主要解決如何封裝資料,而socket則是對TCP/IP協議的封裝和應用(程式員層面上)。實際上http協議就是建立在tcp/ip協議之上的。關於TCP/IP和HTTP協議的關係:

“我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如 果沒有應用程式層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用程式層協議,應用程式層協議有很多,比如HTTP、FTP、TELNET等,也 可以自己定義應用程式層協議。WEB使用HTTP協議作應用程式層協議,以封裝HTTP文本資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。”

(6)Socket和TCP/IP協議之間的關係

socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用介面(API),通過Socket,我們才能使用TCP/IP協議。 實際上,Socket跟TCP/IP協議沒有必然的聯絡。Socket編程介面在設計的時候,就希望也能適應其他的網路通訊協定。所以說,Socket的出現 只是使得程式員更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函數介面,比如create、 listen、connect、accept、send、read和write等等。網路有一段關於socket和TCP/IP協議關係的說法比較容易理 解:

“TCP/IP只是一個協議棧,就像作業系統的運行機制一樣,必須要具體實現,同時還要提供對外的操作介面。這個就像作業系統會提供標準的編程介面,比如win32編程介面一樣,TCP/IP也要提供可供程式員做網路開發所用的介面,這就是Socket編程介面。”

(7)tcp/ip協議, http協議,socket三者之間的關係

實際上,傳輸層的TCP是基於網路層的IP協議的,而應用程式層的HTTP協議又是基於傳輸層的TCP協議的,而Socket本身不算是協議,它只是提供了一個針對TCP或者UDP編程的介面。

(8)tcp協議和udp協議之間的區別

TCP --- 傳輸控制通訊協定,提供的是連線導向、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立一個TCP串連,之後才能傳輸資料。TCP提供逾時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。 理想狀態下,TCP串連一旦建立,在通訊雙方中的任何一方主動關閉串連前,TCP 串連都將被一直保持下去。中斷連線時伺服器和用戶端均可以主動發起斷開TCP串連的請求 

UDP --- 使用者資料包通訊協定,是一個不需連線的簡單的面向資料報的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的資料報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸資料報前不用在客戶和伺服器之間建立一個串連,且沒有逾時重發等機制,故而傳輸速度很快

TCP發送的包有序號,對方收到包後要給一個反饋,如果超過一定時間還沒收到反饋就自動執行逾時重發,因此TCP最大的優點是可靠。一般網頁(http)、郵件(SMTP)、遠端連線(Telnet)、檔案(FTP)傳送就用TCP  

UDP是面向訊息的協議,通訊時不需要建立串連,資料的傳輸自然是不可靠的,UDP一般用於多點通訊和即時的資料業務,比如語音廣播、視頻、QQ、TFTP(簡單檔案傳送)、SNMP(簡易網路管理通訊協定)、RTP(即時傳送協議)RIP(路由資訊協議,如報告股票市場,航空資訊)、DNS(網域名稱解釋)。注重速度流暢。 

 (9)FTP協議

檔案傳輸通訊協定(File Transfer Protocol, FTP)是TCP/IP網路上兩台電腦傳送檔案的協議,FTP是在TCP/IP網路和INTERNET上最早使用的協議之一,它屬於網路通訊協定組的應用程式層。FTP客戶機可以給伺服器發出命令來下載檔案,上傳檔案,建立或改變伺服器上的目錄。

android 網路編程--socket tcp/ip udp http之間的關係

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.