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

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

生活随笔

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

编程问答

网络五层模型

發(fā)布時(shí)間:2023/11/30 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络五层模型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

TCP/IP五層模型

應(yīng)用層:

HTTP,HTTPS協(xié)議,其中HTTP沒(méi)有對(duì)數(shù)據(jù)進(jìn)行加密操作,但是HTTPS對(duì)數(shù)據(jù)進(jìn)行了加密操作
其中HTTP端口號(hào)一般是80/8080等等,HTTPS端口號(hào)是443,SSH端口號(hào)一般是22,ftp是21
HTTP協(xié)議報(bào)頭:

首行:請(qǐng)求方法,url,協(xié)議版本 請(qǐng)求報(bào)頭: HOST:主機(jī) Connection:長(zhǎng)連接還是短連接 Content-Length:標(biāo)示body的長(zhǎng)度 Accept-Encoding:客戶告訴服務(wù)器編碼類(lèi)型和語(yǔ)言類(lèi)型 Cookie:在客戶端保存少量信息,實(shí)現(xiàn)會(huì)話的功能 空行 body

傳輸層:

UDP協(xié)議:

UDP報(bào)頭格式

16位源端口號(hào) 16位目的端口號(hào) 16位UDP長(zhǎng)度 16位UDP檢驗(yàn)和(保證基本的數(shù)據(jù)正確性數(shù)據(jù)可以丟失,但不能把錯(cuò)的 數(shù)據(jù)傳給應(yīng)用層) 數(shù)據(jù)

UDP的特點(diǎn):
無(wú)連接:知道對(duì)方的的IP和端口號(hào)就直接進(jìn)行發(fā)送數(shù)據(jù),不管對(duì)方有沒(méi)有連接
面向數(shù)據(jù)報(bào):不管應(yīng)用層給自己交付的報(bào)文長(zhǎng)度是多少都不會(huì)進(jìn)行組裝和拆分,假如發(fā)送方一次發(fā)送了100個(gè)字節(jié),那么接收方也必須對(duì)接受的數(shù)據(jù)一次性接受100字節(jié)
不可靠傳輸:UDP沒(méi)有實(shí)現(xiàn)確認(rèn)機(jī)制和重傳機(jī)制,因此如果數(shù)據(jù)發(fā)生丟失則不會(huì)告訴給上層的應(yīng)用層
UDP的緩沖區(qū)
UDP是調(diào)用sendto將數(shù)據(jù)直接交給內(nèi)核,內(nèi)核將數(shù)據(jù)交給網(wǎng)絡(luò)層協(xié)議進(jìn)行后續(xù)傳輸動(dòng)作,UDP有接受緩沖區(qū),當(dāng)數(shù)據(jù)在接收方的緩沖區(qū)已經(jīng)滿的時(shí)候,此時(shí)如果再給對(duì)方進(jìn)行數(shù)據(jù)發(fā)送,數(shù)據(jù)就會(huì)丟失
UDP是基于全雙工的,通信雙方既可以讀,也可以寫(xiě)
UDP傳輸數(shù)據(jù)
UDP在傳輸數(shù)據(jù)的時(shí)候最大長(zhǎng)度是16位,也就是在傳輸?shù)倪^(guò)程中最大長(zhǎng)度就是64K,如果傳輸裹過(guò)程中數(shù)據(jù)大于64K,此時(shí)就需要應(yīng)用層將數(shù)據(jù)進(jìn)行分包,在到達(dá)對(duì)方的時(shí)候進(jìn)行解包

TCP協(xié)議

HTTP協(xié)議報(bào)頭:

16位源端口號(hào) 16位目的端口號(hào) 32位序列號(hào) 32位確認(rèn)序列號(hào) 4位首部長(zhǎng)度 保留6位 標(biāo)識(shí)位 16位窗口大小 16位檢驗(yàn)和 16位緊急指針 選項(xiàng) 數(shù)據(jù)

其中16位的源端口號(hào)表示的是來(lái)自上層協(xié)議中的那個(gè)進(jìn)程,目的端口號(hào)表示要交給接受端那個(gè)進(jìn)程.32位序列號(hào)和確認(rèn)序列號(hào)保證數(shù)據(jù)的請(qǐng)求和應(yīng)答的正確性.同時(shí)也可以保證數(shù)據(jù)的按需到達(dá),由于序列號(hào)和序列號(hào)也保證了數(shù)據(jù)的重傳機(jī)制,也不用再擔(dān)心丟包問(wèn)題

TCP建立連接和釋放連接

連接的建立:
客戶端向服務(wù)器端發(fā)送一個(gè)SYN請(qǐng)求報(bào)文,此時(shí)客戶端進(jìn)入SYN_SEND狀態(tài),服務(wù)器接收到這個(gè)數(shù)據(jù)之后給客戶端發(fā)送一個(gè)ACK確認(rèn)應(yīng)答報(bào)文,表示自己也已經(jīng)收到客戶端的SYN報(bào)文,同時(shí)也會(huì)發(fā)送一個(gè)SYN請(qǐng)求報(bào)文,同時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài),此時(shí)當(dāng)客戶端接收到這個(gè)報(bào)文之后給服務(wù)器端發(fā)送一個(gè)ACK,此時(shí)客戶端進(jìn)入ESTABLISHED,服務(wù)器接收到這個(gè)報(bào)文之后也會(huì)進(jìn)入ESTABLISHED狀態(tài)
為什么要進(jìn)行三次握手,為什么要等待2*MSL
假如只有兩次握手,服務(wù)器放給客戶端的確認(rèn)信號(hào)丟失,此時(shí)客戶端會(huì)認(rèn)為服務(wù)器端沒(méi)有接受到自己的報(bào)文,于是不停給服務(wù)器發(fā)送無(wú)效的報(bào)文,勢(shì)必造成服務(wù)器的負(fù)擔(dān)
在進(jìn)行四次握手的時(shí)候,當(dāng)客戶端給服務(wù)器發(fā)送的最后一個(gè)報(bào)文ACK丟失,此時(shí)服務(wù)器端沒(méi)有接受到客戶機(jī)的ACK,此時(shí)他會(huì)給服務(wù)器發(fā)送一個(gè)FIN,服務(wù)器接收到這個(gè)FIN后對(duì)客戶端進(jìn)行確認(rèn)應(yīng)答,發(fā)送一個(gè)ACK,此時(shí)兩次下來(lái)剛好就是2*MSL

TCP保證可靠性的傳輸手段

確認(rèn)應(yīng)答

客戶端每次給服務(wù)器發(fā)送SYN,服務(wù)器給客戶端發(fā)送的ACK,同時(shí)將自己的應(yīng)答信號(hào)也會(huì)帶著給發(fā)送過(guò)去,從而保證了客戶端請(qǐng)求,服務(wù)器端應(yīng)答機(jī)制,而TCP報(bào)頭中剛好有序號(hào)和確認(rèn)序號(hào),從而保證了可靠性傳輸

超時(shí)重傳

當(dāng)主機(jī)A給主機(jī)B發(fā)送一個(gè)數(shù)據(jù)的時(shí)候,此時(shí)由于網(wǎng)絡(luò)的原因造成主機(jī)B發(fā)送給主機(jī)B的確認(rèn)應(yīng)答報(bào)文丟失,主機(jī)B會(huì)受到大量的重復(fù)的報(bào)文,此時(shí)主機(jī)A會(huì)等待特定時(shí)間,最后直到最大時(shí)間內(nèi)還沒(méi)有受到主機(jī)B發(fā)送給自己的確認(rèn)應(yīng)答的時(shí)候,此時(shí)就會(huì)認(rèn)為對(duì)方已經(jīng)斷開(kāi)連接,于是主機(jī)A會(huì)強(qiáng)制關(guān)閉連接

流量控制

在TCP報(bào)頭中包括了一個(gè)窗口大小的字段用來(lái)表示自己可以接收的最大報(bào)文數(shù)量.當(dāng)主機(jī)A向主機(jī)B發(fā)送一個(gè)報(bào)文的時(shí)候,每次都會(huì)看一下主機(jī)B的接受窗口,主機(jī)B接收到主機(jī)A發(fā)送給自己的數(shù)據(jù)之后,此時(shí)會(huì)將自己的接受窗口寫(xiě)入到TCP報(bào)頭中窗口字段中,A接受到主機(jī)B發(fā)送給自己的報(bào)文之后,首先先看一下對(duì)方窗口大小,如果這個(gè)窗口大小比較小了,此時(shí)主機(jī)A會(huì)加快自己發(fā)送速度,如果發(fā)現(xiàn)接受方的接受窗口比較小的時(shí)候,此時(shí)就會(huì)減慢自己的發(fā)送速度,當(dāng)發(fā)現(xiàn)對(duì)方的接受窗口為0的時(shí)候,此時(shí)就會(huì)停止自己發(fā)送報(bào)文.當(dāng)過(guò)一段時(shí)間的時(shí)候,此時(shí)發(fā)送方A會(huì)給接收方B發(fā)送探測(cè)數(shù)據(jù),以便知道對(duì)方的接受窗口的大小

擁塞控制

網(wǎng)卡羅上連接了許多的數(shù)據(jù),如果一開(kāi)始的時(shí)候各個(gè)主機(jī)直接給網(wǎng)絡(luò)發(fā)送很多的數(shù)據(jù),此時(shí)勢(shì)必會(huì)造成網(wǎng)絡(luò)擁塞.TCP規(guī)定了一個(gè)擁塞窗口,表示當(dāng)前網(wǎng)絡(luò)能夠接受的做大數(shù)據(jù),每次發(fā)送方在發(fā)送的時(shí)候都會(huì)將對(duì)方的窗口大小和擁塞窗口進(jìn)行比較,將較小的數(shù)據(jù)作為自己的發(fā)送窗口.
同時(shí)在發(fā)送的時(shí)候規(guī)定擁塞窗口大小為1,每接收到一個(gè)應(yīng)答便將擁塞窗口加1,當(dāng)擁塞窗口的大小大于一個(gè)閥值的時(shí)候,此時(shí)將變?yōu)榫€性增長(zhǎng),同時(shí)每次超時(shí)重傳的時(shí)候閥值會(huì)降為原來(lái)的一半.同時(shí)將硬塞窗口變?yōu)?

TCP保證性能傳輸

滑動(dòng)窗口

滑動(dòng)窗口左邊表示的是已經(jīng)確認(rèn)過(guò)的,滑動(dòng)窗口內(nèi)表示的是已經(jīng)發(fā)出去,但是沒(méi)有進(jìn)行確認(rèn)的,滑動(dòng)窗口右邊的表示的是未發(fā)送的數(shù)據(jù)

延遲應(yīng)答

接受方接受到數(shù)據(jù)后先不對(duì)發(fā)送方進(jìn)行確認(rèn),經(jīng)過(guò)一段時(shí)間后才對(duì)對(duì)方發(fā)送的數(shù)據(jù)進(jìn)行一起確認(rèn).

捎帶應(yīng)答

每次接收方在對(duì)對(duì)方的發(fā)送數(shù)據(jù)進(jìn)行確認(rèn)的時(shí)候,此時(shí)也將自己需要發(fā)送給接受方的數(shù)據(jù)也全部發(fā)送給接收方

TCP和UDP的區(qū)別

TCP是面向字節(jié)流的,一次讀取多少由系統(tǒng)去界定
UDP是面向數(shù)據(jù)報(bào)的,發(fā)送和接受的時(shí)候必須按一定的大小進(jìn)行發(fā)送和接受,不能對(duì)數(shù)據(jù)進(jìn)行封裝以及拆分
TCP是保證可靠性的,它為了實(shí)現(xiàn)可靠性采用了超時(shí)重傳,確認(rèn)應(yīng)答,流浪控制,擁塞控制等手段,同時(shí)為了實(shí)現(xiàn)性能可靠性,TCP采用了滑動(dòng)窗口,捎帶應(yīng)答,延遲應(yīng)答等等機(jī)制
UDP沒(méi)有實(shí)現(xiàn)可靠性,它在發(fā)送的過(guò)程中如果數(shù)據(jù)發(fā)生了丟失,此時(shí)就需要上層去確認(rèn)重傳機(jī)制
TCP主要使用與一些可靠傳輸場(chǎng)景,比如文件傳輸?shù)鹊?但是它實(shí)現(xiàn)復(fù)雜,傳輸速度較為慢,UDP主要適用于對(duì)速度要求較高的場(chǎng)景,比如視頻的傳輸?shù)鹊?/p>

網(wǎng)絡(luò)層

為什么要有網(wǎng)絡(luò)?
之所以要有網(wǎng)絡(luò)層,是因?yàn)閿?shù)據(jù)在發(fā)送方傳輸層的時(shí)候只有自己的源端口和目標(biāo)端口,但是不知道對(duì)方的IP以及數(shù)據(jù)應(yīng)該如何到達(dá)對(duì)方的目的端口都是不知道的,有了網(wǎng)絡(luò)層,此時(shí)加上路由器就會(huì)將數(shù)據(jù)從遠(yuǎn)端通過(guò)路由轉(zhuǎn)發(fā)算法對(duì)其進(jìn)行轉(zhuǎn)發(fā),一直到達(dá)對(duì)方所在的局域網(wǎng)
數(shù)據(jù)從上層的傳輸層傳下來(lái)的時(shí)候,此時(shí)山層協(xié)議有很多,為了區(qū)分?jǐn)?shù)據(jù)來(lái)自上層的哪個(gè)協(xié)議此時(shí)就在IP層的報(bào)頭中添加了一個(gè)8位協(xié)議,表示自己接受的數(shù)據(jù)來(lái)自上層協(xié)議的那個(gè)協(xié)議,同時(shí)在IP層也有對(duì)應(yīng)的IPV4和IPV6,為了區(qū)別兩者,也就增加了一個(gè)4位版本,同時(shí)由于數(shù)據(jù)進(jìn)行了封裝,那么如和區(qū)別自己是正文還是報(bào)頭信息,此時(shí)就需要將自己的數(shù)據(jù)進(jìn)行區(qū)分,于是便有了首部長(zhǎng)度這個(gè)字段(4位),同時(shí)也有一個(gè)8位服務(wù)類(lèi)型,同時(shí)16位的總長(zhǎng)度表示數(shù)據(jù)段加上首部整體的長(zhǎng)度,由于數(shù)據(jù)來(lái)自上層,有可能數(shù)據(jù)太大了,于是就需要將數(shù)據(jù)進(jìn)行分片,來(lái)自上層的同一個(gè)數(shù)據(jù)在經(jīng)過(guò)分片后它的標(biāo)識(shí)是一樣的,但是為了防止在IP層對(duì)數(shù)據(jù)進(jìn)行胡亂的分片,此時(shí)就有了3位的表示字段表示是否允許分片.同時(shí)既然進(jìn)行了分片,此時(shí)接受方接受到數(shù)據(jù)后就要進(jìn)行組裝,在進(jìn)行組裝的時(shí)候肯定要知道那個(gè)數(shù)據(jù)在前,那個(gè)數(shù)據(jù)在后,于是就需要一個(gè)片偏移表示數(shù)據(jù)的位置,同時(shí)在IP層數(shù)據(jù)要進(jìn)行路由轉(zhuǎn)發(fā),于是每一個(gè)數(shù)據(jù)都得有自己的一個(gè)生存時(shí)間,同時(shí)也得對(duì)首部信息進(jìn)行校驗(yàn).既然進(jìn)行路由轉(zhuǎn)發(fā),此時(shí)就需要知道源IP,目的IP,同時(shí)也有選項(xiàng)字段(最多40)字節(jié)

4位版本 4位首部長(zhǎng)度 8位服務(wù)類(lèi)型 16位總長(zhǎng)度 16位標(biāo)識(shí)符 3位標(biāo)識(shí) 13位的片偏移 8位生存時(shí)間 8位協(xié)議 16位首部校驗(yàn)和32位源IP地址32位的目的IP地址選項(xiàng)數(shù)據(jù)

網(wǎng)段劃分

為什么要有網(wǎng)段劃分:
之所以要有網(wǎng)段劃分是因?yàn)榫W(wǎng)絡(luò)中有很多的主機(jī),而在這么多的主機(jī)中要去找一個(gè)主機(jī),那可能會(huì)耗費(fèi)大量的人力物力,所以為了方便找到網(wǎng)絡(luò)中的每一個(gè)主機(jī)
IP包括網(wǎng)絡(luò)號(hào)和主機(jī)號(hào),其中網(wǎng)絡(luò)號(hào)是為了保證兩個(gè)網(wǎng)段具有不同的標(biāo)識(shí),端口號(hào)是為了保證在同一個(gè)網(wǎng)絡(luò)之間的主機(jī)有不同的標(biāo)識(shí)
其中同一個(gè)子網(wǎng)中的主機(jī)之間網(wǎng)絡(luò)號(hào)相同,主機(jī)號(hào)不同

ICMP

和IP相同的是ICMP也是工作在網(wǎng)絡(luò)層的,但是ICMP不能保證數(shù)據(jù)是否成功到達(dá)對(duì)方,而ICMP可以確認(rèn)數(shù)據(jù)是否成功到達(dá)對(duì)方,同時(shí)在進(jìn)行返回的時(shí)候會(huì)通知IP報(bào)被對(duì)其的原因,雖然ICMP只能針對(duì)IPV4進(jìn)行使用

總結(jié)

以上是生活随笔為你收集整理的网络五层模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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