先來乙個講tcp、udp和http關係的
1、tcp/ip是個協議組,可分為三個層次:網路層、傳輸層和應用層。
在網路層有ip協議、icmp協議、arp協議、rarp協議和bootp協議。
在傳輸層中有tcp協議與udp協議。
在應用層有ftp、http、telnet、smtp、dns等協議。
因此,http本身就是乙個協議,是從web伺服器傳輸超文字到本地瀏覽器的傳送協議。
tcp 是基於 tcp 協議實現的網路文字協議,屬於傳輸層。
udp 是和tcp 對等的,屬於傳輸層,udp 和 tcp 有重要的區別。
2、http協議是建立在請求/響應模型上的。首先由客戶建立一條與伺服器的tcp鏈結,並傳送乙個請求到伺服器,請求中包含請求方法、uri、協議版本以及相關的mime樣式的訊息。伺服器響應乙個狀態行,包含訊息的協議版本、乙個成功和失敗碼以及相關的mime式樣的訊息。
http/1.0為每一次http的請求/響應建立一條新的tcp鏈結,因此乙個包含html內容和的頁面將需要建立多次的短期的tcp鏈結。一次tcp鏈結的建立將需要3次握手。
另外,為了獲得適當的傳輸速度,則需要tcp花費額外的迴路鏈結時間(rtt)。每一次鏈結的建立需要這種經常性的開銷,而其並不帶有實際有用的資料,只是保證鏈結的可靠性,因此http/1.1提出了可持續鏈結的實現方法。http/1.1將只建立一次tcp的鏈結而重複地使用它傳輸一系列的請求/響應訊息,因此減少了鏈結建立的次數和經常性的鏈結開銷。
這裡有必要再講一下三次握手的過程:
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_sent狀態,等待伺服器確認;syn:同步序列編號(synchronize sequence numbers)。
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;ack:確認字元(acknowledgement)
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。
3、結論:雖然http本身是乙個協議,但其最終還是基於tcp的。不過,目前,有人正在研究基於tcp+udp混合的http協議。
socket是什麼呢?
socket是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp/ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。
tcp(transmission control protocol,傳輸控制協議)是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。乙個tcp連線必須要經過三次「對話」才能建立起來,其中的過程非常複雜,我們這裡只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三次對話的簡單過程:主機a向主機b發出連線請求資料報:「我想給你發資料,可以嗎?」,這是第一次對話;主機b向主機a傳送同意連線和要求同步(同步就是兩台主機乙個在傳送,乙個在接收,協調工作)的資料報:「可以,你什麼時候發?」,這是第二次對話;主機a再發出乙個資料報確認主機b的要求同步:「我現在就發,你接著吧!」,這是第三次對話。三次「對話」的目的是使資料報的傳送和接收同步,經過三次「對話」之後,主機a才向主機b正式傳送資料。
udp(user data protocol,使用者資料報協議)是與tcp相對應的協議。它是面向非連線的協議,它不與對方建立連線,而是直接就把資料報傳送過去!
udp適用於一次只傳送少量資料、對可靠性要求不高的應用環境。比如,我們經常使用「ping」命令來測試兩台主機之間tcp/ip通訊是否正常,其實「ping」命令的原理就是向對方主機傳送udp資料報,然後對方主機確認收到資料報,如果資料報是否到達的訊息及時反饋回來,那麼網路就是通的。例如,在預設狀態下,一次「ping」操作傳送4個資料報(如圖2所示)。大家可以看到,傳送的資料報數量是4包,收到的也是4包(因為對方主機收到後會發回乙個確認收到的資料報)。這充分說明了udp協議是面向非連線的協議,沒有建立連線的過程。正因為udp協議沒有連線的過程,所以它的通訊效果高;但也正因為如此,它的可靠性不如tcp協議高。qq就使用udp發訊息,因此有時會出現收不到訊息的情況。
tcp協議和udp協議的差別
tcp udp
是否連線: tcp面向連線 udp面向非連線
傳輸可靠性: tcp可靠 udp不可靠
應用場合: tcp傳輸大量資料 udp少量資料
速度: tcp慢 udp快
參考文章:
TCP UDP以及HTTP的簡單講解
先來乙個講tcp udp和http關係的 1 tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有ftp http telnet smtp dns等協議。因此,htt...
TCP UDP以及HTTP的簡單講解
先來乙個講tcp udp和http關係的 1 tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有ftp http telnet smtp dns等協議。因此,htt...
TCP UDP以及HTTP的關係
先來乙個講tcp udp和http關係的 1 tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有ftp http telnet smtp dns等協議。因此,htt...