網(wǎng)絡(luò)的五層劃分
應(yīng)用層
應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng)贩疙。
TCP/IP 協(xié)議族內(nèi)預(yù)存了各類通用的應(yīng)用服務(wù)。比如,F(xiàn)TP ( File Transfer Protocol,文件傳輸協(xié)議 ) 和 DNS ( Domain Name System , 域名系統(tǒng) ) 服務(wù)就是其中兩類夜郁。
HTTP 協(xié)議也處于該層。
傳輸層
傳輸層對(duì)應(yīng)上層應(yīng)用層断箫,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸拂酣。
在傳輸層有兩個(gè)性質(zhì)不同的協(xié)議:TCP ( Transmission Control Protocol,傳輸控制協(xié)議 ) 和 UDP( User Datagram Protocol 仲义,用戶數(shù)據(jù)報(bào)協(xié)議 )婶熬。
網(wǎng)絡(luò)層(又名網(wǎng)絡(luò)互連層)
網(wǎng)絡(luò)層用來處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包剑勾。數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位。該層規(guī)定了通過怎樣的路徑(所謂的傳輸路線)到達(dá)對(duì)方計(jì)算機(jī)赵颅,并把數(shù)據(jù)包傳送給對(duì)方虽另。與對(duì)方計(jì)算機(jī)之間通過多臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備進(jìn)行傳輸時(shí),網(wǎng)絡(luò)層所起的作用就是在眾多的選項(xiàng)內(nèi)選擇一條傳輸路線饺谬。
鏈路層(又名數(shù)據(jù)鏈路層捂刺,網(wǎng)絡(luò)接口層)
負(fù)責(zé)在兩個(gè)相鄰的節(jié)點(diǎn)間的線路上無差錯(cuò)地傳送以幀為單位的數(shù)據(jù),每一幀包括一定的數(shù)據(jù)和必要的控制信息募寨,在接收點(diǎn)接收到數(shù)據(jù)出錯(cuò)時(shí)要通知發(fā)送方重發(fā)族展,直到這一幀無誤地到達(dá)接收節(jié)點(diǎn)。
物理層
用來處理連接網(wǎng)絡(luò)的硬件部分拔鹰。包括控制操作系統(tǒng)仪缸、硬件的設(shè)備驅(qū)動(dòng)、NIC( Network Interface Card列肢,網(wǎng)絡(luò)適配器恰画,即網(wǎng)卡),及光纖等物理可見部分(還包括連接器等一切傳輸媒介)瓷马。
TCP 和 UDP 的區(qū)別
TCP 協(xié)議
傳輸控制協(xié)議( Transmission Control Protocol , TCP )是一種面向連接拴还、可靠、基于字節(jié)流的傳輸層通信協(xié)議欧聘。
在 Internet 協(xié)議族中片林,傳輸層是位于網(wǎng)絡(luò)層之上、應(yīng)用層之下的中間層怀骤。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的拇厢、像管道一樣的連接,但是網(wǎng)絡(luò)層不提供這樣的流機(jī)制晒喷,其只能提供不可靠的包交換,所以傳輸層就自然出現(xiàn)了访敌。
應(yīng)用層向傳輸層發(fā)送用于網(wǎng)間傳輸?shù)牧骨谩⒂?8 位字節(jié)表示的數(shù)據(jù)流,然后 TCP 協(xié)議把數(shù)據(jù)流分成適當(dāng)長度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳送單元 MTU 的限制)寺旺。之后 TCP 協(xié)議把結(jié)果包傳給網(wǎng)絡(luò)層爷抓,由它來通過網(wǎng)絡(luò)將包傳送給接收端實(shí)體的傳輸層。TCP 為了保證不發(fā)生丟包阻塑,就給每個(gè)包一個(gè)序號(hào)蓝撇,同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包能按序接收。然后接收端實(shí)體為已成功收到的包發(fā)回一個(gè)相應(yīng)的確認(rèn)( ACK )陈莽;如果發(fā)送端實(shí)體在合理的往返時(shí)延( RTT )內(nèi)未收到確認(rèn)渤昌,那么對(duì)應(yīng)的數(shù)據(jù)包(假設(shè)丟失了)將會(huì)被重傳虽抄。TCP 協(xié)議用一個(gè)校驗(yàn)和( Checksum )函數(shù)來校驗(yàn)數(shù)據(jù)是否有錯(cuò)誤,在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和独柑。
UDP協(xié)議
用戶數(shù)據(jù)報(bào)協(xié)議( User Datagram Protocol , UDP )是 TCP/IP 模型中一種面向無連接的傳輸層協(xié)議迈窟,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。UDP 協(xié)議基本上是 IP 協(xié)議與上層協(xié)議的接口忌栅。UDP 協(xié)議適用于端口分別運(yùn)行在同一臺(tái)設(shè)備上的多個(gè)應(yīng)用程序中车酣。
與 TCP 不同,UDP 并不提供對(duì) IP 協(xié)議的可靠機(jī)制索绪、流控制以及錯(cuò)誤恢復(fù)功能等湖员,在數(shù)據(jù)傳輸之前不需要建立連接。由于 UDP 比較簡單瑞驱,UDP 頭包含很少的字節(jié)娘摔,所以比 TCP 負(fù)載消耗少。
UDP 適用于不需要 TCP 可靠機(jī)制的情形钱烟,比如晰筛,當(dāng)高層協(xié)議或應(yīng)用程序提供錯(cuò)誤和流控制功能的時(shí)候。UDP 服務(wù)于很多知名應(yīng)用層協(xié)議拴袭,包括網(wǎng)絡(luò)文件系統(tǒng)( Network File System , NFS )读第、簡單網(wǎng)絡(luò)管理協(xié)議( Simple Network Management Protocol , SNMP )、域名系統(tǒng)( Domain Name System , DNS )以及簡單文件傳輸系統(tǒng)( Trivial File Transfer Protocol , TFTP )拥刻。
TCP 和 UDP 的區(qū)別
TCP 協(xié)議和 UDP 協(xié)議屬于傳輸層協(xié)議怜瞒。
其中,TCP 提供 IP 環(huán)境下的數(shù)據(jù)可靠傳輸般哼,它提供的服務(wù)包括數(shù)據(jù)流傳輸吴汪、可靠性、有效流控蒸眠、全雙工操作和多路復(fù)用漾橙。通過面向連接、端到端和可靠的數(shù)據(jù)包發(fā)送楞卡。通俗說霜运,它是事先為所發(fā)送的數(shù)據(jù)開辟出連接好的通道,然后再進(jìn)行數(shù)據(jù)發(fā)送蒋腮;
而 UDP 則不為 IP 提供可靠性淘捡、流控或差錯(cuò)恢復(fù)功能。
一般來說池摧,TCP 對(duì)應(yīng)的是可靠性要求高的應(yīng)用焦除,而 UDP 對(duì)應(yīng)的則是可靠性要求低、傳輸經(jīng)濟(jì)的應(yīng)用作彤。
TCP 支持的應(yīng)用協(xié)議主要有:Telnet膘魄、FTP乌逐、SMTP 等。
UDP 支持的應(yīng)用協(xié)議主要有:NFS瓣距、SNMP黔帕、DNS、TFTP 等蹈丸。
TCP 的三次握手
為了準(zhǔn)確無誤地將數(shù)據(jù)送達(dá)目標(biāo)處成黄,TCP 協(xié)議采用了三次握手( three-way handshaking )策略。用 TCP 協(xié)議把數(shù)據(jù)包送出去后逻杖,TCP 不會(huì)對(duì)傳送后的情況置之不理奋岁,它一定會(huì)向?qū)Ψ酱_認(rèn)時(shí)候成功送達(dá)。握手過程中使用了 TCP 的標(biāo)志( flag )—— SYN( synchronize )和 ACK( acknowledgement )荸百。
發(fā)送端首發(fā)送一個(gè)帶 SYN 標(biāo)志的數(shù)據(jù)包給對(duì)方闻伶。接收端收到后,回傳一個(gè)帶有 SYN/ACK 標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息够话。最后蓝翰,發(fā)送端再回傳一個(gè)帶 ACK 標(biāo)志的數(shù)據(jù)包,代表“握手”結(jié)束女嘲。
若在握手過程中某個(gè)階段莫名中斷畜份,TCP 協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包。