http通訊協議
A. 如何使用http協議與服務端通信
首先,需要明確一下http通信流程,Android目前提供兩種http通信方式,HttpURLConnection和HttpClient,HttpURLConnection多用於發送或接收流式數據,因此比較適合上傳/下載文件,HttpClient相對來講更大更全能,但是速度相對也要慢一點。在此只介紹HttpClient的通信流程:
1.創建HttpClient對象,改對象可以用來多次發送不同的http請求
2.創建HttpPost或HttpGet對象,設置參數,每發送一次http請求,都需要這樣一個對象
3.利用HttpClient的execute方法發送請求並等待結果,該方法會一直阻塞當前線程,直到返回結果或拋出異常。
4.針對結果和異常做相應處理
根據上述流程,發現在設計類的時候,有幾點需要考慮到:
1.HttpClient對象可以重復使用,因此可以作為類的靜態變數
2.HttpPost/HttpGet對象一般無法重復使用(如果你每次請求的參數都差不多,也可以重復使用),因此可以創建一個方法用來初始化,同時設置一些需要上傳到伺服器的資源
3.目前Android不再支持在UI線程中發起Http請求,實際上也不該這么做,因為這樣會阻塞UI線程。因此還需要一個子線程,用來發起Http請求,即執行execute方法
4.不同的請求對應不同的返回結果,對於如何處理返回結果(一般來說都是解析json&更新UI),需要有一定的自由度。
5.最簡單的方法是,每次需要發送http請求時,開一個子線程用於發送請求,子線程中接收到結果或拋出異常時,根據情況給UI線程發送message,最後在UI線程的handler的handleMessage方法中做結果解析和UI更新。這么寫雖然簡單,但是UI線程和Http請求的耦合度很高,而且代碼比較散亂、醜陋。
B. http 協議是基於TCP還是UDP
是TCP。
由HTTP客戶端發起一個請求,建立一個到伺服器指定埠(默認是80埠)的TCP連接。HTTP伺服器則在那個埠監聽客戶端發送過來的請求。一旦收到請求,伺服器(向客戶端)發回一個狀態行和(響應的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在於(打開)一個網頁必須傳送很多數據,而TCP協議提供傳輸控制,按順序組織數據,和錯誤糾正。
C. 請問HTTP協議傳輸和TCP協議傳輸的區別
1、性質不同:http是一個簡單的請求-響應協議。TCP是一種面向連接的、可靠的、基於位元組流的傳輸層通信協議。
2、連接不同:TCP連接到不同但互連的計算機通信網路的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。http通常運行在TCP之上。指定了客戶端可能發送給伺服器什麼樣的消息以及得到什麼樣的響應。
3、功能不同:當應用層向TCP層發送用於網間傳輸的、用8位位元組表示的數據流,TCP則把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)通常受該計算機連接的網路的數據鏈路層的最大傳送單元(MTU)限制。HTTP協議是基於請求/響應範式的。
(3)http通訊協議擴展閱讀:
注意事項:
1、HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
2、HTTP是媒體獨立的:這意味著,只要客戶端和伺服器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及伺服器指定使用適合的MIME-type內容類型。
3、HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面在伺服器不需要先前信息時它的應答就較快。
D. TCP/IP、Http、Soap三個基本的通訊協議有什麼區別
TCP
TCP是面向連接的通信協議,通過三次握手建立連接,通訊完成時要拆除連接,由於TCP是面向連接的所以只能用於端到端的通訊。
TCP提供的是一種可靠的數據流服務,採用「帶重傳的肯定確認」技術來實現傳輸的可靠性。TCP還採用一種稱為「滑動窗口」的方式進行流量控制,所謂窗口實際表示接收能力,用以限制發送方的發送速度。
如果IP數據包中有已經封好的TCP數據包,那麼IP將把它們向『上』傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最後到接收方。
面向連接的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收域名資料庫),但使用UDP傳送有關單個主機的信息。
IP
IP層接收由更低層(網路介面層例如乙太網設備驅動程序)發來的數據包,並把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP並沒有做任何事情來確認數據包是否按順序發送的或者有沒有被破壞,IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。
高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好像是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那麼,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。
HTTP
是一個通信協議,通過網路傳輸信息。
SOAP
是一個基於XML的協議交換消息,可以使用HTTP來傳輸這些信息。事實上HTTP是SOAP消息的最常見的傳輸工具。soap將信息進行XML的序列化後,再用http協議的方式再打包進行傳送,傳送的方式還是tcp或者udp。做個比喻就好理解了。tcp 和 udp 都是公路,暫且把tcp認為是一般公路,udp高速公路,soap和http就都是汽車,那麼soap和http都可以在tcp和udp上跑。說soap可以通過http來傳送,實際就是說soap是小轎車,http是裝轎車的卡車,把soap的信息裝到http裡面,然後再運輸,當然走的道路還是tcp或udp。說soap可以通過http協議來傳輸,這句話不太准確,比較准確第說法是:soap信息可以通過http協議包裝後通過tcp或udp傳輸。
E. HTTP協議有哪幾種方式
客戶程序向伺服器發送的請求可以有不同的類型,這樣伺服器可以根據不同的請求類型進行不同的處理。在HTTP1.0中,定義了三種最基本的請求類 型,GET、POST和HEAD,客戶程序用大寫指令將請求發送給伺服器,後面跟隨具體的數據。
其中,HEAD請求在客戶程序和伺服器之間進行交流,而不會返回具體的文檔。當使用GET和POST方法時,伺服器最後都將結果文檔返回給客戶程序,瀏覽器將 刷新顯示。而HEAD請求則不同,它僅僅交流一些內部數據,這些數據不會影響瀏覽的過程。因此HEAD方法通常不單獨使用,而是和其他的請求方法一起起到 輔助作用。一些搜尋引擎使用的自動搜索機器人使用這個方法來獲得網頁的標志信息,或者進行安全認證時,使用這個方法來傳遞認證信息。
除了這三種最常見的訪問方法之外,在HTTP1.1中還定義了更多的訪問方法類型,如PUT,用於將網頁放置到正確位置,DELETE用於刪除相關文檔 等。這些方法並不常用,因而大部分Web伺服器軟體並沒有實現他們。然而對於特定場合他們還是非常有用的,例如使用軟體編輯網頁時,網頁編輯器可以使用這 些方法,管理不同的網頁。
如果伺服器不支持客戶發送的請求方法,伺服器將返回錯誤並立即關閉連接。
F. 各種協議(HTTP、FTP、TELNET)是什麼含義三個協議有何不同
HTTP——超級文本傳輸協議的英文簡稱。是一種為了將位於全球各個地方的Web伺服器中的內容發送給不特定多數用戶而制訂的協議。也就是說,可以把HTTP看作是旨在向不特定多數的用戶「發放」文件的協議。
HTTP使用於從伺服器讀取Web頁面內容。Web瀏覽器下載Web伺服器中的HTML文件及圖像文件等,並臨時保存在個人電腦硬碟及內存中以供顯示。
使用HTTP下載軟體等內容時的不同之處只是在於是否以Web瀏覽器顯示的方式保存,還是以不顯示的方式保存而已。結構則完全相同。因此,只要指定文件,任何人都可以進行下載。
FTP——File Transfer Protocol,文件傳輸協議是Internet上使用非常廣泛的一種通訊協議,它是為Internet用戶進行文件傳輸(包括文件的上傳和下載)而制定的。要想實現FTP文件傳輸,必須在相連的兩端都裝有支持FTP協議的軟體,裝在您的電腦上的叫FTP客戶端軟體,裝在另一端伺服器上的叫做FTP伺服器端軟體。
FTP是為了在特定主機之間「傳輸」文件而開發的協議。因此,在FTP通信的起始階段,必須運行通過用戶ID和密碼確認通信對方的認證程序。
TELNET——Telnet是一種字元模式的終端服務,它可以使用戶坐在已上網的電腦鍵盤前通過網路進入遠程主機,然後對遠程主機進行操作。這種連通可以發生在區域網裡面,也可以通過互聯網進行。被連通的計算機稱為Telnet Server,你自己在使用的機器稱之為客戶機或者終端。
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標准協議。應用Telnet協議能夠把本地用戶所使用的計算機變成遠程主機系統的一個終端。
從工作模式、協議結構、應用目的等情況來看,三個協議工作於不同方面,在OSI模型中各自不同。
G. TCP/IP協議與HTTP協議區別
OSI 是7層 TCP/IP 協議是 4層
OIS 包括的層 從底到上依次為 1.物理層 2.數據鏈路層 3.網路層 4.傳輸層
5.會話層 6.表示層 7.應用層
TCP/IP 協議 協議包括的層 從底到上 依次為 1.網路介面層,2.互聯網層 3.傳輸層 4.應用層
樓下說的 HTTP協議是應用層的協議 怎麼能跟 TCP/IP 協議無關呢
還有 樓下還說了 TCP/IP協議是 傳輸層和網路層的協議,和 數據鏈路層/物理層無關,這句話上表意樓下的意思是 說TCP/IP是 3層協議。呵呵,書上都寫著呢,TCP/IP協議是 4層。(他指的 物理層 和 數據鏈路層 是 TCP/IP 里的 網路介面層,網路介面層包含 物里層 和數據鏈路層)
TCP/IP 是 網路上 數據通信的一種協議,如果沒有這個協議,你就在TCP/IP 網路上 什麼也做不了
HTTP 協議是 TCP/IP 協議裡麵包含的 應用層的協議而已,沒有這個協議 只是 不能瀏覽網頁而已,其他的 服務是正常的 比如 郵件SMTP,POP3 協議,FTP等協議,這些協議都是 應用層協議
PS:
還有TCP/IP 協議里 有 網路介面層,互聯網層,傳輸層,應用層(HTTP協議就包含在應用層里的 一個協議)
各層都有 各自的 協議,在這里 就不在一一介紹,如果感興趣,可以參考
TCP/IP 詳解 卷一:協議
H. http 底層協議是什麼
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW伺服器傳輸超文本到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網路傳輸減少。
它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。
HTTP是客戶端瀏覽器或其他程序與Web伺服器之間的應用層通信協議。在Internet上的Web伺服器上存放的都是超文本信息,客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。
HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他網際網路/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成。
(8)http通訊協議擴展閱讀:
通過HTTP或者HTTPS協議請求的資源由統一資源標示符(Uniform Resource Identifiers)(或者,更准確一些,URLs)來標識。
1、基於請求/響應模型的協議。請求和響應必須成對,先有請求後有響應
2、http協議默認埠:80
3、簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。
每種方法規定了客戶與伺服器聯系的類型不同。由於HTTP協議簡單,使得HTTP伺服器的程序規模小,因而通信速度很快。
4、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
5、無連接:無連接的含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
6、無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。
I. http網路協議是什麼意思
一、網路協議的概念:
HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。
發展是萬維網協會(World Wide Web Consortium)和Internet工作小組IETF(Internet Engineering Task Force)合作的結果,最終發布了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC 2616。
RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW伺服器傳輸超文本到本地瀏覽器的傳送協議。可以使瀏覽器更加高效,使網路傳輸減少。不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。
HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端伺服器模型。HTTP是一個無狀態的協議。
三、HTTP的幾個重要概念:
連接:Connection
一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。 在http1.1,request和reponse頭中都有可能出現一個connection的頭,此header的含義是當client和server通信時對於長鏈接如何進行處理。 在http1.1中,client和server都是默認對方支持長鏈接的, 如果client使用http1.1協議,但又不希望使用長鏈接,則需要在header中指明connection的值為close;如果server方也不想支持長鏈接,則在response中也需要明確說明connection的值為close。不論request還是response的header中包含了值為close的connection,都表明當前正在使用的tcp鏈接在當天請求處理完畢後會被斷掉。以後client再進行新的請求時就必須創建新的tcp鏈接了。
消息:Message
HTTP通訊的基本單位,包括一個結構化的八元組序列並通過連接傳輸。
請求:Request
一個從客戶端到伺服器的請求信息包括應用於資源的方法、資源的標識符和協議的版本號。
響應:Response
一個從伺服器返回的信息包括HTTP協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文檔的MIME類型。
資源:Resource
由URI標識的網路數據對象或服務。
實體:Entity
數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。
客戶機:Client
一個為發送請求目的而建立連接的應用程序。
用戶代理:UserAgent
初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。
伺服器:Server
一個接受連接並對請求返回信息的應用程序。
源伺服器:Originserver
是一個給定資源可以在其上駐留或被創建的伺服器。
代理:Proxy
一個中間程序,它可以充當一個伺服器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。一個代理在發送請求信息之前,必須解釋並且如果可能重寫它。 代理經常作為通過防火牆的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。
網關:Gateway
一個作為其它伺服器中間媒介的伺服器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同網關打交道。 網關經常作為通過防火牆的伺服器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。
通道:Tunnel
是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬於HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。
緩存:Cache
反應信息的局域存儲。
J. HTTP是通信協議嗎
HTTP/1.0和HTTP/1.1都把TCP作為底層的傳輸協議。HTTP客戶首先發起建立與伺服器TCP連接。一旦建立連接,瀏覽器進程和伺服器進程就可以通過各自的套接字來訪問TCP。如前所述,客戶端套接字是客戶進程和TCP連接之間的「門」,伺服器端套接字是伺服器進程和同一TCP連接之間的「門」。客戶往自己的套接字發送HTTP請求消息,也從自己的套接字接收HTTP響應消息。類似地,伺服器從自己的套接字接收HTTP請求消息,也往自己的套接字發送HTTP響應消息。客戶或伺服器一旦把某個消息送入各自的套接字,這個消息就完全落入TCP的控制之中。TCP給HTTP提供一個可靠的數據傳輸服務;這意味著由客戶發出的每個HTTP請求消息最終將無損地到達伺服器,由伺服器發出的每個HTTP響應消息最終也將無損地到達客戶。
Http協議一定通過指定的埠,80,所以一般計算機上不會限制這個埠,所以Http協議能夠順利通過所有機器上的防火牆。而使用Socket編程的話,就需要自己指定特定的埠,那麼很可能這個埠是在某個環境中禁用的,那麼就無法穿透防火牆。IIS使用的是80埠,也就是這個程序一直在監聽著這個埠。一旦發現有人要建立到這個埠的連接,他就會響應,然後建立連接。這里說的連接都是短連接。所以你對伺服器上的網址的請求,都是通過80埠送到網站程序的。然後通過這個埠發送的客戶端瀏覽器。