网络编程-TCP/IP协议栈-UDP/HTTP协议
生活随笔
收集整理的這篇文章主要介紹了
网络编程-TCP/IP协议栈-UDP/HTTP协议
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
UDP協(xié)議
-
UDP協(xié)議全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中她與TCP協(xié)議一樣用于處理數(shù)據(jù)包,兩個(gè)協(xié)議同處于協(xié)議棧的傳輸層,和TCP不同的是,UDP是一種無(wú)連接的協(xié)議棧。
-
因?yàn)閁DP是無(wú)連接的,所以相對(duì)來(lái)說(shuō),UDP的報(bào)頭比TCP要簡(jiǎn)單的多了。如下圖:
-
UDP特點(diǎn):
- 第一UDP是一個(gè)非連接的協(xié)議,傳輸數(shù)據(jù)之前源端口和終端不建立連接,當(dāng)他想傳送時(shí)就簡(jiǎn)單的去抓取來(lái)自應(yīng)用城西的數(shù)據(jù),并盡可能快的把他扔在網(wǎng)絡(luò)上,在發(fā)送端,UDP傳送數(shù)據(jù)的速遞僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度,計(jì)算機(jī)的計(jì)算能力,和傳輸帶寬的現(xiàn)在;在接受端,UDP吧每個(gè)消息段放再隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。
- 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等,因此一天服務(wù)器可以同時(shí)向多個(gè)客戶端傳輸相同的消息
- UDP信息包的標(biāo)題短,只有8字節(jié),相對(duì)于TCP的20字節(jié)信息包的額外開(kāi)銷很小
- 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率,傳輸帶寬,源端和終端主機(jī)性能的限制
- UDP使用盡量大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的鏈接狀態(tài)表(這個(gè)表中有許多參數(shù))
- UDP是面向報(bào)文的,發(fā)送方的UDP對(duì)應(yīng)應(yīng)用程序交下來(lái)的報(bào)文,在添加首部后就向下交付給IP層,即不拆分,也不合并,而是保留這些報(bào)文的邊界,因此,應(yīng)用程序需要選擇合適的報(bào)文大小。
-
我們經(jīng)常用PING命令來(lái)測(cè)試兩臺(tái)主機(jī)之間TCP/IP通信是否正常,其實(shí)PING命令的原理就是向?qū)Ψ街鳈C(jī)發(fā)送UDP數(shù)據(jù)包,然后對(duì)方主機(jī)確認(rèn)收到數(shù)據(jù)包,如果數(shù)據(jù)包是否到達(dá)的信息及時(shí)反饋回來(lái),那么網(wǎng)絡(luò)就是通的。
HTTP協(xié)議
- HTTP協(xié)議名為超文本傳輸協(xié)議。這個(gè)協(xié)議在TCP/IP協(xié)議棧的應(yīng)用層,因此,我們無(wú)需關(guān)系HTTP是如何傳輸?shù)?#xff0c;只需要看我們傳輸?shù)膬?nèi)容,能否正確的被接收端識(shí)別。
- HTTP是基于TCP實(shí)現(xiàn)的,簡(jiǎn)單說(shuō)來(lái),TCP協(xié)議負(fù)責(zé)可靠的內(nèi)容傳輸,HTTP協(xié)議負(fù)責(zé)識(shí)別內(nèi)容,兩者本身不在一個(gè)層面,沒(méi)有可比性。
- HTTP是無(wú)狀態(tài)的意思是,每一次的內(nèi)容解析是沒(méi)有關(guān)聯(lián)的。TCP有狀態(tài)是指兩端在連接過(guò)程的時(shí)候是有在連接中的狀態(tài)
- HTTP包含兩種報(bào)文類型,請(qǐng)求報(bào)文,響應(yīng)報(bào)文。
- 請(qǐng)求報(bào)文用在客戶端對(duì)服務(wù)器的請(qǐng)求時(shí)候使用的報(bào)文格式
- 響應(yīng)報(bào)文用在服務(wù)響應(yīng)請(qǐng)求的報(bào)文格式
HTTP協(xié)議請(qǐng)求消息結(jié)構(gòu)
- 客戶端發(fā)生一個(gè)HTTP請(qǐng)求奧服務(wù)器的請(qǐng)求消息包括一下格式:請(qǐng)求行(request line),請(qǐng)求頭部(header),空行和請(qǐng)求數(shù)據(jù)四個(gè)部分組成,下圖給出了請(qǐng)求報(bào)文的一般格式。
- 如上圖所示HTTP消息主要包含以下實(shí)質(zhì)內(nèi)容(空格和換行也不能少):
- 請(qǐng)求方法
- URL:統(tǒng)一資源定位符
- HTTP請(qǐng)求頭部
- HTTP請(qǐng)求體
- 以下是一個(gè)HTTP請(qǐng)求的例子,從Fiddler抓包工具中抓出來(lái)的一個(gè)請(qǐng)求案例。
HTTP請(qǐng)求方法
- HTTP包含來(lái)多種不同的請(qǐng)求方法,每一種請(qǐng)求方式用在不同的場(chǎng)景
| 1 | GET | 請(qǐng)求指定頁(yè)面信息,并放回實(shí)體主體 |
| 2 | HEAD | 類似get請(qǐng)求,不過(guò)返回的響應(yīng)中沒(méi)有具體的內(nèi)容,用于獲取報(bào)頭 |
| 3 | POST | 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表達(dá)或者上傳文件),數(shù)據(jù)被包含在請(qǐng)求體中,POST請(qǐng)求可能會(huì)操作新的資源的建立和/或已有資源的修改 |
| 4 | PUT | 從客戶端想服務(wù)器傳送的數(shù)據(jù)取代指定的文檔內(nèi)容 |
| 5 | DELETE | 請(qǐng)求服務(wù)器刪除指定內(nèi)容 |
| 6 | CONNECT | HTTP1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器 |
| 7 | OPTIONS | 允許客戶端查看服務(wù)器的性能 |
| 8 | TRACE | 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷 |
URL-- 統(tǒng)一資源定位符
- URL由三部分組成:資源類型,存放資源的主機(jī)域名,資源文件名
- URL的一般語(yǔ)法格式為(帶括號(hào) [ ] 的是可選項(xiàng)目): protocol 😕/ hostname[:port] / path / [;parameters][?query]#fragment
- 如上面HTTP請(qǐng)求案例中的URL:http://edu.zhenai.com/api/business/supremecourse/course.do&supremeCourseID=129&allow=true
- protocol:http
- hostname:edu.zhenai.com
- parameters:supremeCourseID=129&allow=true
- path:api/business/supremecourse/course.do
HTTP請(qǐng)求頭
- 請(qǐng)求頭中主要包含本次請(qǐng)求的附加信息,其中常用的字段如下:
- Accept:指定客戶端能夠接受的內(nèi)容類型
- Accept-Encoding:指定瀏覽器可以支持的web服務(wù)器返回內(nèi)容壓縮編碼類型
- Accept-Language:瀏覽器可接受的語(yǔ)言
- Content-Length:請(qǐng)求的內(nèi)容長(zhǎng)度,如:Content-Length:348
- Content-Type:請(qǐng)求的與實(shí)體對(duì)于的MIME信息,常用的類型也有很多中,如下表信息中列出
- Date:請(qǐng)求發(fā)送日期和時(shí)間
更多的HTTP響應(yīng)頭和請(qǐng)求頭信息對(duì)照表
HTTP請(qǐng)求體
- 在整個(gè)報(bào)文中,請(qǐng)求頭之后,隔一個(gè)空格,以下部分就是HTTP的請(qǐng)求體。
- 請(qǐng)求體是我們發(fā)送請(qǐng)求的時(shí)候需要傳給接收端的內(nèi)容。其格式需要和請(qǐng)求頭中的Content-Type對(duì)應(yīng),不日回導(dǎo)致接受無(wú)法識(shí)別。如上案例中的請(qǐng)求體:supremeCourseID=129&allow=true
HTTP響應(yīng)
- HTTP的響應(yīng)統(tǒng)一分為:響應(yīng)行,響應(yīng)頭,響應(yīng)體,和請(qǐng)求報(bào)文有點(diǎn)類似??傮w結(jié)構(gòu)如下:
HTTP響應(yīng)行
- 響應(yīng)行中包含來(lái)HTTP的版本和本次請(qǐng)求的狀態(tài),請(qǐng)求狀態(tài)的對(duì)于值見(jiàn)其他資源HTTP響應(yīng)碼
HTTP響應(yīng)頭
- 響應(yīng)頭用于描述服務(wù)器的基本信息,數(shù)據(jù)的描述,這些信息將告知客戶端如何處理響應(yīng)題中的內(nèi)容
- Allow服務(wù)器支持哪些請(qǐng)求方法(GET,POST)
- Content-Encoding 文檔的編碼(Encode)方法。
- Content-Length 表示內(nèi)容長(zhǎng)度。
- Content-Type 表示后面的文檔屬于什么MIME類型。
更多的響應(yīng)頭字段參考資源HTTP響應(yīng)頭和請(qǐng)求頭信息對(duì)照表
HTTP響應(yīng)實(shí)體
- 響應(yīng)實(shí)體中包含的就是客戶端從服務(wù)器中獲取的數(shù)據(jù)。數(shù)據(jù)的格式和長(zhǎng)度都會(huì)在響應(yīng)頭中描述。
上一篇 網(wǎng)絡(luò)編程-TCP/IP協(xié)議棧-TCP協(xié)議
下一篇 網(wǎng)絡(luò)編程-HTTPS協(xié)議的實(shí)現(xiàn)原理
總結(jié)
以上是生活随笔為你收集整理的网络编程-TCP/IP协议栈-UDP/HTTP协议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 背部刮痧有哪些效果
- 下一篇: 网络编程-HTTPS协议的实现原理