一談到TCP/IP 協(xié)議棧,相信不少小白都處于暴躁的邊緣,只懂其一不知其二。沒關系,看完這篇你就知道啦!
協(xié)議定義的是一系列的通信標準, 通信雙方需要共同按照這一標準進行正常的數(shù)據(jù)收發(fā);信的雙方需要共同按照這一個標準進行正常的數(shù)據(jù)收發(fā);(兩人,說共同的語言,不然不能交流,一個聽不懂外語的和說外語的交流)
協(xié)議棧是協(xié)議的具體實現(xiàn)形式, 通俗的理解就是用代碼實現(xiàn)的函數(shù)庫, 以便于開發(fā)人員調用。
協(xié)議棧是通常是一個層級結構。協(xié)議棧是網絡中各層協(xié)議的總和,其形象的反映了 一個網絡中文件傳輸過程;由上層協(xié)議到底層協(xié)議,再由底層協(xié)議到上層協(xié)議。
某個協(xié)議的實現(xiàn)代碼稱為協(xié)議棧
BLE協(xié)議棧主要用來對你的應用數(shù)據(jù)進行層層封包,以生成一個滿足BLE協(xié)議的空中數(shù)據(jù)包,也就是說,把應用數(shù)據(jù)包裹在一系列的幀頭(header)和幀尾(tail)中。
我們先簡單了解下TCP/IP協(xié)議,該協(xié)議最早得名于上世紀80年代,由美國國防部提出并應用于arpa網(即阿帕網,互聯(lián)網的鼻祖)項目,由于其優(yōu)異性,很快便成為主流網絡通信協(xié)議。后面出現(xiàn)的各類協(xié)議(http、ip、dns、tcp、arp等)都被整體納入這一協(xié)議體系中去,被統(tǒng)稱為“TCP/IP 協(xié)議棧”,“TCP/IP 協(xié)議?!泵Q就是這么由此而來的。
對應這一協(xié)議棧,同時發(fā)展出了TCP/IP 參考模型,該模型是一個抽象的分層模型,TCP/IP 協(xié)議棧中的所有協(xié)議被歸類到這一模型的4個層次中(四個層分別是:鏈路層、網絡層、傳輸層、應用層),每一層都呼叫它的下一層所提供的協(xié)議來完成其需求,各個層次間互相協(xié)作,由此完成了互聯(lián)網通信的主要工作。
由于OSI協(xié)議棧比較復雜且TCP和IP兩大協(xié)議在業(yè)界被廣泛使用,所以TCP/IP參考模型成為了互聯(lián)網的主流參考模型
為了讓你對通信過程有一個更好的理解,我將以http請求通信的過程為例子,從 TCP/IP 四個層次出發(fā),對應各個層次的通信實體,看各個協(xié)議是如何在這些通信實體中發(fā)生作用。
在這之前我們先了解下網絡通信中的三個地址:IP 地址、Mac 地址以及端口號,三者分別代表:
IP地址:網絡中互聯(lián)的主機和路由器的標識
Mac 地址:每個網卡硬件的物理地址
端口號:識別同一個主機上不同的應用程序,也可以理解為程序地址
當你輸入一個網址并按下回車鍵的時候:應用層協(xié)議會先對該請求包做格式定義;緊接著傳輸層協(xié)議加上雙方的端口號,確認雙方通信的應用程序;然后網絡層協(xié)議加上雙方的IP地址,確認雙方的網絡位置;最后鏈路層協(xié)議加上雙方的MAC地址,確認雙方的物理位置,以太網協(xié)議會通過對電信號數(shù)據(jù)進行分組,形成數(shù)據(jù)幀,再采用廣播方式,通過傳輸介質發(fā)送給對方主機。而對于不同網段,該數(shù)據(jù)包先會轉發(fā)給網關路由器,經過多次轉發(fā)后,最終被發(fā)送到目標主機。目標機接收到數(shù)據(jù)包后,采用對應的協(xié)議,對幀數(shù)據(jù)進行組裝,然后再通過一層一層的協(xié)議進行解析,最終被應用層的協(xié)議解析并交給服務器處理。在這個過程中,各項協(xié)議確保了傳輸過程的實現(xiàn)以及數(shù)據(jù)的安全。
IP地址相當于是人所在的區(qū)域,MAC地址相當于是人的身份證號碼,對于網絡傳輸最終都是以MAC地址來實現(xiàn)的。
我們來梳理一下每層模型的職責:
1. 應用層:定義數(shù)據(jù)格式,并按照對應的格式解讀數(shù)據(jù)
2. 傳輸層:定義端口,確認主機上應用程序的身份,并將數(shù)據(jù)包交給對應的應用程序
3. 網絡層:定義IP地址,確認主機所在的網絡位置,并通過IP進行MAC尋址,對外網數(shù)據(jù)包進行路由轉發(fā)
4. 鏈路層:以字節(jié)為單位對0和1進行分組,定義數(shù)據(jù)幀,確認主機的物理地址,傳輸數(shù)據(jù)
以上內容是對TCP/IP四層模型做了簡單的介紹,而實際上每一層模型都有很多協(xié)議,每個協(xié)議要做的事情也很多,但我們首先得有一個清晰的脈絡結構,把基本的作用都掌握了,然后再去豐富細節(jié),就比較好理解了。