HTTP與TCP的區別和聯絡

2022-07-10 06:15:13 字數 3618 閱讀 9222

相信不少初學手機聯網開發的朋友都想知道http與socket連線究竟有什麼區別,希望通過自己的淺顯理解能對初學者有所幫助。

一、基本概念

1、tcp連線

手機能夠使用聯網功能是因為手機底層實現了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、http連線

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

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

3、socket原理

3.1套接字(socket)概念

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

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

3.2 建立socket連線

建立socket連線至少需要一對套接字,其中乙個執行於客戶端,稱為clientsocket ,另乙個執行於伺服器端,稱為serversocket 。

套接字之間的連線過程分為三個步驟:伺服器監聽,客戶端請求,連線確認。

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

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

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

4、socket連線與tcp連線

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

5、socket連線與http連線

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

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

二、相互關係

首先,糾正一下我以前一直誤解的概念,我一直以為http和tcp是兩種不同的,但是地位對等的協議,雖然知道tcp是傳輸層,而http是應用層今天學習了下,知道了 http是要基於tcp連線基礎上的,簡單的說,tcp就是單純建立連線,不涉及任何我們需要請求的實際資料,簡單的傳輸。http是用來收發資料,即實際應用上來的。

第一:從傳輸層,先說下tcp連線,我們要和服務端連線tcp連線,需要通過三次連線,包括:請求,確認,建立連線。即傳說中的「三次握手協議」。

第一次:c傳送乙個請求連線的位碼syn和乙個隨機產生的序列號給seq,然後s收到了這些資料。

第二次:s收到了這個請求連線的位碼,啊呀,有人向我發出請求了麼,那我要不要接受他的請求,得實現確認一下,於是,傳送了乙個確認碼 acn(seq+1),和syn,seq給c,然後c收到了,這個是第二次連線。

第三次:c收到了確認的碼和之前傳送的syn一比較,偶喲,對上了麼,於是他又傳送了乙個acn(seq+1)給s,s收到以後就確定建立連線,至此,tcp連線建立完成。

簡單就是:請求,確認,連線。

第二:從實際上的資料應用來說http

在前面客戶端和應用伺服器建立tcp連線之後,就需要用http協議來傳送資料了,http協議簡單來說,還是請求,確認,連線。

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

第一:傳送乙個http請求給s,這個請求包括請求頭和請求內容:

request header:

包括了,1.請求的方法是post/get,請求的url,http協議版本2.請求的資料,和編碼方式3是否有cookie和cooies,是否快取等。

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

request body:

即請求的內容.

第二:s收到了http請求,然後根據請求頭,返回http響應。

response header:包括了1.cookies或者sessions2.狀態嗎3.內容大小等

response body:

即響應的內容,包括,js什麼的。

第三,c收到了以後,就由瀏覽器完成一系列的渲染,包括執行js指令碼等。

這就是我所理解的webtcp,http基礎知識,待續。。。。。

tcp是底層通訊協議,定義的是資料傳輸和連線方式的規範

http是應用層協議,定義的是傳輸資料的內容的規範

http協議中的資料是利用tcp協議傳輸的,所以支援http也就一定支援tcp      

http支援的是www服務 

而tcp/ip是協議 

它是internet國際網際網路絡的基礎。tcp/ip是網路中使用的基本的通訊協議。 

tcp/ip實際上是一組協議,它包括上百個各種功能的協議,如:遠端登入、檔案傳輸和電子郵件等,而tcp協議和ip協議是保證資料完整傳輸的兩個基本的重要協議。通常說tcp/ip是internet協議族,而不單單是tcp和ip。

HTTP與TCP的區別和聯絡

相信不少初學應用網路程式開發的朋友都想知道http與socket連線究竟有什麼區別,希望通過自己的淺顯理解能對初學者有所幫助。一 基本概念 1 tcp連線 手機能夠使用聯網功能是因為手機底層實現了tcp ip協議,可以使手機終端通過無線網路建立tcp連線。tcp協議可以對上層網路提供介面,使上層網路...

HTTP與TCP的區別和聯絡

參考 tcp對應於傳輸層,http對應於應用層,從本質上來說,二者沒有可比性。http協議是建立在tcp協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次http請求。http會通過tcp建立起乙個到伺服器的連線通道,當本次請求需要的資料完畢後,http會立即將tcp連線斷開,這個過...

HTTP與TCP的區別和聯絡

一 基本概念 1 tcp連線 手機能夠使用聯網功能是因為手機底層實現了tcp ip協議,可以使手機終端通過無線網路建立tcp連線。tcp協議可以對上層網路提供介面,使上層網路資料的傳輸建立在 無差別 的網路之上。建立起乙個tcp連線需要經過 三次握手 第一次握手 客戶端傳送syn包 syn j 到伺...