TCP/IP基礎(chǔ)概念及通信過程舉例
寫作原因:又過了很久沒更新博客了……這次博主就介紹一下計算機(jī)網(wǎng)絡(luò)中TCP/IP模型的整體理論及數(shù)據(jù)鏈路層一些知識吧。
出現(xiàn)
上個世紀(jì)60年代,由于中央集中式網(wǎng)絡(luò)的容災(zāi)性較弱,以美國國防部為中心的一家組織研究出分組交換網(wǎng)絡(luò)。后來為了驗證分組交換技術(shù)的實用性,ARPANET出現(xiàn)了,并且在3年內(nèi)逐漸發(fā)展,由4個節(jié)點發(fā)展至34個節(jié)點。20世紀(jì)70年代前半葉,ARPANET一個機(jī)構(gòu)研制出了TCP/IP,1982年具體規(guī)范確定,1983年成為ARPANET唯一指定協(xié)議。乘著TCP/IP的發(fā)展之風(fēng),互聯(lián)網(wǎng)應(yīng)運(yùn)而生。
標(biāo)準(zhǔn)化
先說明一下TCP/IP的含義。其實它是指利用IP進(jìn)行通信是所用到的協(xié)議群的統(tǒng)稱。TCP/IP協(xié)議標(biāo)準(zhǔn)化具有兩大特點: 開放性 及 實用性 。前者指任何人可以通過一定的方式制定修改協(xié)議;后者指TCP/IP協(xié)議根據(jù)實際實驗情況和可行性不斷修改,貼合應(yīng)用。關(guān)于TCP/IP的規(guī)范由IETF制定,并在RFC文檔中可以查看。具體網(wǎng)址: rfc-editor ,讀者可以在該網(wǎng)站查看TCP/IP協(xié)議文檔或是對TCP/IP協(xié)議的修改給出自己的建議。
互聯(lián)網(wǎng)基礎(chǔ)認(rèn)知
前面說了互聯(lián)網(wǎng)是基于TCP/IP一步步發(fā)展起來了,這里大概介紹一下互聯(lián)網(wǎng)相關(guān)的知識?;ヂ?lián)網(wǎng)中的每個網(wǎng)絡(luò)都是由骨干網(wǎng)和末端網(wǎng)組成的,每個網(wǎng)絡(luò)通過NOC相連。如果運(yùn)營商不同則通過IX連接。參考下圖:
TCP/IP協(xié)議分層模型簡介及通信舉例
這個系列的上一篇文章博主提到了OSI分層模型,下面我們將要學(xué)習(xí)的是TCP/IP分層模型。先參考下圖:
在TCP/IP中把OSI一些層次進(jìn)行了抽象整合,整個TCP/IP分為硬件、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。我們在這里先大致介紹一下各個分層的作用,后面的文章會詳細(xì)對每個分層相關(guān)的協(xié)議進(jìn)行梳理。
簡介
- 硬件層:負(fù)責(zé)數(shù)據(jù)傳輸?shù)挠布锢碓O(shè)備,由于硬件之間的差異性難以統(tǒng)一定義及指標(biāo)。
- 數(shù)據(jù)鏈路層:利用以太網(wǎng)中的數(shù)據(jù)鏈路層進(jìn)行通信,可以理解為NIC的“驅(qū)動程序”。
- 網(wǎng)絡(luò)層:使用IP協(xié)議,類似OSI第三層網(wǎng)絡(luò)層。此外除了IP協(xié)議還有ICMP協(xié)議(用于處理數(shù)據(jù)發(fā)送異常),ARP協(xié)議(用于從IP地址中解析MAC地址)。
- 傳輸層:讓應(yīng)用程序之間實現(xiàn)通信,主要有TCP、UDP兩種協(xié)議。
- 應(yīng)用層:類似OSI中的會話層、表示層及應(yīng)用層。包括HTTP(應(yīng)用層)、HTML(表示層)、E-Mail、FTP、SSH等等。
下面通過一個簡單的例子來說明一下這些分層是如何協(xié)調(diào)工作的。
通信舉例
發(fā)送
再次以發(fā)送郵件為例。點擊“發(fā)送”時開始進(jìn)行TCP/IP通信。首先程序進(jìn)行編碼,然后確定通信的建立連接、發(fā)送數(shù)據(jù)的時間。下面建立TCP連接。TCP根據(jù)應(yīng)用指示負(fù)責(zé)建立連接、發(fā)送數(shù)據(jù)及斷開連接。TCP首部包括源端口號和目標(biāo)端口號、序號及校驗和(詳細(xì)內(nèi)容見后面的文章),通過首部信息傳遞TCP層的信息。加完首部后數(shù)據(jù)包往下傳遞到IP層,IP層加上IP首部包括地址等信息用于尋址操作,之后將數(shù)據(jù)繼續(xù)往下傳遞附加數(shù)據(jù)鏈路層首部。***發(fā)送時的分組數(shù)據(jù)包會加上以太網(wǎng)包尾(用于循環(huán)冗余校驗)。
接收
主機(jī)收到數(shù)據(jù)包后會在以太網(wǎng)包首部找到MAC地址判斷是否為自己的包,如果不是則丟棄,如果是則傳遞給上一層IP層處理,以此類推,不斷往上傳遞至TCP層。在TCP層會計算校驗和以判斷數(shù)據(jù)是否破壞,然后檢查是否按序號接收數(shù)據(jù),***檢查端口號。處理完成之后數(shù)據(jù)包繼續(xù)往上層發(fā)送,即到了應(yīng)用層。如果這時出現(xiàn)主機(jī)無郵件信箱、硬盤空間滿等情況,主機(jī)B則會發(fā)送“處理異常”通知發(fā)送端。
到這里TCP/IP通信流程大概梳理了一遍,具體細(xì)節(jié)在后面闡述。