日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

网络编程-TCP/IP协议栈-UDP/HTTP协议

發(fā)布時(shí)間:2023/12/4 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络编程-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)求案例。
//1. post:請(qǐng)求方法 //2. http://edu.zhenai.com/api/business/supremecourse/course.do:請(qǐng)求URL //3. HTTP/1.1:HTTP協(xié)議以及版本 POST http://edu.zhenai.com/api/business/supremecourse/course.do HTTP/1.1 //以下報(bào)文頭部 Cookie: token=506188.1587368100293.ef83f599f1a54833d0cc5124da98140a.test; token=506188.1587368100293.ef83f599f1a54833d0cc5124da98140a.test; sid=88TIsgom9Xqw3GMLTDv0; User-Agent: PostmanRuntime/7.25.0 Accept: */* Cache-Control: no-cache Postman-Token: 4b0c8482-cce5-40e2-a7b9-a251378c6475 Host: edu.zhenai.com Accept-Encoding: gzip, deflate, br Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 zone: 1027071-liaojiamin Host: edu.zhenai.com //以下報(bào)文體 supremeCourseID=129&allow=true
HTTP請(qǐng)求方法
  • HTTP包含來(lái)多種不同的請(qǐng)求方法,每一種請(qǐng)求方式用在不同的場(chǎng)景
序號(hào)方法描述
1GET請(qǐng)求指定頁(yè)面信息,并放回實(shí)體主體
2HEAD類似get請(qǐng)求,不過(guò)返回的響應(yīng)中沒(méi)有具體的內(nèi)容,用于獲取報(bào)頭
3POST向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表達(dá)或者上傳文件),數(shù)據(jù)被包含在請(qǐng)求體中,POST請(qǐng)求可能會(huì)操作新的資源的建立和/或已有資源的修改
4PUT從客戶端想服務(wù)器傳送的數(shù)據(jù)取代指定的文檔內(nèi)容
5DELETE請(qǐng)求服務(wù)器刪除指定內(nèi)容
6CONNECTHTTP1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器
7OPTIONS允許客戶端查看服務(wù)器的性能
8TRACE回顯服務(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ì)照表
//Content-type常用類型 text/html:HTML格式 text/plain:純文本格式 text/xml:xml格式 image/gif:gif圖片格式 image/jpeg:jpg圖片格式 image/png:png圖片格式 //以為application開(kāi)頭的媒體格式類型: application/xhtml+xml:XHTML格式 application/xml:xml數(shù)據(jù)格式 application/atom+xml:atom xml聚合格式 application/pdf:pdf格式 application/msword:word文檔格式 application/octet-stream:二進(jìn)制流數(shù)據(jù) application/x-www-form-urlencoded:form表達(dá)數(shù)據(jù)被編碼后送到服務(wù)器
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)如下:
// 狀態(tài)行,用于描述服務(wù)器對(duì)請(qǐng)求的處理結(jié)果 HTTP/1.1 200 OK // 多個(gè)響應(yīng)頭:響應(yīng)頭用于描述服務(wù)器的基本信息,以及數(shù)據(jù)的描述,服務(wù)器通過(guò)這些數(shù)據(jù)的描述信息,可以通知客戶端如何處理之后他返回的數(shù)據(jù) Server: nginx/1.15.5 Date: Mon, 29 Jun 2020 13:31:00 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding Content-Disposition: inline;filename=f.txt Content-Length: 2166// 此處保留一個(gè)空行 //實(shí)體內(nèi)容:代表服務(wù)器向客戶端返回的數(shù)據(jù)信息。 {"data":{"msg":"獲取成功",......}
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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。