淺談HTTP協議與TCP協議


HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送議。

主要特點:

1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。

2、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

3.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。

4.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

TCP(Transmission Control Protocol 傳輸控制協議)是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握手確認建立一個連接:

TCP三次握手的過程如下:

1、請求:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;

2、應答:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

3、再次確認:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

一個完整的三次握手也就是 請求---應答---再次確認;

三次握手完成,TCP客戶端和服務器端成功地建立連接,可以開始傳輸數據了。

而斷開連接則需要四次握手。整個過程如下圖所示:

建立連接的過程

首先Client端發送連接請求報文,Server段接受連接后回復ACK報文,並為這次連接分配資源。Client端接收到ACK報文后也向Server段發生ACK報文,並分配資源,這樣TCP連接就建立了。

 

斷開連接的過程

斷開連接端可以是Client端,也可以是Server端。假設Client端發起中斷連接請求,就先發送FIN報文。Server端接到FIN報文后,但是如果還有數據沒有發送完成,則不必急着關閉Socket,可以繼續發送數據。所以服務器端先發送ACK,告訴Client端:請求已經收到了,但是我還沒准備好,請繼續等待停止的消息。這個時候Client端就進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端確定數據已發送完成,則向Client端發送FIN報文,告訴Client端:服務器這邊數據發完了,准備好關閉連接了。Client端收到FIN報文后,就知道可以關閉連接了,但是他還是不相信網絡,所以發送ACK后進入TIME_WAIT狀態, Server端收到ACK后,就知道可以斷開連接了。Client端等待了2MSL后依然沒有收到回復,則證明Server端已正常關閉,最后,Client端也可以關閉連接了至此,TCP連接就已經完全關閉了!關閉連接的過程如下圖所示:

 

 

 

二者的聯系:

TCP是底層通訊協議,定義的是數據傳輸和連接方式的規范
HTTP是應用層協議,定義的是傳輸數據的內容的規范
HTTP協議中的數據是利用TCP協議傳輸的,所以支持HTTP也就一定支持TCP      

HTTP支持的是www服務 
而TCP/IP是協議 
它是Internet國際互聯網絡的基礎。TCP/IP是網絡中使用的基本的通信協議。 
TCP/IP實際上是一組協議,它包括上百個各種功能的協議,如:遠程登錄、文件傳輸和電子郵件等,而TCP協議和IP協議是保證數據完整傳輸的兩個基本的重要協議。通常說TCP/IP是Internet協議族,而不單單是TCP和IP


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM