TCP HTTP SOCKET UDP IP

一、 TCP

TCP(Transmission Control Protocol) 傳輸控制協議。TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握確認建立一個連接。位碼即tcp標誌位,有6種 標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)Sequence number(順序號碼) Acknowledge number(確認號碼)。

建立一個tcp連接需要三次握手

三次握手:握手過程中使用了 TCP 的標誌(flag) —— SYN(synchronize) 和ACK(acknowledgement) 。

第一次握手:建立連接時,客戶端A發送SYN包(SYN=j)到服務器B,並進入SYN_SEND狀態,等待服務器B確認。

第二次握手:服務器B收到SYN包,必須確認客戶A的SYN(ACK=j+1),同時自己也發送一個SYN包(SYN=k),即SYN+ACK包,此時服務器B進入SYN_RECV狀態。

第三次握手:客戶端A收到服務器B的SYN+ACK包,向服務器B發送確認包ACK(ACK=k+1),此包發送完畢,完成三次握手。

關閉需要四次握手

由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味着這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據。先進行關閉的一方將執行主動關閉,而另一方被動關閉。

客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。

服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。

服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A。

客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1。

(4)、TCP使用滑動窗口機制來進行流量控制。

建立連接時,各端分配一個緩衝區用來存儲接收的數據,並將緩衝區的尺寸發送給另一端。接收方發送的確認消息中包含了自己剩餘的緩衝區尺寸。剩餘緩衝區空間的數量叫做窗口。其實就是建立連接的雙虎互相知道彼此剩餘的緩衝區大小。

(5)、擁塞控制

擁塞控制:防止過多的數據注入到網路中,這樣可以使網絡中的路由器或鏈路不至於阻塞。擁塞控制是一個全局性的過程,和流量控制不同,流量控制是點對點的控制。

1、慢開始:發送方維持一個叫做擁塞窗口cwnd(congestion window)的狀態變量。擁塞窗口的大小取決於網絡的擁塞程度,並且動態的變化。發送方讓自己的發送窗口等於擁塞窗口,另外考慮到接收方的接收能力,發送窗口可能小於擁塞窗口。思路就是:不要一開始就發送大量的數據,先試探一下網絡的擁塞程度,也就是說由小到大增加擁塞窗口的大小。

爲了防止cwnd增長過大引起網絡擁塞,還需要設置一個慢開始門限ssthresh狀態變量。 ssthresh的方法如下:

當cwnd < ssthresh時,開始使用慢開始算法;當cwnd > ssthresh, 改用擁塞避免算法;當cwnd = ssthresh時,慢開始與擁塞算法任意。

2.擁塞避免:

擁塞避免算法讓擁塞窗口緩慢增長,即每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,而不是加倍,這樣擁塞窗口按照線性規律緩慢增長。無論是在慢開始階段還是在擁塞避免階段,只要發送方判斷網絡出現擁塞(其根據就是沒有收到確認,雖然沒有收到確認可能是其他原因的分組丟失,但是因爲⽆法判定,所以都當作擁塞處理),就把慢開始門限設置爲出現擁塞時的發送窗口的一半,然後把擁塞窗口設置爲1,執行慢開始算法:

此外,還有快速重傳和快速恢復,停止-等待協議,回退N幀協議,選擇重傳協議等。

二、 HTTP

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。

HTTP連接最顯著的特點是客戶端發送的每次請求都需要服務器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱爲“一次連接”。

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

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

3 ) 在HTTP2.0中,採用二進制格式而非文本格式,完全多路複用的,而非有序並阻塞的——只需一個連接即可實現並行。

由於HTTP在每次請求結束後都會主動釋放連接,因此HTTP連接是一種“短連接”,要保持客戶端程序的在線狀態,需要不斷地向服務器發起連接請求。

通常的做法是即使不需要獲得任何數據,客戶端也保持每隔一段固定的時間向服務器發送一次“保持連接”的請求,服務器在收到該請求後對客戶端進行回覆,表明知道客戶端“在線”。若服務器長時間無法收到客戶端的請求,則認爲客戶端“下線”,若客戶端長時間無法收到服務器的回覆,則認爲網絡已經斷開。

HTTP協議,通常來說是建立在TCP之上的應用,之所以用“通常”,是因爲HTTP協議中,並沒有規定必須使用TCP/IP協議或支持TCP/IP協議支持的層。事實上,HTTP可以在任何互聯網協議上,或其他網絡上實現。HTTP假定其下層協議提供可靠的傳輸。因此,任何能夠提供這種保證的協議都可以被其使用。因此也就是其在TCP/IP協議族使用TCP作爲其傳輸層。

HTTP協議是在TCP協議之上的,所以建立一個HTTP連接就需要一次三次握手的過程。

三、 Socket

套接字(socket)是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議口。

應用層通過傳輸層進行數據通信時,TCP會遇到同時爲多個應用程序進程提供併發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個 TCP協議端口傳輸數據。爲了區別不同的應用程序進程和連接,許多計算機操作系統爲應用程序與TCP/IP協議交互提供了套接字(Socket)接口。應用層可以和傳輸層通過Socket接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的併發服務。

四、 IP

IP是英文Internet Protocol(網絡之間互連的協議)的縮寫,中文簡稱爲“網協”,也就是爲計算機網絡相互連接進行通信而設計的協議。在因特網中,它是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在因特網上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守 IP協議就可以與因特網互連互通。IP地址具有唯一性,根據用戶性質的不同,可以分爲5類。另外,IP還有進入防護,知識產權,指針寄存器等含義。

IP是怎樣實現網絡互連設備,如以太網、分組交換網等,它們相互之間不能互通,不能互通的主要原因是因爲它們所傳送數據的基本單元(技術上稱之爲“幀”)的格式不同。IP協議實際上是一套由軟件、程序組成的協議軟件,它把各種不同“幀”統一轉換成“IP數據包”格式,這種轉換是因特網的一個最重要的特點,使所有各種計算機都能在因特網上實現互通,即具有“開放性”的特點。

IP協議中還有一個非常重要的內容,那就是給因特網上的每臺計算機和其它設備都規定了一個唯一的地址,叫做“IP 地址”。由於有這種唯一的地址,才保證了用戶在連網的計算機上操作時,能夠高效而且方便地從千千萬萬臺計算機中選出自己所需的對象來。如今電信網正在與 IP網走向融合,以IP爲基礎的新技術是熱門的技術,如用IP網絡傳送話音的技術(即VoIP)就很熱門,其它如IP overATM、IPoverSDH、IP over WDM等等,都是IP技術的研究重點。

五、 UDP

無連接協議,也稱透明協議,也位於傳輸層。

與TCP的區別:

1) TCP提供面向連接的傳輸,通信前要先建立連接(三次握手機制); UDP提供無連接的傳輸,通信前不需要建立連接。

2) TCP提供可靠的傳輸(有序,無差錯,不丟失,不重複); UDP提供不可靠的傳輸。

3) TCP面向字節流的傳輸,因此它能將信息分割成組,並在接收端將其重組; UDP是面向數據報的傳輸,沒有分組開銷。

4) TCP提供擁塞控制和流量控制機制; UDP不提供擁塞控制和流量控制機制。

https://www.cnblogs.com/jking10/p/5525519.html

https://blog.csdn.net/striveb/article/details/84063712

https://blog.csdn.net/guyan0319/article/details/79404216

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章