TCP/IP協(xié)議的通信過(guò)程
在TCP/IP中把OSI一些層次進(jìn)行了抽象整合,整個(gè)TCP/IP分為硬件、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。在這里大致介紹一下各個(gè)分層的作用:
(1)硬件層:指的是電信號(hào)的傳遞方式,比如早期以太網(wǎng)采用的的同軸電纜、現(xiàn)在以太網(wǎng)通用的網(wǎng)線(雙絞線)、光纖等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)是工作在物理層的網(wǎng)絡(luò)設(shè)備,用于雙絞線的連接和信號(hào)中繼(將已衰減的信號(hào)再次放大使之傳得更遠(yuǎn))。
(2)數(shù)據(jù)鏈路層:利用以太網(wǎng)中的數(shù)據(jù)鏈路層進(jìn)行通信,可以理解為NIC的“驅(qū)動(dòng)程序”。數(shù)據(jù)鏈路層有以太網(wǎng)、令牌環(huán)網(wǎng)等標(biāo)準(zhǔn),鏈路層負(fù)責(zé)網(wǎng)卡設(shè)備的驅(qū)動(dòng)、幀同步(就是說(shuō)從網(wǎng)線上檢測(cè)到什么信號(hào)算作新幀的開(kāi)始)、沖突檢測(cè)(如果檢測(cè)到?jīng)_突就自動(dòng)重發(fā))、數(shù)據(jù)差錯(cuò)校驗(yàn)等工作。交換機(jī)是工作在鏈路層的網(wǎng)絡(luò)設(shè)備,可以在不同的鏈路層網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)幀(比如十兆以太網(wǎng)和百兆以太網(wǎng)之間、以太網(wǎng)和令牌環(huán)網(wǎng)之間),由于不同鏈路層的幀格式不同,交換機(jī)要將進(jìn)來(lái)的數(shù)據(jù)包拆掉鏈路層首部重新封裝之后再轉(zhuǎn)發(fā)。
(3)網(wǎng)絡(luò)層:IP協(xié)議是構(gòu)成Internet的基礎(chǔ)。Internet上的主機(jī)通過(guò)IP地址來(lái)標(biāo)識(shí),Internet上有大量路由器負(fù)責(zé)根據(jù)IP地址選擇合適的路徑轉(zhuǎn)發(fā)數(shù)據(jù)包,數(shù)據(jù)包從Internet上的源主機(jī)到目的主機(jī)往往要經(jīng)過(guò)十多個(gè)路由器。路由器是工作在第三層的網(wǎng)絡(luò)設(shè)備,同時(shí)兼有交換機(jī)的功能,可以在不同的鏈路層接口之間轉(zhuǎn)發(fā)數(shù)據(jù)包,因此路由器需要將進(jìn)來(lái)的數(shù)據(jù)包拆掉網(wǎng)絡(luò)層和鏈路層兩層首部并重新封裝。IP協(xié)議不保證傳輸?shù)目煽啃?,?shù)據(jù)包在傳輸過(guò)程中可能丟失,可靠性可以在上層協(xié)議或應(yīng)用程序中提供支持。
(4)傳輸層:讓?xiě)?yīng)用程序之間實(shí)現(xiàn)通信,主要有TCP、UDP兩種協(xié)議。
(5)應(yīng)用層:類似OSI中的會(huì)話層、表示層及應(yīng)用層。包括HTTP(應(yīng)用層)、HTML(表示層)、E-Mail、FTP、SSH等等。
TCP/IP分層模型與OSI分層模型的比對(duì)可參考下圖:
圖1-1 TCP/IP分層模型
傳輸層及其以下的機(jī)制由內(nèi)核提供,應(yīng)用層由用戶進(jìn)程提供,應(yīng)用程序?qū)νㄓ崝?shù)據(jù)的含義進(jìn)行解釋,而傳輸層及其以下處理通訊的細(xì)節(jié),將數(shù)據(jù)從一臺(tái)計(jì)算機(jī)通過(guò)一定的路徑發(fā)送到另一臺(tái)計(jì)算機(jī)。應(yīng)用層數(shù)據(jù)通過(guò)協(xié)議棧發(fā)到網(wǎng)絡(luò)上時(shí),每層協(xié)議都要加上一個(gè)數(shù)據(jù)首部(header),稱為封裝(Encapsulation),其中不同的協(xié)議層對(duì)數(shù)據(jù)包有不同的稱謂,在傳輸層叫做段(segment),在網(wǎng)絡(luò)層叫做數(shù)據(jù)報(bào)(datagram),在鏈路層叫做幀(frame)。如下圖所示。
圖 2-1 TCP/IP數(shù)據(jù)包的封裝(縱向示意圖)
圖 2-2 TCP/IP數(shù)據(jù)包的封裝(橫向示意圖)
數(shù)據(jù)封裝成幀后發(fā)到傳輸介質(zhì)上,到達(dá)目的主機(jī)后每層協(xié)議再剝掉相應(yīng)的首部,最后將應(yīng)用層數(shù)據(jù)交給應(yīng)用程序處理。
2.2.1發(fā)送
以發(fā)送郵件為例。點(diǎn)擊“發(fā)送”時(shí)開(kāi)始進(jìn)行TCP/IP通信。首先程序進(jìn)行編碼,然后確定通信的建立連接、發(fā)送數(shù)據(jù)的時(shí)間。下面建立TCP連接。TCP根據(jù)應(yīng)用指示負(fù)責(zé)建立連接、發(fā)送數(shù)據(jù)及斷開(kāi)連接。TCP首部包括源端口號(hào)和目標(biāo)端口號(hào)、序號(hào)及校驗(yàn)和,通過(guò)首部信息傳遞TCP層的信息。加完首部后數(shù)據(jù)包往下傳遞到IP層,IP層加上IP首部包括地址等信息用于尋址操作,之后將數(shù)據(jù)繼續(xù)往下傳遞附加數(shù)據(jù)鏈路層首部。最后發(fā)送時(shí)的分組數(shù)據(jù)包會(huì)加上以太網(wǎng)包尾(用于循環(huán)冗余校驗(yàn))。
2.2.2接受
主機(jī)收到數(shù)據(jù)包后會(huì)在以太網(wǎng)包首部找到MAC地址判斷是否為自己的包,如果不是則丟棄,如果是則傳遞給上一層IP層處理,以此類推,不斷往上傳遞至TCP層。在TCP層會(huì)計(jì)算校驗(yàn)和以判斷數(shù)據(jù)是否破壞,然后檢查是否按序號(hào)接收數(shù)據(jù),最后檢查端口號(hào)。處理完成之后數(shù)據(jù)包繼續(xù)往上層發(fā)送,即到了應(yīng)用層。如果這時(shí)出現(xiàn)主機(jī)無(wú)郵件信箱、硬盤空間滿等情況,主機(jī)B則會(huì)發(fā)送“處理異?!蓖ㄖl(fā)送端。
聯(lián)系客服