1. 程式人生 > >TCP/IP協議,HTTP協議

TCP/IP協議,HTTP協議

1、TCP

TCP協議是一種面向連線的、 可靠的、基於位元組流的運輸層通訊協議。通過TCP協議傳輸,得到的是一個順序的無差錯的資料流。

三次握手

       在TCP/IP協議中,TCP協議提供可靠的連線服務,連線是通過 三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認並交換TCP視窗大小資訊。

     (1)第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=x,並將該資料包傳送給Server,Client進入SYN_SENT狀態,等待Server確認。 

     (2)第二次握手:Server收到資料包後由標誌位SYN=1知道Client請求建立連線,Server將標誌位SYN和ACK都置為1,ack (number )=x+1,隨機產生一個值seq=y,並將該資料包傳送給Client以確認連線請求,Server進入SYN_RCVD狀態。 

     (3)第三次握手:Client收到確認後,檢查ACK是否為Client傳送的seq+1,即x+1;如果正確則將標誌位ACK置為1,ack=y+1,並將該資料包傳送給Server。Server檢查ack是否為Server傳送的seq+1,即y+1,如果正確則連線建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手。 

 

三次握手的原因:

為了防止已失效的連線請求報文段突然又傳送到了服務端,因而 產生 錯誤。

四次分手

當客戶端和伺服器通過三次握手建立了TCP連線以後,當資料傳送完畢,肯定是要斷開TCP連線的啊。那對於TCP的斷開連線,這裡就有了神祕的“四次分手”。 
  (1)第一次分手:客戶端設定seq=x,向服務端傳送一個FIN報文段;此時,主機1進入FIN_WAIT_1狀態;這表示客戶端沒有資料要傳送給服務端了; 
  (2)第二次分手:服務端收到了客戶端傳送的FIN=1,向客戶端回覆ACK=1,ack=收到的seq+1=x+1,然後客戶端進入FIN_WAIT_2狀態;服務端告訴客戶端,在等待自己去關閉連線; 
  (3)第三次分手:服務端向客戶端傳送FIN=1,設定seq=y,請求關閉連線,同時服務端進入LAST_ACK狀態; 
  (4)第四次分手:客戶端收到服務端傳送的FIN,向服務端傳送ACK=1,ack=收到的seq+1=y+1,然後主機1進入TIME_WAIT狀態;服務端收到客戶端的ACK報文段以後,就關閉連線;此時,客戶端等待2MSL後依然沒有收到回覆,則證明Server端已正常關閉,客戶端也關閉連線。

四次分手的原因:

TCP是全雙工模式,當客戶端發出FIN報文段時,表示客戶端沒有資料要傳送了,告訴服務端它的資料已經全部發送完畢了,這時客戶端還可以接受來自服務端的資料。當服務端返回ACK報文段時,表示它已經知道客戶端沒有資料傳送了,但是服務端還是可以傳送資料到客戶端的。當服務端也傳送了FIN報文段時,這時表示服務端也沒有資料要傳送了,就告訴客戶端它也沒有資料要傳送了,就會中斷這次TCP連線。

2、UDP

UDP是一種 無連線的協議,每個資料報都是一個獨立的資訊,包括完整的源地址或目的地址,它在網路上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。

應用:當對網路通訊質量要求不高的時候,要求網路通訊速度可以儘可能的快,這時就可以使用UDP。比如,QQ語音,QQ視訊

UDP比TCP快的的原因:

1、TCP需要三次握手

2、TCP有擁塞控制,控制流量等機制

3、對資料內容正確性的校驗會佔用計算機的處理時間和網路的頻寬,因此傳輸效率不高

TCP比UDP可靠的原因:

1、TCP是面向有連線的,建立連線之後才傳送資料,而UDP是不管對方存不存在都發送資料

2、TCP有確認機制,接收端每接收到 一個正確包都會迴應給傳送端,超時或者資料包不完整的話 傳送端會重傳。UDP沒有,因此可能丟包,沒有TCP可靠。

3、HTTP

HTTP協議即超文字傳送協議,是一個應用層協議,由請求和響應構成,是一個標準的客戶端 伺服器模型,是web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。HTTP連線最顯著的特點是:客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連線的過程稱為“一次連線”。



模型

TCP/IP協議與Http協議的區別

TCP/IP協議是傳輸層協議,主要解決資料如何在網路中 傳輸,而HTTP是應用層協議,主要解決如何包裝資料。