計(jì)算機(jī)網(wǎng)絡(luò)
網(wǎng)絡(luò)分層?
國(guó)際標(biāo)準(zhǔn)化組織提出了 OSI 模型:應(yīng)用層品山、表示層胆建、會(huì)話層、運(yùn)輸層肘交、網(wǎng)絡(luò)層笆载、鏈路層和物理層,理論完善涯呻,但復(fù)雜且不實(shí)用凉驻。
學(xué)習(xí)網(wǎng)絡(luò)原理使用五層模型:應(yīng)用層、運(yùn)輸層复罐、網(wǎng)絡(luò)層涝登、鏈路層和物理層。
實(shí)際使用 TCP/IP 模型:應(yīng)用層效诅、運(yùn)輸層胀滚、網(wǎng)際層和網(wǎng)絡(luò)接口層趟济。
每層使用下層的服務(wù)來提供服務(wù),對(duì)等層間的數(shù)據(jù)單位是協(xié)議數(shù)據(jù)單元 PDU咽笼,上下層間的數(shù)據(jù)單位是服務(wù)數(shù)據(jù)單元 SDU顷编。
應(yīng)用層
應(yīng)用層協(xié)議定義了應(yīng)用進(jìn)程的通信規(guī)則,應(yīng)用進(jìn)程互相通信完成網(wǎng)絡(luò)應(yīng)用剑刑。
應(yīng)用層協(xié)議包括:
-
域名解析系統(tǒng) DNS
DNS 是一個(gè)分布式數(shù)據(jù)庫系統(tǒng)媳纬,存儲(chǔ)了域名和 IP 地址的映射關(guān)系。
主機(jī)向本地域名服務(wù)器的查詢采用遞歸查詢:如果本地域名服務(wù)器不知道被查詢域名的 IP 地址施掏,就會(huì)以 DNS 客戶的身份向其他根域名服務(wù)器繼續(xù)發(fā)出查詢請(qǐng)求钮惠。
本地域名服務(wù)器向根域名服務(wù)器查詢采用迭代查詢:根域名服務(wù)器會(huì)告知頂級(jí)域名服務(wù)器的地址,頂級(jí)域名服務(wù)器給出 IP 地址其监,或者告知下一步應(yīng)該向哪個(gè)權(quán)限域名服務(wù)器進(jìn)行查詢萌腿。
-
文件傳送協(xié)議 FTP
FTP 通過TCP 保證可靠運(yùn)輸限匣,使用兩個(gè)端口抖苦,控制端口 21 和數(shù)據(jù)端口 20,分別進(jìn)行控制連接和數(shù)據(jù)連接米死。
-
電子郵件協(xié)議
從用戶代理把郵件傳送到服務(wù)器锌历,以及在服務(wù)器之間的傳送使用 SMTP 協(xié)議。
用戶代理從服務(wù)器讀取郵件時(shí)使用 POP3 或 IMAP 協(xié)議峦筒。
運(yùn)輸層
運(yùn)輸層負(fù)責(zé)向主機(jī)應(yīng)用進(jìn)程間的通信提供數(shù)據(jù)傳輸服務(wù)究西,由于一臺(tái)主機(jī)可以同時(shí)運(yùn)行多個(gè)進(jìn)程,因此運(yùn)輸層具有復(fù)用和分用的功能物喷,復(fù)用就是多個(gè)應(yīng)用進(jìn)程可以同時(shí)使用運(yùn)輸層發(fā)送數(shù)據(jù)卤材,分用就是把運(yùn)輸層收到的數(shù)據(jù)交付給對(duì)應(yīng)的應(yīng)用進(jìn)程。
運(yùn)輸層協(xié)議包括:
用戶數(shù)據(jù)報(bào)協(xié)議 UDP峦失,提供無連接的扇丛、盡最大努力交付的數(shù)據(jù)傳輸服務(wù),不保證可靠性尉辑,傳輸單位是用戶數(shù)據(jù)報(bào)帆精。
傳輸控制協(xié)議 TCP,提供面向連接的數(shù)據(jù)傳輸服務(wù)隧魄、保證可靠性卓练,傳輸單位是報(bào)文。
網(wǎng)絡(luò)層
網(wǎng)絡(luò)層任務(wù):① 為分組交換網(wǎng)上的主機(jī)提供通信服務(wù)购啄,在發(fā)送數(shù)據(jù)時(shí)把運(yùn)輸層數(shù)據(jù)報(bào)封裝成分組傳送襟企。② 選擇合適路由,使源主機(jī)的分組通過路由器找到目的主機(jī)狮含。
網(wǎng)絡(luò)層協(xié)議包括:
-
網(wǎng)際協(xié)議 IP
一般指 IPv4整吆,與 IP 配套使用的還有 ARP拱撵、ICMP 和 IGMP。
IP 數(shù)據(jù)報(bào)分為首部和數(shù)據(jù)兩部分表蝙。首部前 20 字節(jié)是固定的拴测,包含源地址、目的地址府蛇、總長(zhǎng)度等集索,生存時(shí)間限制了 IP 數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中能經(jīng)過的最大路由數(shù),防止其兜圈子汇跨。
要解決 IP 地址耗盡的問題务荆,根本方法是采用具有更大地址空間的 IPv6(128 位)。
-
地址解析協(xié)議 ARP
由于 IP 使用了 ARP穷遂,因此把 ARP 歸到網(wǎng)絡(luò)層函匕,但 ARP 的作用是通過一個(gè)高速緩存,存儲(chǔ)本地局域網(wǎng)的各主機(jī)和路由器的 IP 地址到硬件地址的映射表蚪黑,以從網(wǎng)絡(luò)層的 IP 解析出數(shù)據(jù)鏈路層的硬件地址盅惜,因此也可以把 ARP 劃歸在數(shù)據(jù)鏈路層。
與 ARP 對(duì)應(yīng)的是 RARP 逆地址解析協(xié)議忌穿,作用是通過硬件地址找到 IP 地址抒寂,被 DHCP 協(xié)議取代。
-
路由選擇協(xié)議
內(nèi)部網(wǎng)關(guān)協(xié)議:
RIP:分布式的距離向量協(xié)議掠剑,適用于小型網(wǎng)絡(luò)屈芜,按固定時(shí)間間隔與相鄰路由器交換路由表信息。
OSPF:分布式的鏈路狀態(tài)協(xié)議朴译,適用于大型網(wǎng)絡(luò)井佑,只在鏈路狀態(tài)變化時(shí)才向本自治系統(tǒng)中的所有路由器發(fā)送相鄰路由器的信息。
外部網(wǎng)關(guān)協(xié)議:
- BGP-4:針對(duì)不同自治系統(tǒng)之間的路由器眠寿,目標(biāo)是尋找一條能夠到達(dá)目的網(wǎng)絡(luò)且不兜圈子的路由躬翁。
-
網(wǎng)際控制報(bào)文協(xié)議 ICMP
ICMP 報(bào)文包括差錯(cuò)報(bào)文和詢問報(bào)文,ICMP 報(bào)文作為 IP 數(shù)據(jù)報(bào)的數(shù)據(jù)澜公,加上首部后組成 IP 數(shù)據(jù)報(bào)發(fā)送出去姆另。ICMP 允許主機(jī)或路由器報(bào)告差錯(cuò)情況,提供有關(guān)異常情況的信息坟乾。ICMP 的重要應(yīng)用是分組探測(cè) PING迹辐,測(cè)試主機(jī)間的連通性。
-
網(wǎng)際組管理協(xié)議 IGMP
IGMP 的作用是讓連接在本地局域網(wǎng)上的多播路由器知道本局域網(wǎng)上是否有主機(jī)的某個(gè)進(jìn)程參加或退出了某個(gè)多播組甚侣。
鏈路層
數(shù)據(jù)鏈路層將網(wǎng)絡(luò)層的分組封裝成幀明吩,在兩個(gè)相鄰結(jié)點(diǎn)間的鏈路上傳輸,每一幀包括數(shù)據(jù)和必要的控制信息(同步信息殷费、地址信息印荔、差錯(cuò)信息)低葫。控制信息使接收端能夠知道一個(gè)幀從哪個(gè)比特開始到哪個(gè)比特結(jié)束仍律,從幀中提取出數(shù)據(jù)上交給網(wǎng)絡(luò)層嘿悬。控制信息還使接收端可以檢測(cè)收到的幀有無差錯(cuò)水泉,如果有差錯(cuò)就簡(jiǎn)單地丟棄善涨,避免繼續(xù)傳送而浪費(fèi)網(wǎng)絡(luò)資源。
鏈路層協(xié)議包括:
-
點(diǎn)對(duì)點(diǎn)協(xié)議 PPP
在通信質(zhì)量較差的年代使用高級(jí)數(shù)據(jù)鏈路控制 HDLC 作為數(shù)據(jù)鏈路層協(xié)議草则,目前使用最廣泛的協(xié)議是 PPP钢拧。PPP 的特點(diǎn)是簡(jiǎn)單、只檢測(cè)差錯(cuò)而不糾正炕横、不使用序號(hào)也不進(jìn)行流量控制源内、同時(shí)支持多種網(wǎng)絡(luò)層協(xié)議。
-
CSMA/CD 協(xié)議
以太網(wǎng)采用具有沖突檢測(cè)的載波監(jiān)聽多點(diǎn)接入?yún)f(xié)議份殿,特點(diǎn)是:發(fā)送前先監(jiān)聽膜钓、邊發(fā)送邊監(jiān)聽,一旦發(fā)現(xiàn)總線上出現(xiàn)了碰撞就立即停止發(fā)送伯铣,然后按退避算法等待一段隨機(jī)時(shí)間后再次發(fā)送呻此。
物理層
物理層盡可能屏蔽傳輸媒體和通信手段的差異轮纫,使數(shù)據(jù)鏈路層只需考慮本層協(xié)議和服務(wù)腔寡。
物理層的數(shù)據(jù)單位是比特,發(fā)送方和接收方發(fā)送和接收 1 或 0掌唾,因此物理層需要考慮用多大的電壓代表 1 或 0放前,以及接收方如何識(shí)別發(fā)送方所發(fā)送的比特。此外物理層還要確定傳輸媒體規(guī)范糯彬,例如接線器形狀凭语、電纜電壓范圍等。
TCP?
特點(diǎn)
TCP 是面向連接的撩扒,一個(gè)應(yīng)用進(jìn)程在向另一個(gè)進(jìn)程發(fā)送數(shù)據(jù)前必須先建立連接似扔,發(fā)送某些預(yù)備報(bào)文段。
TCP 提供全雙工服務(wù)搓谆,允許通信雙方的應(yīng)用進(jìn)程在任何時(shí)候發(fā)送數(shù)據(jù)炒辉。TCP 連接的兩端都有發(fā)送緩存和接收緩存:發(fā)送時(shí),應(yīng)用程序把數(shù)據(jù)傳送給 TCP 緩存后就可以做自己的事泉手,TCP 在合適的時(shí)候發(fā)送黔寇;接收時(shí),TCP 把收到的數(shù)據(jù)放入緩存斩萌,應(yīng)用程序在合適的時(shí)候讀取缝裤。
TCP 連接是點(diǎn)對(duì)點(diǎn)的屏轰,只能是單個(gè)發(fā)送方和單個(gè)接收方之間的連接。
TCP 提供可靠的交付服務(wù)憋飞,通過 TCP 傳送的數(shù)據(jù)無差錯(cuò)霎苗、不丟失、不重復(fù)榛做,按序到達(dá)叨粘。
TCP 是面向字節(jié)流的,流是指流入進(jìn)程或從進(jìn)程流出的字節(jié)序列瘤睹。雖然應(yīng)用程序和 TCP 的交互是每次一個(gè)數(shù)據(jù)塊升敲,但 TCP 把數(shù)據(jù)塊僅看成一連串無結(jié)構(gòu)的字節(jié)流。TCP 不保證接收方的數(shù)據(jù)塊和發(fā)送方的數(shù)據(jù)塊具有對(duì)應(yīng)大小的關(guān)系轰传,但接收方的字節(jié)流必須和發(fā)送方的字節(jié)流完全一樣驴党。應(yīng)用程序必須有能力識(shí)別收到的字節(jié)流,把它還原成應(yīng)用層數(shù)據(jù)获茬。
UDP 和 TCP 的區(qū)別?
UDP 無連接港庄,發(fā)送數(shù)據(jù)前不需要建立連接,減少了開銷和時(shí)延恕曲。
UDP 使用盡最大努力交付鹏氧,不保證可靠性,主機(jī)不需要維持復(fù)雜的連接狀態(tài)佩谣。
UDP 面向報(bào)文把还,UDP 對(duì)應(yīng)用層報(bào)文添加首部后就交付 IP 層。
UDP 沒有擁塞控制茸俭,網(wǎng)絡(luò)擁塞不會(huì)降低源主機(jī)的發(fā)送速率吊履,這對(duì)某些實(shí)時(shí)應(yīng)用很重要,如視頻會(huì)議调鬓。
UDP 支持一對(duì)一艇炎、一對(duì)多和多對(duì)多通信。