TCP IP協議與HTTP協議(二)

2022-07-09 16:15:14 字數 3707 閱讀 2649

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

手機能夠使用聯網功能是因為手機底層實現了tcp/ip協議,可以使手機終端通過無線網路建立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狀態,完成三次握手。

握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,tcp連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,tcp 連線都將被一直保持下去。斷開連線時伺服器和客戶端均可以主動發起斷開tcp連線的請求,斷開過程需要經過「四次握手」(過程就不細寫 了,就是伺服器和客戶端互動,最終確定斷開)

2.1 http簡介

http協議即超文字傳送協議(hypertext transfer protocol ),是web聯網的基礎,也是手機聯網常用的協議之一,http協議是建立在tcp協議之上的一種應用。

http連線最顯著的特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連線的過程稱為「一次連線」。

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

在http 1.1中則可以在一次連線中處理多個請求,並且多個請求可以重疊進行,不需要等待乙個請求結束後再傳送下乙個請求。

2.2 建立http連線

客戶端傳送乙個http請求給伺服器,伺服器收到了這個http請求,然後返回給伺服器http響應,然後伺服器的中介軟體或者說瀏覽器把這些資料渲染成為了網頁,展示在使用者面前。

首先,客戶端傳送乙個http請求給伺服器,這個請求包括請求頭和請求內容。

request header: 

(1)請求的方法是post/get 

(2)請求的url,http協議版本 

(3)請求的資料,和編碼方式3是否有cookie和cooies,是否快取等。 

(4)post/get請求方式的區別是,get把請求內容放在url後面,但是url長度有限制。而post是以表單的形式,適合要輸入密碼之類的,因為不在url中顯示,所以比較安全。

request body:請求的內容.

然後,伺服器收到了這個http請求,根據請求頭返回給伺服器http響應。

response header:包括了cookies或者sessions,狀態碼及內容大小等

response body:即響應的內容。

最後,伺服器的中介軟體或者說瀏覽器把這些資料渲染成為了網頁,展示在使用者面前。

2.3、http協議的一些重要概念

連線(connection):乙個傳輸層的實際環流,它是建立在兩個相互通訊的應用程式之間。

訊息(message):http通訊的基本單位,包括乙個結構化的八元組序列並通過連線傳輸。

請求(request):乙個從客戶端到伺服器的請求資訊包括應用於資源的方法、資源的識別符號和協議的版本號

響應(response):乙個從伺服器返回的資訊包括http協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文件的mime型別。

資源(resource):由uri標識的網路資料物件或服務。

實體(entity):資料資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在乙個請求或響應資訊中。乙個實體包括實體頭資訊和實體的本身內容。

客戶機(client):乙個為傳送請求目的而建立連線的應用程式。

伺服器(server):乙個接受連線並對請求返回資訊的應用程式。

源伺服器(originserver):是乙個給定資源可以在其上駐留或被建立的伺服器。

**(proxy):乙個中間程式,它可以充當乙個伺服器,也可以充當乙個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。乙個**在傳送請求資訊之前,必須解釋並且如果可能重寫它。 

**經常作為通過防火牆的客戶機端的門戶,**還可以作為乙個幫助應用來通過協議處理沒有被使用者**完成的請求。

閘道器(gateway):乙個作為其它伺服器中間媒介的伺服器。與**不同的是,閘道器接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同閘道器打交道。 

閘道器經常作為通過防火牆的伺服器端的門戶,閘道器還可以作為乙個協議翻譯器以便訪問那些儲存在非http系統中的資源。

通道(tunnel):是作為兩個連線中繼的中介程式。一旦啟用,通道便被認為不屬於http通訊,儘管通道可能是被乙個http請求初始化的。當被中繼的連線兩端關閉時,通道便消失。當乙個門戶(portal)必須存在或中介(intermediary)不能解釋中繼的通訊時通道被經常使用。

快取(cache):反應資訊的局域儲存。

3.1 套接字(socket)概念

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

應用層通過傳輸層進行資料通訊時,tcp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個 tcp協 議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp/ip協議互動提供了套接字(socket)介面。應用層可以 和傳輸層通過socket介面,區分來自不同應用程式程序或網路連線的通訊,實現資料傳輸的併發服務。

3.2 建立socket連線

建立socket連線至少需要一對套接字,其中乙個執行於客戶端,稱為clientsocket ,另乙個執行於伺服器端,稱為serversocket 。套接字之間的連線過程分為三個步驟:伺服器監聽,客戶端請求,連線確認。

伺服器監聽:伺服器端套接字並不定位具體的客戶端套接字,而是處於等待連線的狀態,實時監控網路狀態,等待客戶端的連線請求。

客戶端請求:指客戶端的套接字提出連線請求,要連線的目標是伺服器端的套接字。為此,客戶端的套接字必須首先描述它要連線的伺服器的套接字,指出伺服器端套接字的位址和埠號,然後就向伺服器端套接字提出連線請求。

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

建立socket連線時,可以指定使用的傳輸層協議,socket可以支援不同的傳輸層協議(tcp或udp),當使用tcp協議進行連線時,該socket連線就是乙個tcp連線。

由於通常情況下socket連線就是tcp連線,因此socket連線一旦建立,通訊雙方即可開始相互傳送資料內容,直到雙方連線斷開。但在實際網路應用 中,客戶端到伺服器之間的通訊往往需要穿越多個中間節點,例如路由器、閘道器、防火牆等,大部分防火牆缺省會關閉長時間處於非活躍狀態的連線而導 致 socket 連線斷連,因此需要通過輪詢告訴網路,該連線處於活躍狀態。

而http連線使用的是「請求—響應」的方式,不僅在請求時需要先建立連線,而且需要客戶端向伺服器發出請求後,伺服器端才能回覆資料。

TCP IP協議與HTTP協議(一)

1 什麼是tcp ip 如果要了解乙個人,可以從他歸屬的集體聊起來。我們的http協議就屬於tcp ip協議家族中的一員,了解http協議再整個網路流程中的地位,也能更加充分的理解http協議。tcp ip協議是乙個協議集合。大家叫的時候方便說,所以統稱為tcp ip。tcp ip協議族中有乙個重要...

TCP IP協議與Http協議的區別

tpc ip協議是傳輸層協議,主要解決資料如何在網路中傳輸,而http是應用層協議,主要解決如何包裝資料。關於tcp ip和http協議的關係,網路有一段比較容易理解的介紹 我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料...

TCP IP協議之HTTP協議

1 全球資訊網 www 提供的是分布式c s服務,每個客戶端瀏覽器由3部分組成 控制程式 ftp,http,telnet等 解析程式 html,jsp,php等 和客戶協議。2 統一資源定位符 url uri 由一下部分組成 協議 主機 埠 路徑 協議部分除了http之外還可以用ftp,news和t...