TCP/IP、Http、Socket的區別

來源:互聯網
上載者:User

標籤:不為   gre   基礎   即時監控   訊號   pad   子網   線上狀態   相互   

網路這塊越瞭解感覺知道的越少,所以學習還是要繼續,,,,,,

Socket

0.幾個名詞:

       IPC—>Inter Process Communication,處理序間通訊

       socket —> 通訊端

       TCP—>Transmission Control Protocol傳輸控制通訊協定,

              提供的是連線導向、可靠的位元組流服務。客戶和伺服器彼此交換資料前,必須先在雙方之間建立一個TCP串連,之後才能傳輸資料。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狀態,完成三向交握

       UDP:—>User Datagram Protocol,使用者資料包通訊協定

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

       TCP/IP—>傳輸控制通訊協定/網間協議,

              定義了主機如何連入網際網路及資料如何再它們之間傳輸的標準,這是一個協議族(很多的協議….)

              TCP/IP協議族包含了很多功能各異的子協議。TCP/IP層次模型共分為四層:應用程式層、傳輸層、網路層、資料連結層。(異於7層模型)

       IP—>Internet Protocol,網路互連協議

              是能使串連到網上的所有電腦網路實現相互連信的一套規則,規定了電腦在網際網路上進行通訊時應當遵守的規則。

       IP地址—>Internet Protocol Address,網際協議地址;電腦在網路上的標識.

              靜態IP地址:固定不變的IP地址,需要使用者自己手動設定.

                 動態IP地址:通過DHCP協議自動產生的IP地址.

              子網路遮罩:與IP地址配合使用判斷兩台電腦是否位於同一個子網路.

                     DNS伺服器:可以將網域名稱(網址)轉換成IP地址.

          DHCP協議—>通過DHCP協議,使用者獲得原生動態IP地址,子網路遮罩,網關,DNS伺服器等.

                

       ARP協議—> Address Resolution Protocol,位址解析通訊協定

              是根據IP地址擷取物理地址的一個TCP/IP協議;通過IP地址獲得MAC地址.有了ARP協議,可以得到同一個子網路內的主機MAC地址.就可以把資料包發送到任意一台主機.不同的子網路之間: 如果兩台主機不在同一個子網路,無法得到對方的MAC地址,只能將資料包發送到兩個子網路連接處的“網關”(gateway),讓網關去處理.

       MAC地址—> 網卡地址,網卡的唯一標識

       連接埠號碼—>傳輸層給每一個使用網卡的應用程式一個編號,即“連接埠”號,區間0-65536

              可以通過連接埠號碼找到對應的應用程式;

       HTTP串連—->HTTP協議即超文本傳送協議(Hypertext Transfer Protocol ),

       是Web連網的基礎,也是手機連網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用,HTTP串連最顯著的特點是用戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放串連。從建立串連到關閉串連的過程稱為“一次串連”。

       1)在HTTP 1.0中,用戶端的每次請求都要求建立一次單獨的串連,在處理完本次請求後,就自動釋放串連。

       2)在HTTP 1.1中則可以在一次串連中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。

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

 

 

1.OSI 七層模型

由下至上

       物理層

              ①作用:串連電腦,負責傳送’0’和’1’的電訊號

              ②典型裝置:光纖,同軸電纜,雙絞線,等

       資料連結層

              ①作用:處理電訊號,乙太網路協議(資料包)把資料分組。即把電訊號轉化為可以在網路中使用的位元據而後進行傳輸,在該層資料以幀為處理單位.

              ②典型裝置:橋接器、交換器、中繼器等

       網路層

              ①作用:找到網路中的”唯一”的電腦,建立 主機(IP)—>主機(IP)的串連;

                 也可是看作是:基於網路層地址(IP地址)進行不同網路系統間的直接選取

              ②典型裝置:路由器

              ③如果處於同一個子網路,採用廣播的方式發送資料包.如果處於不同的子網路,就採用“路由”的方式發送資料包.

       傳輸層

              ①作用:網路層只能讓電腦接收和發送資訊,但是並不知道要傳遞給哪一個應用程式。傳輸層給每一個使用網卡的應用程式一個編號,即“連接埠”號;0-65536;建立“連接埠/應用程式”到“連接埠/應用程式”之間的通訊。

              ②典型裝置:終端裝置(PC、手機、平板等)

              ③Socket           

                     Socket == 主機 + 連接埠 ;

                     最常見的socket編程就是:TCP/IP編程;

                     需要特別注意的是:socket只是一個通訊模型,不屬於網路七層協議.

                    

       會話層

              ①作用:為了實現自動收發資料,自動定址功能;引入了會話層.會話層的作用,就是建立和管理應用程式之間的通訊.會話層不參與具體的傳輸,它提供包括”訪問驗證”和”會話管理”在內的建立和維護應用之間通訊的機制。如伺服器驗證使用者登入便是由會話層完成的。

              ②典型裝置:終端裝置(PC、手機、平板等)

 

       展示層

              ①作用:解決不同系統之間的通訊問題,可以看作一個”翻譯官”.

              ②典型裝置:終端裝置(PC、手機、平板等)

       應用程式層

              ①作用:規定了不同應用程式的資料格式.

              ②典型裝置:終端裝置(PC、手機、平板等)

              http協議:超文字傳輸通訊協定 (HTTP)

           file協議:檔案傳輸通訊協定

           mail協議:郵件協議

 

2.什麼是socket?.socket 是用來幹什麼的?

       兩個進程(程式)如果需要進行通訊最基本的一個前提能夠唯一標示一個進程,在本地進程通訊中我們可以使用PID(progress ID)來唯一標示一個進程,但PID只在本地唯一,網路中的兩個進程PID衝突幾率很大,這時候我們需要另闢它徑了,我們知道IP層的ip地址可以唯一標示主機,而TCP層協議和連接埠號碼可以唯一標示主機的一個進程,這樣我們可以利用ip地址+協議+連接埠號碼唯一標示網路中的一個進程。

       能夠唯一標示網路中的進程後,它們就可以利用socket進行通訊了,什麼是socket呢?我們經常把socket翻譯為通訊端,socket是在應用程式層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象為幾個簡單的介面供應用程式層調用已實現進程在網路中通訊。

 

3.Http與Socket串連究竟有什麼區別?

       TCP/IP是個協議組,可分為三個層次:網路層、傳輸層和應用程式層。在網路層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。在傳輸層中有TCP協議與UDP協議。在應用程式層有FTP、HTTP、TELNET、SMTP、DNS等協議。因此,HTTP本身就是一個協議,是從Web伺服器傳輸超文本到本地瀏覽器的傳送協議。IP協議對應於網層,TCP協議對應於傳輸層,而HTTP協議對應於應用程式層,三者從本質上來說沒有可比性。

       Socket是應用程式層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket介面後面,對使用者來說,一組簡單的介面就是全部,讓Socket去組織資料,以符合指定的協議。

      

4、SOCKET原理

4.1通訊端(socket)概念

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

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

4.2 建立socket串連

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

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

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

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

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

 
   

 

      

      

5、SOCKET串連與TCP串連

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

6、Socket串連與HTTP串連

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

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

       很多情況下,需要伺服器端主動向用戶端推送資料,保持用戶端與伺服器資料的即時與同步。此時若雙方建立的是Socket串連,伺服器就可以直接將資料傳送給用戶端;若雙方建立的是HTTP串連,則伺服器需要等到用戶端發送一次請求後才能將資料傳回給用戶端,因此,用戶端定時向伺服器端發送串連請求,不僅可以保持線上,同時也是在“詢問”伺服器是否有新的資料,如果有就將資料傳給用戶端。

7、Socket和Http區別

       HTTP是基於要求-回應形式並且是短串連,並且是無狀態的協議。針對其無狀態特性,在實際應用中又需要有狀態的形式,因此一般會通過session/cookie技術來解決此問題。

       Socket:Socket不屬於協議範疇,而是一個調用介面(API),Socket是對TCP/IP協議的封裝,通過調用Socket,才能使用TCP/IP協議。Socket串連是長串連,理論上用戶端和伺服器端一旦建立串連將不會主動斷開此串連。Socket串連屬於要求-回應形式,服務端可主動將訊息推送給用戶端。

8、TCP和UDP的區別

       1。TCP是面向連結的,雖然說網路的不安全不穩定特性決定了多少次握手都不能保證串連的可靠性,但TCP的三向交握在最低限度上(實際上也很大程度上保證了)保證了串連的可靠性;而UDP不是連線導向的,UDP傳送資料前並不與對方建立串連,對接收到的資料也不發送確認訊號,發送端不知道資料是否會正確接收,當然也不用重發,所以說UDP是不需連線的、不可靠的一種資料轉送協議。

       2。也正由於1所說的特點,使得UDP的開銷更小資料轉送速率更高,因為不必進行收發資料的確認,所以UDP的即時性更好。

       知道了TCP和UDP的區別,就不難理解為何採用TCP傳輸協議的MSN比採用UDP的QQ傳輸檔案慢了,但並不能說QQ的通訊是不安全的,因為程式員可以手動對UDP的資料收發進行驗證,比如發送方對每個資料包進行編號然後由接收方進行驗證啊什麼的,即使是這樣,UDP因為在底層協議的封裝上沒有採用類似TCP的“三向交握”而實現了TCP所無法達到的傳輸效率。

TCP/IP、Http、Socket的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.