internet協(xié)議入門[最全面的協(xié)議知識(shí)]

http://web.jobbole.com/88734/
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

前言
勞于讀書蛾绎,逸于作文。
博主之前寫過一篇博客:網(wǎng)絡(luò)協(xié)議分析,在這篇博客里通過抓包竹宋,具體的分析了不同網(wǎng)絡(luò)協(xié)議的傳送的數(shù)據(jù)和傳送的方式。而此篇博客則用來作為一個(gè)大綱式的內(nèi)容尸变,按照層級(jí)劃分岸霹,逐步介紹各層級(jí)的協(xié)議以及他們所起的作用棺滞。若有錯(cuò)誤之處拄显,歡迎批評(píng)指正苟径。
正文
1.概述
互聯(lián)網(wǎng)的實(shí)現(xiàn),分成好幾層躬审。每一層都有自己的功能涩笤,就像建筑物一樣,每一層都靠下一層支持盒件。
1.1 模型劃分
首先我們需要明白的事互聯(lián)網(wǎng)的實(shí)現(xiàn)是分層級(jí)的,那么這個(gè)層級(jí)的劃分根據(jù)不同的模型又有一些不同舱禽。其中又有兩個(gè)模型的劃分是我們最常見到的,一個(gè)是OSI七層劃分誊稚,另一個(gè)是TCP/IP五層劃分翔始。他們分別把互聯(lián)網(wǎng)分成了七層和五層罗心。
OSI和TCP/IP模型是很基礎(chǔ)但又非常重要的網(wǎng)絡(luò)基礎(chǔ)知識(shí)

OSI七層模型
OSI的層
功能
TCP/IP協(xié)議族

應(yīng)用層
文件傳輸,電子郵件城瞎,文件服務(wù)渤闷,虛擬終端
TFTP,HTTP脖镀,SNMP飒箭,F(xiàn)TP,SMTP蜒灰,DNS弦蹂,Telnet

表示層
數(shù)據(jù)格式化,代碼轉(zhuǎn)換强窖,數(shù)據(jù)加密
沒有協(xié)議

會(huì)話層
解除或建立與別的接點(diǎn)的聯(lián)系
沒有協(xié)議

傳輸層
提供端對(duì)端的接口
TCP凸椿,UDP

網(wǎng)絡(luò)層
為數(shù)據(jù)包選擇路由
IP,ICMP翅溺,RIP脑漫,OSPF,BGP咙崎,IGMP

數(shù)據(jù)鏈路層
傳輸有地址的幀以及錯(cuò)誤檢測功能
SLIP优幸,CSLIP,PPP叙凡,ARP劈伴,RARP,MTU

物理層
以二進(jìn)制數(shù)據(jù)形式在物理媒體上傳輸數(shù)據(jù)
ISO2110握爷,IEEE802跛璧,IEEE802.2

1.2 層與協(xié)議
每一層都是為了完成一種功能。為了實(shí)現(xiàn)這些功能新啼,就需要大家都遵守共同的規(guī)則追城。
大家都遵守的規(guī)則,就叫做”協(xié)議”(protocol)燥撞。
這個(gè)協(xié)議就是我們所說的互聯(lián)網(wǎng)協(xié)議
(internet protocol),每一層都有若干個(gè)協(xié)議座柱,他們共同構(gòu)成了我們所要講的互聯(lián)網(wǎng)協(xié)議。
由以上表格我們可以看出物舒,在OSI七層協(xié)議
模型里會(huì)話層和表示層是沒有協(xié)議的色洞,這里我們?nèi)〉氖荰CP/IP
模型,分成五層也比較容易解釋冠胯。
那么這五層又都是什么呢火诸?從上到下分別是:
層級(jí)
網(wǎng)絡(luò)設(shè)備

應(yīng)用層
 也就是用戶使用的應(yīng)用了。

傳輸層
四層交換機(jī)荠察、也有工作在四層的路由器

網(wǎng)絡(luò)層
路由器置蜀、三層交換機(jī)

數(shù)據(jù)鏈路層
網(wǎng)橋(現(xiàn)已很少使用)奈搜、以太網(wǎng)交換機(jī)(二層交換機(jī))、網(wǎng)卡(其實(shí)網(wǎng)卡是一半工作在物理層盯荤、一半工作在數(shù)據(jù)鏈路層)

物理層
網(wǎng)卡馋吗,光纖,CAT-5線秋秤,中繼器宏粤、集線器、還有我們通常說的雙絞線也工作在物理層

如上表格所示航缀,最底下的一層叫做物理層
(Physical Layer)商架,最上面的一層叫做應(yīng)用層
(Application Layer),中間的三層(自下而上)分別是數(shù)據(jù)鏈路層
(Data Link Layer)芥玉、網(wǎng)絡(luò)層
(Network Layer)和傳輸層
(Transport Layer)蛇摸。越下面的層,越靠近硬件灿巧;越上面的層赶袄,越靠近用戶。下面來介紹每一層的功能抠藕,著重介紹每一層的主要協(xié)議

  1. 物理層
    物理層規(guī)定:為傳輸數(shù)據(jù)所需要的物理鏈路創(chuàng)建饿肺、維持、拆除盾似,而提供具有機(jī)械的敬辣,電子的,功能的和規(guī)范的特性 ——物理層(維基百科)

上面維基百科對(duì)于物理層的解釋說白了就是要把電腦連在一塊零院,方法呢溉跃,可以用光纜、電纜告抄、雙絞線撰茎、無線電波等方式。


物理層
就是把電腦連接起來的物理手段打洼。它主要規(guī)定了網(wǎng)絡(luò)的一些電氣特性龄糊,作用是負(fù)責(zé)傳送0和1的電信號(hào)。

  1. 數(shù)據(jù)鏈路層
    在兩個(gè)網(wǎng)絡(luò)實(shí)體之間提供數(shù)據(jù)鏈路連接的創(chuàng)建募疮、維持和釋放管理炫惩。構(gòu)成數(shù)據(jù)鏈路數(shù)據(jù)單元(frame:數(shù)據(jù)幀或幀),并對(duì)幀定界阿浓、同步他嚷、收發(fā)順序的控制。 ——數(shù)據(jù)鏈路層(維基百科)

3.1 定義
上面說的網(wǎng)絡(luò)實(shí)體也就是我們?nèi)粘S玫降氖謾C(jī)電腦等聯(lián)網(wǎng)設(shè)備了,我們剛剛了解到不同網(wǎng)絡(luò)實(shí)體之間通過一些物理手段(光纜爸舒,雙絞線,無線電波等)連接在了一起稿蹲,來進(jìn)行傳輸0和1電信號(hào)扭勉。單純的傳輸0和1沒有任何意義,肯定是要規(guī)定電信號(hào)的解讀方式苛聘,多少個(gè)電信號(hào)是一組涂炎?每一組代表的意義又是什么?
這就是數(shù)據(jù)鏈路層的功能设哗,規(guī)定這些電信號(hào)的分組方式唱捣。
3.2 以太網(wǎng)協(xié)議
剛剛開始的時(shí)候,每一家公司都有自己的一套對(duì)于電信號(hào)的解讀方式网梢,后來隨著時(shí)間的推移震缭,一種叫做以太網(wǎng)
(Ethernet)的協(xié)議,占據(jù)了主導(dǎo)地位战虏。
以太網(wǎng)規(guī)定拣宰,一組電信號(hào)構(gòu)成一個(gè)數(shù)據(jù)包,叫做”幀”(Frame)烦感。每一幀分成兩個(gè)部分:標(biāo)頭(Head)和數(shù)據(jù)(Data)巡社。


標(biāo)頭
包含數(shù)據(jù)包的一些說明項(xiàng),比如發(fā)送者手趣、接受者晌该、數(shù)據(jù)類型等等;數(shù)據(jù)
則是數(shù)據(jù)包的具體內(nèi)容绿渣。
標(biāo)頭
的長度朝群,固定為18字節(jié)。數(shù)據(jù)
的長度怯晕,最短為46字節(jié)潜圃,最長為1500字節(jié)。因此舟茶,整個(gè)幀
最短為64字節(jié)谭期,最長為1518字節(jié)。如果數(shù)據(jù)很長吧凉,就必須分割成多個(gè)幀
進(jìn)行發(fā)送隧出。
3.3 MAC地址
我想在日常上網(wǎng)過程中,最為熟悉的就是用一根網(wǎng)線連接端口和電腦了吧阀捅,網(wǎng)線連接電腦實(shí)際上是連接的這個(gè)玩意兒:

上面就是我們所說的網(wǎng)卡了胀瞪,它在物理層和數(shù)據(jù)鏈路層兩個(gè)層級(jí)工作,正所謂能力越大責(zé)任越大,網(wǎng)卡的重要性自然不言而喻了凄诞。前面說圆雁,以太網(wǎng)規(guī)定每一個(gè)數(shù)據(jù)包都有一個(gè)標(biāo)頭
(Head)來說明發(fā)送者,接受者信息帆谍,數(shù)據(jù)類型等信息伪朽。而網(wǎng)卡就是以太網(wǎng)規(guī)定的來標(biāo)明發(fā)送者和接受者信息的工具。
網(wǎng)卡的地址汛蝙,就是數(shù)據(jù)包的發(fā)送地址和接收地址烈涮,這叫做MAC地址。
這個(gè)Mac地址自然就是發(fā)送者窖剑,接受者信息的了坚洽,通過這個(gè)每臺(tái)電腦獨(dú)一無二的地址計(jì)算機(jī)就能通過一些方式找到另一臺(tái)電腦了。每塊網(wǎng)卡出廠的時(shí)候西土,都有一個(gè)全世界獨(dú)一無二的MAC地址讶舰,長度是48個(gè)二進(jìn)制位,通常用12個(gè)十六進(jìn)制數(shù)表示翠储。有了MAC地址绘雁,就可以定位網(wǎng)卡和數(shù)據(jù)包的路徑了。
3.4 廣播
我們現(xiàn)在有了網(wǎng)卡援所,也知道每一塊網(wǎng)卡都有一個(gè)世界上獨(dú)一無二的Mac地址庐舟,那發(fā)送者應(yīng)該怎么去找接受者這臺(tái)設(shè)備呢,換句話說發(fā)送者怎么才能知道接受者的Mac地址呢住拭?這就需要另一個(gè)協(xié)議了叫做ARP協(xié)議挪略,這個(gè)協(xié)議留在后面介紹。這里我們只需要知道滔岳,發(fā)送者必須要知道接受者的Mac地址才能準(zhǔn)確的發(fā)送數(shù)據(jù)杠娱。
以太網(wǎng)采用了一種廣撒網(wǎng)的方式,發(fā)送者發(fā)送的數(shù)據(jù)包會(huì)發(fā)送給本網(wǎng)絡(luò)內(nèi)所有的計(jì)算機(jī)谱煤,然后由接收到數(shù)據(jù)包的計(jì)算機(jī)來判斷自己是不是接收方摊求。

圖片來自維基百科廣播,如圖所示刘离,紅色主機(jī)是發(fā)送方室叉,綠色某一臺(tái)是接收方,數(shù)據(jù)包會(huì)發(fā)送給同一個(gè)子網(wǎng)絡(luò)的所有綠色主機(jī)硫惕,然后由綠色主機(jī)根據(jù)數(shù)據(jù)包的標(biāo)頭來判斷自己是不是接收方茧痕。如果是,就接受這個(gè)包恼除,不是則丟棄踪旷。這種發(fā)送數(shù)據(jù)的方式就是廣播

綜上,有了對(duì)于數(shù)據(jù)包的定義令野,網(wǎng)卡的Mac地址舀患,廣播的發(fā)送方式,數(shù)據(jù)鏈路層基本就算完整了气破,然后不同計(jì)算機(jī)之間就可以傳送數(shù)據(jù)了构舟。
4.網(wǎng)絡(luò)層
網(wǎng)絡(luò)層使兩終端系統(tǒng)能夠互連且決定最佳路徑,并具有一定的擁塞控制和流量控制的能力堵幽。 ——網(wǎng)絡(luò)層(維基百科)

4.1 網(wǎng)絡(luò)層的產(chǎn)生
走到這里我們實(shí)現(xiàn)的只是在一個(gè)子網(wǎng)絡(luò)里傳送數(shù)據(jù)。但我們知道弹澎,互聯(lián)網(wǎng)實(shí)際上是由大大小小的子網(wǎng)絡(luò)組成的:


大到一個(gè)ISP(因特網(wǎng)服務(wù)提供商朴下,國內(nèi)較大的比如移動(dòng)電信等),小到一個(gè)公司的局域網(wǎng)苦蒿,正事這些大大小小的子網(wǎng)絡(luò)組成了龐大的互聯(lián)網(wǎng)體系殴胧。但實(shí)際上,廣播的方式只能在子網(wǎng)絡(luò)內(nèi)進(jìn)行佩迟,不同子網(wǎng)絡(luò)之間廣播方式是行不通的团滥。
因此我們需要一種方法能夠判斷兩臺(tái)主機(jī)是否在同一個(gè)子網(wǎng)絡(luò)之內(nèi),如果在同一個(gè)子網(wǎng)絡(luò)就以廣播的方式傳輸數(shù)據(jù)报强,如果不在同一個(gè)子網(wǎng)絡(luò)就以路由
的方式傳輸(路由是個(gè)比較大的概念灸姊,本文不涉及),關(guān)于路由協(xié)議的了解戳這里秉溉,MAC地址做不到這一點(diǎn)力惯,它只和廠商有關(guān),和計(jì)算機(jī)所處的網(wǎng)絡(luò)并沒有關(guān)系召嘶。
這就導(dǎo)致了”網(wǎng)絡(luò)層”的誕生父晶。它的作用是引進(jìn)一套新的地址,使得我們能夠區(qū)分不同的計(jì)算機(jī)是否屬于同一個(gè)子網(wǎng)絡(luò)弄跌。這套地址就叫做”網(wǎng)絡(luò)地址”甲喝,簡稱”網(wǎng)址”。
網(wǎng)址的出現(xiàn)铛只,使得每臺(tái)計(jì)算機(jī)都有了兩個(gè)地址埠胖,一個(gè)是出生就帶著不會(huì)改變的Mac地址,一個(gè)是后期網(wǎng)絡(luò)管理員分配的可變的網(wǎng)絡(luò)地址格仲。網(wǎng)址判斷兩臺(tái)計(jì)算機(jī)是否在同一個(gè)子網(wǎng)絡(luò)押袍,Mac地址則是將數(shù)據(jù)準(zhǔn)確的傳遞到目標(biāo)計(jì)算機(jī)中。因此邏輯上可以判斷必定是先處理網(wǎng)絡(luò)地址凯肋,再處理Mac地址谊惭。
4.2 IP協(xié)議
規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做IP協(xié)議。它所定義的地址圈盔,就被稱為IP地址豹芯。
現(xiàn)在廣泛采用的是IP協(xié)議第四版,簡稱IPv4驱敲。這個(gè)版本規(guī)定铁蹈,網(wǎng)絡(luò)地址由32個(gè)二進(jìn)制位組成,IPV6則是64個(gè)二進(jìn)制組成众眨。

由于IPV6還沒有廣泛應(yīng)用握牧,這里還是用IPV4講解。一般我們用分成四段(IPV6分成八段)的十進(jìn)制數(shù)表示IP地址娩梨,從0.0.0.0一直到255.255.255.255沿腰。這個(gè)地址分成兩部分,前一部分是網(wǎng)絡(luò)部分狈定,后一部分代表主機(jī)颂龙。But!!!網(wǎng)絡(luò)部分具體是前16位還是前24位,我們沒法從IP地址進(jìn)行判斷纽什,這是我們就需要另一參數(shù)叫做子網(wǎng)掩碼
措嵌。
所謂”子網(wǎng)掩碼”,就是表示子網(wǎng)絡(luò)特征的一個(gè)參數(shù)芦缰。它在形式上等同于IP地址企巢,也是一個(gè)32位二進(jìn)制數(shù)字,它的網(wǎng)絡(luò)部分全部為1让蕾,主機(jī)部分全部為0包斑。比如,IP地址172.16.254.1涕俗,如果已知網(wǎng)絡(luò)部分是前24位罗丰,主機(jī)部分是后8位,那么子網(wǎng)絡(luò)掩碼就是11111111.11111111.11111111.00000000再姑,寫成十進(jìn)制就是255.255.255.0萌抵。
知道”子網(wǎng)掩碼”,我們就能判斷元镀,任意兩個(gè)IP地址是否處在同一個(gè)子網(wǎng)絡(luò)绍填。方法是將兩個(gè)IP地址與子網(wǎng)掩碼分別進(jìn)行AND運(yùn)算(兩個(gè)數(shù)位都為1,運(yùn)算結(jié)果為1栖疑,否則為0)讨永,然后比較結(jié)果是否相同,如果是的話遇革,就表明它們在同一個(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ò)著角?兩者與子網(wǎng)掩碼分別進(jìn)行AND運(yùn)算,結(jié)果都是172.16.254.0旋恼,因此它們在同一個(gè)子網(wǎng)絡(luò)吏口。
那么問題來了,IP地址放在哪里存儲(chǔ)呢冰更?是的产徊,我們可以直接存儲(chǔ)在前面提到的以太網(wǎng)數(shù)據(jù)包的Data部分。
IP地址長這樣:

“標(biāo)頭”部分主要包括版本蜀细、長度囚痴、IP地址等信息,”數(shù)據(jù)”部分則是IP數(shù)據(jù)包的具體內(nèi)容∩笤幔現(xiàn)在把它加到以太網(wǎng)數(shù)據(jù)包里面:

IP數(shù)據(jù)包的”標(biāo)頭”部分的長度為20到60字節(jié),整個(gè)數(shù)據(jù)包的總長度最大為65,535字節(jié)奕谭。因此涣觉,理論上,一個(gè)IP數(shù)據(jù)包的”數(shù)據(jù)”部分血柳,最長為65,515字節(jié)官册。前面說過,以太網(wǎng)數(shù)據(jù)包的”數(shù)據(jù)”部分难捌,最長只有1500字節(jié)膝宁。因此,如果IP數(shù)據(jù)包超過了1500字節(jié)根吁,它就需要分割成幾個(gè)以太網(wǎng)數(shù)據(jù)包员淫,分開發(fā)送了。
4.3 ARP協(xié)議
現(xiàn)在為止我們必須知道兩個(gè)地址击敌,一個(gè)是IP地址介返,一個(gè)是Mac地址才能把數(shù)據(jù)發(fā)送到目標(biāo)主機(jī),那么IP地址是已知的(后文解釋)沃斤,MAC地址怎么獲取呢圣蝎?
我們需要一種能通過IP地址得知MAC地址的機(jī)制,這個(gè)極致就是ARP協(xié)議衡瓶。
那么徘公,這里又分成兩種情況,一種是兩臺(tái)計(jì)算機(jī)在同一個(gè)子網(wǎng)絡(luò)哮针,那么我們可以用ARP協(xié)議关面,得到對(duì)方的MAC地址坦袍。ARP協(xié)議也是發(fā)出一個(gè)數(shù)據(jù)包(包含在以太網(wǎng)數(shù)據(jù)包中),其中包含它所要查詢主機(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è)包。
另一種情況是兩臺(tái)計(jì)算機(jī)不在同一個(gè)子網(wǎng)絡(luò)漠其,那么事實(shí)上沒有辦法得到對(duì)方的MAC地址嘴高,只能把數(shù)據(jù)包傳送到兩個(gè)子網(wǎng)絡(luò)連接處的”網(wǎng)關(guān)”(gateway),讓網(wǎng)關(guān)(后文解釋)去處理和屎。
4.4總結(jié)
這一層為止拴驮,如果目標(biāo)主機(jī)和本機(jī)在同一個(gè)子網(wǎng)絡(luò),我們通過IP地址柴信,子網(wǎng)掩碼比較得出在同一個(gè)子網(wǎng)絡(luò)的結(jié)果套啤,在通過ARP協(xié)議得到目標(biāo)主機(jī)的Mac地址,發(fā)送随常!Success潜沦!
如果目標(biāo)主機(jī)和本機(jī)不在同一個(gè)子網(wǎng)絡(luò),我們通過IP地址绪氛,子網(wǎng)掩碼比較得出在同一個(gè)子網(wǎng)絡(luò)的結(jié)果唆鸡,然后交給本網(wǎng)絡(luò)的網(wǎng)關(guān)A處理,網(wǎng)關(guān)A根據(jù)路由協(xié)議得到目標(biāo)主機(jī)所在子網(wǎng)絡(luò)的網(wǎng)關(guān)B枣察,網(wǎng)關(guān)B再通過IP地址判斷得出和目標(biāo)主機(jī)在同一個(gè)子網(wǎng)絡(luò)喇闸,然后再通過ARP協(xié)議獲取Mac地址,發(fā)送询件!Success!

  1. 傳輸層
    該層的協(xié)議為應(yīng)用進(jìn)程提供端到端的通信服務(wù)燃乍。它提供面向連接的數(shù)據(jù)流支持、可靠性宛琅、流量控制刻蟹、多路復(fù)用等服務(wù)『俦伲——傳輸層(維基百科)

5.1 傳輸層的產(chǎn)生
我們現(xiàn)在成功的實(shí)現(xiàn)了主機(jī)和主機(jī)之間的通信舆瘪,那么問題又來了片效,主機(jī)之間不同的程序該怎么區(qū)分這個(gè)數(shù)據(jù)是不是發(fā)送給自己的呢。要知道英古,當(dāng)你正在QQ聊天的時(shí)候淀衣,微信發(fā)送過來的消息內(nèi)容呈現(xiàn)在了QQ界面,這會(huì)讓計(jì)算機(jī)懵逼的召调!太混亂了膨桥!
這個(gè)時(shí)候我們就需要一個(gè)新的參數(shù)了!這個(gè)參數(shù)就是端口
唠叛。
可連接兩個(gè)或兩個(gè)以上不同之電路裝置使之能夠傳遞電子或任何形式訊號(hào)之裝置.——端口(維基百科)

它其實(shí)是每一個(gè)使用網(wǎng)卡的程序的編號(hào)只嚣。每個(gè)數(shù)據(jù)包都發(fā)到主機(jī)的特定端口,所以不同的程序就能取到自己所需要的數(shù)據(jù)艺沼。
不同的程序在計(jì)算機(jī)中所占用的端口是不同的册舞,確切的說是不能相同的,否則就混亂了障般。比如调鲸,HTTP所占用的端口一般是80,HTTPS所占用的端口一般是443挽荡。
端口
是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)系。
確切的說祸穷,傳輸層實(shí)現(xiàn)的是端對(duì)端的服務(wù)性穿,網(wǎng)絡(luò)層實(shí)現(xiàn)的僅僅是主機(jī)到主機(jī)之間的服務(wù)。只要確定主機(jī)和端口雷滚,我們就能實(shí)現(xiàn)程序之間的交流需曾。因此,Unix系統(tǒng)就把主機(jī)+端口祈远,叫做”套接字”(socket)呆万。
5.2 UDP協(xié)議
現(xiàn)在又出了一個(gè)新的數(shù)據(jù),就是端口信息〕捣荩現(xiàn)在以太網(wǎng)數(shù)據(jù)包里已經(jīng)包括發(fā)送者谋减,接受者信息,數(shù)據(jù)類型扫沼,IP地址數(shù)據(jù)包出爹,UDp數(shù)據(jù)包庄吼。
UDP數(shù)據(jù)包同樣是由標(biāo)頭和數(shù)據(jù)組成:


標(biāo)頭
部分主要定義了發(fā)出端口和接收端口,數(shù)據(jù)
部分定義了具體的內(nèi)容严就。然后把它放在IP地址數(shù)據(jù)包的數(shù)據(jù)部分总寻,前面我們說過IP數(shù)據(jù)包是放在以太網(wǎng)數(shù)據(jù)包的數(shù)據(jù)里面的,那么現(xiàn)在整個(gè)以太網(wǎng)數(shù)據(jù)包就成了這樣:

UDP數(shù)據(jù)包非常簡單梢为,”標(biāo)頭”部分一共只有8個(gè)字節(jié)渐行,總長度不超過65,535字節(jié),一個(gè)IP數(shù)據(jù)包正好可以容納抖誉。
5.3 TCP協(xié)議
為了解決這個(gè)問題殊轴,提高網(wǎng)絡(luò)可靠性,TCP協(xié)議就誕生了袒炉。這個(gè)協(xié)議非常復(fù)雜旁理,但可以近似認(rèn)為,它就是有確認(rèn)機(jī)制的UDP協(xié)議我磁,每發(fā)出一個(gè)數(shù)據(jù)包都要求確認(rèn)孽文。如果有一個(gè)數(shù)據(jù)包遺失,就收不到確認(rèn)夺艰,發(fā)出方就知道有必要重發(fā)這個(gè)數(shù)據(jù)包了芋哭。
因此,TCP協(xié)議能夠確保數(shù)據(jù)不會(huì)遺失郁副。它的缺點(diǎn)是過程復(fù)雜减牺、實(shí)現(xiàn)困難、消耗較多的資源存谎。TCP數(shù)據(jù)包和UDP數(shù)據(jù)包一樣拔疚,都是內(nèi)嵌在IP數(shù)據(jù)包的”數(shù)據(jù)”部分。TCP數(shù)據(jù)包沒有長度限制既荚,理論上可以無限長稚失,但是為了保證網(wǎng)絡(luò)的效率,通常TCP數(shù)據(jù)包的長度不會(huì)超過IP數(shù)據(jù)包的長度恰聘,以確保單個(gè)TCP數(shù)據(jù)包不必再分割句各。
關(guān)于TCP協(xié)議的三次握手和四次揮手過程博主在網(wǎng)絡(luò)協(xié)議分析這篇博客里有較為詳細(xì)的說明。

  1. 應(yīng)用層
    應(yīng)用層直接和應(yīng)用程序接口并提供常見的網(wǎng)絡(luò)應(yīng)用服務(wù)晴叨。 ——應(yīng)用層(維基百科)

6.1 應(yīng)用層介紹
應(yīng)用程序收到”傳輸層”的數(shù)據(jù)凿宾,接下來就要進(jìn)行解讀。由于互聯(lián)網(wǎng)是開放架構(gòu)兼蕊,數(shù)據(jù)來源五花八門菌湃,必須事先規(guī)定好格式,否則根本無法解讀遍略。
“應(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)用層”。
這是最高的一層栅迄,直接面對(duì)用戶站故。它的數(shù)據(jù)就放在TCP數(shù)據(jù)包的”數(shù)據(jù)”部分。因此毅舆,現(xiàn)在的以太網(wǎng)的數(shù)據(jù)包就變成下面這樣:


上面買的坑改填了西篓,我們前面說過,我們對(duì)于目標(biāo)主機(jī)的IP地址肯定知道的憋活,為什么呢岂津?還有就是當(dāng)兩臺(tái)計(jì)算機(jī)不在同一個(gè)子網(wǎng)絡(luò)的時(shí)候,我們需要通過本機(jī)所在子網(wǎng)絡(luò)的網(wǎng)關(guān)A悦即,再通過路由協(xié)議得到目標(biāo)主機(jī)子網(wǎng)絡(luò)的網(wǎng)關(guān)B吮成,由網(wǎng)關(guān)B將我們要發(fā)送給目標(biāo)主機(jī)的數(shù)據(jù)包發(fā)送給目標(biāo)主機(jī)。那么辜梳,網(wǎng)關(guān)又是什么呢粱甫?
6.2 DNS協(xié)議
我們都知道由于IP地址不方便記憶,我們創(chuàng)造了域名這個(gè)概念冗美。
DNS(網(wǎng)域名稱系統(tǒng)魔种,Domain Name System析二,有時(shí)也簡稱為域名)是因特網(wǎng)的一項(xiàng)核心服務(wù),它作為可以將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使人更方便的訪問互聯(lián)網(wǎng)棚饵,而不用去記住能夠被機(jī)器直接讀取的IP地址數(shù)串碗淌。
例如,damonare.cn是一個(gè)域名蛤吓,和IP地址119.29.180.47相對(duì)應(yīng)宵喂。DNS就像是一個(gè)自動(dòng)的電話號(hào)碼簿,我們可以直接撥打damonare的名字來代替電話號(hào)碼(IP地址)会傲。我們直接調(diào)用網(wǎng)站的名字以后锅棕,DNS就會(huì)將便于人類使用的名字(如 damonare.cn)轉(zhuǎn)化成便于機(jī)器識(shí)別的IP地址(如119.29.180.47)拙泽。
已知DNS服務(wù)器為8.8.8.8(這個(gè)和IP地址一樣管理員告知或是通過自行設(shè)置的),于是我們向這個(gè)地址發(fā)送一個(gè)DNS數(shù)據(jù)包(53端口):

DNS服務(wù)器做出響應(yīng)裸燎,告訴我們Google的IP地址是172.194.72.105顾瞻。于是,我們知道了對(duì)方的IP地址德绿。
6.2 網(wǎng)關(guān)
網(wǎng)關(guān)要區(qū)別于路由器(由于歷史的原因荷荤,許多有關(guān)TCP/IP的文獻(xiàn)曾經(jīng)把網(wǎng)絡(luò)層使用的路由器(英語:Router)稱為網(wǎng)關(guān),在今天很多局域網(wǎng)采用都是路由來接入網(wǎng)絡(luò)移稳,因此現(xiàn)在通常指的網(wǎng)關(guān)就是路由器的IP)蕴纳,經(jīng)常在家庭中或者小型企業(yè)網(wǎng)絡(luò)中使用,用于連接局域網(wǎng)和Internet个粱。


前面我們已經(jīng)說過發(fā)送以太網(wǎng)數(shù)據(jù)包古毛,需要知道兩個(gè)地址:
對(duì)方的MAC地址
對(duì)方的IP地址

有了這兩個(gè)地址,數(shù)據(jù)包才能準(zhǔn)確送到接收者手中几蜻。但是喇潘,前面說過,MAC地址有局限性梭稚,如果兩臺(tái)電腦不在同一個(gè)子網(wǎng)絡(luò)颖低,就無法知道對(duì)方的MAC地址,必須通過網(wǎng)關(guān)(gateway)轉(zhuǎn)發(fā)弧烤。
上圖中忱屑,1號(hào)電腦要向4號(hào)電腦發(fā)送一個(gè)數(shù)據(jù)包。它先判斷4號(hào)電腦是否在同一個(gè)子網(wǎng)絡(luò)暇昂,結(jié)果發(fā)現(xiàn)不是(后文介紹判斷方法)莺戒,于是就把這個(gè)數(shù)據(jù)包發(fā)到網(wǎng)關(guān)A。網(wǎng)關(guān)A通過路由協(xié)議急波,發(fā)現(xiàn)4號(hào)電腦位于子網(wǎng)絡(luò)B从铲,又把數(shù)據(jù)包發(fā)給網(wǎng)關(guān)B,網(wǎng)關(guān)B再轉(zhuǎn)發(fā)到4號(hào)電腦澄暮。
6.3 DHCP協(xié)議
新買的電腦通常你必須做一些設(shè)置名段,才能上網(wǎng),有時(shí)泣懊,管理員(或者ISP)會(huì)告訴你下面四個(gè)參數(shù)伸辟,你把它們填入操作系統(tǒng),計(jì)算機(jī)就能連上網(wǎng)了:
本機(jī)的IP地址
子網(wǎng)掩碼
網(wǎng)關(guān)的IP地址
DNS的IP地址

由于它們是給定的馍刮,計(jì)算機(jī)每次開機(jī)信夫,都會(huì)分到同樣的IP地址,所以這種情況被稱作”靜態(tài)IP地址上網(wǎng)”。如下圖Window靜態(tài)IP上網(wǎng)設(shè)置界面:



這樣的設(shè)置很專業(yè)静稻,但普通用戶望而生畏警没,而且如果一臺(tái)電腦的IP地址保持不變,其他電腦就不能使用這個(gè)地址振湾,不夠靈活惠奸。出于這兩個(gè)原因,大多數(shù)用戶使用”動(dòng)態(tài)IP地址上網(wǎng)”恰梢。
動(dòng)態(tài)IP地址上網(wǎng)使用的協(xié)議就是DHCP協(xié)議
佛南,這個(gè)協(xié)議規(guī)定,每一個(gè)子網(wǎng)絡(luò)中嵌言,有一臺(tái)計(jì)算機(jī)負(fù)責(zé)管理本網(wǎng)絡(luò)的所有IP地址嗅回,它叫做”DHCP服務(wù)器”。新的計(jì)算機(jī)加入網(wǎng)絡(luò)摧茴,必須向”DHCP服務(wù)器”發(fā)送一個(gè)”DHCP請(qǐng)求”數(shù)據(jù)包绵载,申請(qǐng)IP地址和相關(guān)的網(wǎng)絡(luò)參數(shù)。
前面說過苛白,如果兩臺(tái)計(jì)算機(jī)在同一個(gè)子網(wǎng)絡(luò)娃豹,必須知道對(duì)方的MAC地址
和IP地址
,才能發(fā)送數(shù)據(jù)包购裙。但是懂版,新加入的計(jì)算機(jī)不知道這兩個(gè)地址,怎么發(fā)送數(shù)據(jù)包呢躏率?
DHCP協(xié)議
做了一些巧妙的規(guī)定躯畴。
首先DHCP協(xié)議是建立在UDP協(xié)議之上,所以整個(gè)數(shù)據(jù)包是這樣的:



(1).最前面的”以太網(wǎng)標(biāo)頭”薇芝,設(shè)置發(fā)出方(本機(jī))的MAC地址和接收方(DHCP服務(wù)器)的MAC地址蓬抄。前者就是本機(jī)網(wǎng)卡的MAC地址,后者這時(shí)不知道夯到,就填入一個(gè)廣播地址:FF-FF-FF-FF-FF-FF嚷缭。
(2).后面的”IP標(biāo)頭”,設(shè)置發(fā)出方的IP地址和接收方的IP地址耍贾。這時(shí)阅爽,對(duì)于這兩者,本機(jī)都不知道逼争。于是优床,發(fā)出方的IP地址就設(shè)為0.0.0.0劝赔,接收方的IP地址設(shè)為255.255.255.255誓焦。

(3).最后的”UDP標(biāo)頭”,設(shè)置發(fā)出方的端口和接收方的端口。這一部分是DHCP協(xié)議規(guī)定好的杂伟,發(fā)出方是68端口移层,接收方是67端口。

這個(gè)數(shù)據(jù)包構(gòu)造完成后赫粥,就可以發(fā)出了观话。以太網(wǎng)是廣播發(fā)送,同一個(gè)子網(wǎng)絡(luò)的每臺(tái)計(jì)算機(jī)都收到了這個(gè)包越平。因?yàn)榻邮辗降腗AC地址是FF-FF-FF-FF-FF-FF频蛔,看不出是發(fā)給誰的,所以每臺(tái)收到這個(gè)包的計(jì)算機(jī)秦叛,還必須分析這個(gè)包的IP地址晦溪,才能確定是不是發(fā)給自己的。當(dāng)看到發(fā)出方IP地址是0.0.0.0挣跋,接收方是255.255.255.255三圆,于是DHCP服務(wù)器知道”這個(gè)包是發(fā)給我的”,而其他計(jì)算機(jī)就可以丟棄這個(gè)包避咆。
接下來舟肉,DHCP服務(wù)器讀出這個(gè)包的數(shù)據(jù)內(nèi)容,分配好IP地址查库,發(fā)送回去一個(gè)”DHCP響應(yīng)”數(shù)據(jù)包路媚。這個(gè)響應(yīng)包的結(jié)構(gòu)也是類似的,以太網(wǎng)標(biāo)頭的MAC地址是雙方的網(wǎng)卡地址樊销,IP標(biāo)頭的IP地址是DHCP服務(wù)器的IP地址(發(fā)出方)和255.255.255.255(接收方)磷籍,UDP標(biāo)頭的端口是67(發(fā)出方)和68(接收方),分配給請(qǐng)求端的IP地址和本網(wǎng)絡(luò)的具體參數(shù)則包含在Data部分现柠。
新加入的計(jì)算機(jī)收到這個(gè)響應(yīng)包院领,于是就知道了自己的IP地址、子網(wǎng)掩碼够吩、網(wǎng)關(guān)地址比然、DNS服務(wù)器等等參數(shù)。
6.4 小結(jié)
應(yīng)用層比較重要的協(xié)議還有大名鼎鼎的HTTP協(xié)議周循,這個(gè)在博主的網(wǎng)絡(luò)協(xié)議分析這篇博客里對(duì)于TCP/HTTP協(xié)議有較為詳細(xì)的分析强法,在這里就不多做介紹了。
后記
通過整篇博客分析湾笛,我想整個(gè)互聯(lián)網(wǎng)的層級(jí)劃分就很清楚了饮怯,也應(yīng)該明白了數(shù)據(jù)是如何發(fā)送的,大概的過程就是如此嚎研,但互聯(lián)網(wǎng)協(xié)議浩如煙海究極一生可能也無法真正理解蓖墅。此篇博客僅僅作為一個(gè)入門,也算是一個(gè)大致的思路。關(guān)于數(shù)據(jù)包數(shù)據(jù)具體的形式论矾,路由教翩,以及其他協(xié)議就需要讀者自己去進(jìn)一步發(fā)掘理解了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贪壳,一起剝皮案震驚了整個(gè)濱河市饱亿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闰靴,老刑警劉巖彪笼,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蚂且,居然都是意外死亡杰扫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門膘掰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來章姓,“玉大人,你說我怎么就攤上這事识埋》惨粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵窒舟,是天一觀的道長系忙。 經(jīng)常有香客問我,道長惠豺,這世上最難降的妖魔是什么银还? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮洁墙,結(jié)果婚禮上蛹疯,老公的妹妹穿的比我還像新娘。我一直安慰自己热监,他們只是感情好捺弦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孝扛,像睡著了一般列吼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苦始,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天寞钥,我揣著相機(jī)與錄音,去河邊找鬼陌选。 笑死理郑,一個(gè)胖子當(dāng)著我的面吹牛蹄溉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播香浩,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼臼勉!你這毒婦竟也來了邻吭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤宴霸,失蹤者是張志新(化名)和其女友劉穎囱晴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓢谢,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畸写,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氓扛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枯芬。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖采郎,靈堂內(nèi)的尸體忽然破棺而出千所,到底是詐尸還是另有隱情,我是刑警寧澤蒜埋,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布淫痰,位于F島的核電站,受9級(jí)特大地震影響整份,放射性物質(zhì)發(fā)生泄漏待错。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一烈评、第九天 我趴在偏房一處隱蔽的房頂上張望火俄。 院中可真熱鬧,春花似錦讲冠、人聲如沸烛占。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忆家。三九已至,卻和暖如春德迹,著一層夾襖步出監(jiān)牢的瞬間芽卿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國打工胳搞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卸例,地道東北人称杨。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像筷转,于是被迫代替她去往敵國和親姑原。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 個(gè)人認(rèn)為呜舒,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記锭汛,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的袭蝗,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,063評(píng)論 6 174
  • 前言 勞于讀書唤殴,逸于作文。 原文地址:internet協(xié)議入門 博主博客地址:Damonare的個(gè)人博客 博主之前...
    秦至閱讀 269評(píng)論 0 2
  • 1. OSI到腥,TCP/IP朵逝,五層協(xié)議的體系結(jié)構(gòu),以及各層協(xié)議 OSI分層 (7層):物理層乡范、數(shù)據(jù)鏈路層配名、...
    iCaptain閱讀 2,467評(píng)論 0 4
  • 1.當(dāng)好跟班 女人最喜歡的就是買買買,逛商場時(shí)如果丈夫能陪同晋辆,而且隨時(shí)從妻子手里接過來買好的東西段誊,妻子會(huì)感覺很自豪...
    魚笨自由閱讀 2,733評(píng)論 0 7