轉(zhuǎn)載大佬文章
我們每天使用互聯(lián)網(wǎng),本質(zhì)上是在傳輸/接收各種數(shù)據(jù),具體如何傳輸則是按照一系列互聯(lián)網(wǎng)協(xié)議進(jìn)行的。我們常說的網(wǎng)絡(luò)七層模型,五層模型,四層模型都是對(duì)數(shù)據(jù)傳輸過程做了細(xì)化的分層。
按照五層模型比較好理解,并且理解每一層的功能主要是理解每一層的協(xié)議,如圖是從【客戶端】發(fā)送數(shù)據(jù),經(jīng)過應(yīng)用層–》傳輸層–》網(wǎng)絡(luò)層–》數(shù)據(jù)鏈路層–》物理層這 五層協(xié)議的處理,轉(zhuǎn)化為物理的光電信號(hào)傳輸?!痉?wù)端】接收到之后再逆向順序按照每層的協(xié)議逆向分析出數(shù)據(jù)。
分層的意義是為了封裝,每一層都有自己特有的功能,上層協(xié)議可以使用下層協(xié)議的功能,上層的變動(dòng)完全不涉及下層的結(jié)構(gòu)。
一、自下向上的系統(tǒng)的角度
1、物理層
將計(jì)算機(jī)用物理設(shè)備鏈接,使用網(wǎng)絡(luò)物理方式傳輸0/1 序列,其中物理設(shè)備主要包含光纜、電纜、雙絞線、無線電波等。
2、數(shù)據(jù)鏈路層
最終數(shù)據(jù)是按照0/1 序列進(jìn)行傳輸?shù)模?/1序列如何解讀和分組,就是『數(shù)據(jù)鏈路層』的功能。
作用于該層功能的協(xié)議:以太網(wǎng)協(xié)議
3、網(wǎng)絡(luò)層
每個(gè)計(jì)算機(jī)接入網(wǎng)絡(luò)后都分配一個(gè) IP 地址,我們?nèi)绾握业骄唧w的計(jì)算機(jī)節(jié)點(diǎn)就是『網(wǎng)絡(luò)層』的功能。
作用于該層功能的協(xié)議:IP 協(xié)議、ARP協(xié)議、ICMP協(xié)議
4、傳輸層
每個(gè)計(jì)算機(jī)上都運(yùn)行著多個(gè)程序,每個(gè)程序都有唯一的端口號(hào),我們?nèi)绾握业骄唧w某個(gè)程序來接收和發(fā)送數(shù)據(jù)就是『傳輸層』的功能。
作用于該層功能的協(xié)議:TCP 協(xié)議、UDP協(xié)議
5、應(yīng)用層
用戶唯一能接觸到的一層,應(yīng)用之間的數(shù)據(jù)鏈接協(xié)議,規(guī)定應(yīng)用程序的數(shù)據(jù)格式就是『應(yīng)用層』的功能。例如瀏覽器向服務(wù)發(fā)送HTTP請(qǐng)求時(shí),就必須按照Http 協(xié)議規(guī)定的格式發(fā)送數(shù)據(jù)。
作用于該層功能的協(xié)議:HTTP 協(xié)議、DHCP協(xié)議、FTP協(xié)議、SMTP協(xié)議
二、每層協(xié)議功能詳細(xì)說明
1、物理層
將計(jì)算機(jī)用物理設(shè)備鏈接,使用網(wǎng)絡(luò)物理方式傳輸0/1 序列。
其中物理設(shè)備主要包含光纜、電纜、雙絞線、無線電波等。也是我們物理上能觀察到的。
2、數(shù)據(jù)鏈路層
『數(shù)據(jù)鏈路層』的功能就是針對(duì) 0/1序列解讀和分組。
1.以太網(wǎng)協(xié)議
以太網(wǎng)規(guī)定:一組0/1電信號(hào)構(gòu)成一個(gè)數(shù)據(jù)包,叫做幀,每一幀包含標(biāo)頭(Head)和數(shù)據(jù)體(Data)
標(biāo)頭包含了數(shù)據(jù)類型,發(fā)送者和接受者等信息。
"標(biāo)頭"的長(zhǎng)度,固定為18字節(jié),"數(shù)據(jù)"的長(zhǎng)度,最短為46字節(jié),最長(zhǎng)為1500字節(jié),整個(gè)"幀"最短為64字節(jié),最長(zhǎng)為1518字節(jié)。如果數(shù)據(jù)很長(zhǎng),就必須分割成多個(gè)幀進(jìn)行發(fā)送
。
2.MAC 地址
上面提到數(shù)據(jù)包標(biāo)頭中包含了發(fā)送者和接受者信息,發(fā)送和接受的設(shè)備都有其唯一標(biāo)識(shí)(網(wǎng)卡地址,MAC地址),每塊網(wǎng)卡出廠的時(shí)候,都有唯一的MAC地址,長(zhǎng)度是48個(gè)二進(jìn)制位,通常用12個(gè)十六進(jìn)制數(shù)表示,就可以定位網(wǎng)卡和數(shù)據(jù)包的路徑了。
3.廣播
如果都知道了發(fā)送和接受設(shè)備的MAC地址了,如何做到一對(duì)一準(zhǔn)確傳輸呢?
以太網(wǎng)采用一種很"原始"的方式,他會(huì)向子網(wǎng)內(nèi)
的所有設(shè)備進(jìn)行廣播??,接收的機(jī)器判斷自己的 MAC 地址和標(biāo)頭中的 MAC 地址是否相等,相等則接收數(shù)據(jù),否則丟棄數(shù)據(jù)。
上面廣播方式時(shí)默認(rèn)了發(fā)送者是知道接收者的MAC地址的。那如何獲取接受者的 MAC 地址呢?這個(gè)是根據(jù)網(wǎng)絡(luò)層的ARP 協(xié)議獲取的。
3、網(wǎng)絡(luò)層
數(shù)據(jù)鏈路層中以太網(wǎng)以廣播的形式傳輸,如果北京和巴黎兩臺(tái)計(jì)算機(jī)處于同一子網(wǎng)內(nèi)時(shí),兩者進(jìn)行通信時(shí),如果還是采用這種廣播的方式,那就造成資源浪費(fèi)和十分低效,所以兩者肯定不能存在同一子網(wǎng)范圍內(nèi)
(只是包含了附近少量的設(shè)備)。那么如何區(qū)分多個(gè)設(shè)備是屬于同一子網(wǎng)內(nèi)呢?
我們知道,MAC 地址只與物理設(shè)備有關(guān),與網(wǎng)絡(luò)無關(guān),所以這是網(wǎng)絡(luò)層的功能。
網(wǎng)絡(luò)層引進(jìn)一套新的地址,使我們能夠區(qū)分兩臺(tái)設(shè)備是否處于同一子網(wǎng)絡(luò),這個(gè)地址簡(jiǎn)稱 『網(wǎng)絡(luò)地址』。
1.IP 協(xié)議
IP 協(xié)議功能是為每一個(gè)計(jì)算機(jī)分配網(wǎng)絡(luò)地址,并且判斷哪些網(wǎng)絡(luò)地址屬于同一子網(wǎng)絡(luò)
。 它所定義分配的地址,就被稱為IP地址。(注意:IP 地址是IP 協(xié)議定義的網(wǎng)絡(luò)地址的稱呼,IP 協(xié)議則是一套協(xié)議)。
IPv4規(guī)定,網(wǎng)絡(luò)地址由32個(gè)二進(jìn)制位組成,從0.0.0.0一直到255.255.255.255,互聯(lián)網(wǎng)上的每一臺(tái)計(jì)算機(jī),都會(huì)分配到一個(gè)IP地址。這個(gè)地址分成兩個(gè)部分,前一部分代表網(wǎng)絡(luò),后一部分代表主機(jī),如何區(qū)分哪部分是主機(jī)部分,需要用到另一個(gè)參數(shù)"子網(wǎng)掩碼",形式上等同于IP地址,網(wǎng)絡(luò)部分全部為1,主機(jī)部分全部為0,將兩個(gè)IP地址與子網(wǎng)掩碼分別進(jìn)行AND運(yùn)算(兩個(gè)數(shù)位都為1,運(yùn)算結(jié)果為1,否則為0),然后比較結(jié)果是否相同,如果是的話,就表明它們?cè)谕粋€(gè)子網(wǎng)絡(luò)中。
例如:
已知IP地址172.16.254.1和172.16.254.233的子網(wǎng)掩碼都是255.255.255.0,請(qǐng)問它們是否在同一個(gè)子網(wǎng)絡(luò)??jī)烧吲c子網(wǎng)掩碼分別進(jìn)行AND運(yùn)算,結(jié)果都是172.16.254.0,因此它們?cè)谕粋€(gè)子網(wǎng)絡(luò)。
2.IP 數(shù)據(jù)包
根據(jù) IP協(xié)議發(fā)送的數(shù)據(jù)包就成為IP 數(shù)據(jù)包,IP數(shù)據(jù)包也分為"標(biāo)頭"和"數(shù)據(jù)"兩個(gè)部分。數(shù)據(jù)部分直接放進(jìn)以太網(wǎng)數(shù)據(jù)包的"數(shù)據(jù)"部分 ,標(biāo)頭部分增加IP地址信息(完全不用修改以太網(wǎng)的規(guī)格。這就是互聯(lián)網(wǎng)分層結(jié)構(gòu)的好處:上層的變動(dòng)完全不涉及下層的結(jié)構(gòu))。
3.ARP 協(xié)議
ARP 協(xié)議(地址解析協(xié)議)主要負(fù)責(zé) IP 地址和 MAC 地址的映射關(guān)系解析。
ARP協(xié)議也是發(fā)出一個(gè)數(shù)據(jù)包(包含在以太網(wǎng)數(shù)據(jù)包中,這里也體現(xiàn)了:上層協(xié)議可以使用下層協(xié)議的功能),其中包含它所要查詢主機(jī)的IP地址,在對(duì)方的MAC地址這一欄,填的是FF:FF:FF:FF:FF:FF,表示這是一個(gè)"廣播"地址。它所在子網(wǎng)絡(luò)的每一臺(tái)主機(jī),都會(huì)收到這個(gè)數(shù)據(jù)包,從中取出IP地址,與自身的IP地址進(jìn)行比較。如果兩者相同,都做出回復(fù),向?qū)Ψ綀?bào)告自己的MAC地址,否則就丟棄這個(gè)包。
4、傳輸層
有了MAC地址和IP地址,我們已經(jīng)可以在互聯(lián)網(wǎng)上任意兩臺(tái)主機(jī)上建立通信。
但是每個(gè)計(jì)算機(jī)上都運(yùn)行著多個(gè)程序,還需要一個(gè)參數(shù)表示每個(gè)程序的唯一性。這個(gè)參數(shù)就叫做"端口"(port)。
"端口"是0到65535之間的一個(gè)整數(shù),正好16個(gè)二進(jìn)制位。0到1023的端口被系統(tǒng)占用,用戶只能選用大于1023的端口。不管是瀏覽網(wǎng)頁還是在線聊天,應(yīng)用程序會(huì)隨機(jī)選用一個(gè)端口,然后與服務(wù)器的相應(yīng)端口聯(lián)系。
“網(wǎng)絡(luò)層"的功能是建立"主機(jī)到主機(jī)"的通信,“傳輸層"的功能是建立"端口到端口"的通信。
那么如何將端口信息加到數(shù)據(jù)報(bào)中呢,使用了下面的協(xié)議。
1.UDP 協(xié)議
用戶數(shù)據(jù)報(bào)協(xié)議,也是由"標(biāo)頭"和"數(shù)據(jù)"兩部分組成,"標(biāo)頭"部分主要定義了發(fā)出端口和接收端口。"數(shù)據(jù)"部分就是具體的內(nèi)容。然后,把整個(gè)UDP數(shù)據(jù)包放入IP數(shù)據(jù)包的"數(shù)據(jù)"部分,而前面說過,IP數(shù)據(jù)包又是放在以太網(wǎng)數(shù)據(jù)包之中的,所以整個(gè)以太網(wǎng)數(shù)據(jù)包現(xiàn)在變成了下面這樣。
2.TCP 協(xié)議
傳輸控制協(xié)議。
對(duì)比UDP協(xié)議,TCP 協(xié)議提供了建立連接的可靠傳輸,可靠性強(qiáng),實(shí)現(xiàn)復(fù)雜。
詳細(xì)內(nèi)容后面講。
5、應(yīng)用層
應(yīng)用層主要功能就是規(guī)定應(yīng)用程序的數(shù)據(jù)格式。
舉例來說,TCP協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù),比如 Email、WWW、FTP等等。那么,必須有不同協(xié)議規(guī)定電子郵件、網(wǎng)頁、FTP數(shù)據(jù)的格式,這些應(yīng)用程序協(xié)議就構(gòu)成了"應(yīng)用層"。
1. DHCP
計(jì)算機(jī)每次開機(jī)都會(huì)動(dòng)態(tài)分配一個(gè) IP 地址,DHCP 協(xié)議就是實(shí)現(xiàn)這個(gè)過程的(動(dòng)態(tài)主機(jī)分配協(xié)議)。
該協(xié)議規(guī)定,子網(wǎng)內(nèi)有一臺(tái)計(jì)算機(jī)專門負(fù)責(zé)管理本網(wǎng)絡(luò)的IP地址,這臺(tái)主機(jī)稱為 DHCP 服務(wù)器,每臺(tái)計(jì)算機(jī)開始接入網(wǎng)絡(luò)時(shí),回動(dòng)態(tài)的向服務(wù)器發(fā)送一個(gè)『DHCP數(shù)據(jù)包』來申請(qǐng)IP地址和相關(guān)的網(wǎng)絡(luò)參數(shù)。
DHCP 協(xié)議是基于UDP協(xié)議的應(yīng)用層協(xié)議
,其『DHCP數(shù)據(jù)包』 格式如上:
(1)以太網(wǎng)標(biāo)頭中存放本機(jī)MAC 地址、DHCP服務(wù)器 MAC 地址(此時(shí)還不知道,設(shè)置為廣播地址:FF-FF-FF-FF-FF-FF)
(2)IP 標(biāo)頭中存放發(fā)出方和接收方的 IP 地址,兩者都不知,前者:0:0:0:0,后者:255:255:255:255
(3)UDP標(biāo)頭中存放發(fā)出方的端口和接收方的端口。這一部分是DHCP協(xié)議規(guī)定好的,發(fā)出方是68端口,接收方是67端口
以太網(wǎng)是廣播發(fā)送的,每臺(tái)計(jì)算機(jī)都收到請(qǐng)求,拿到廣播的 MAC 地址時(shí),都不確定。所以必須要解析 IP地址,當(dāng)看到發(fā)出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服務(wù)器知道"這個(gè)包是發(fā)給我的",而其他計(jì)算機(jī)就可以丟棄這個(gè)包。
接下來,DHCP服務(wù)器解析這個(gè)包的數(shù)據(jù),發(fā)送回去一個(gè)"DHCP響應(yīng)"數(shù)據(jù)包,以同樣的格式,分配的 IP 和網(wǎng)絡(luò)信息都在 DATA 中。至此,新加入的計(jì)算機(jī)收到這個(gè)響應(yīng)包,于是就知道了自己的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址、DNS服務(wù)器等等參數(shù)。
2.HTTP協(xié)議
HTTP協(xié)議是基于 TCP 的應(yīng)用層協(xié)議。
HTTP格式如下:文章來源:http://www.zghlxwxcb.cn/news/detail-607684.html
GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) …
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: … …
我們假定這個(gè)部分的長(zhǎng)度為4960字節(jié),它會(huì)被嵌在TCP數(shù)據(jù)包之中。文章來源地址http://www.zghlxwxcb.cn/news/detail-607684.html
到了這里,關(guān)于TCP/IP 五層協(xié)議模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!