1、自我想象通訊是乙個什麼樣的過程
在先不看tcp/ip協議的情況下,我們先來推導一下現如今的網路通訊是怎麼實現的呢?
假設現在我們在長沙的乙個網咖裡面用qq給身在異地的女朋友傳送了一條文字文字資訊,這個訊息是怎麼傳送過去的?他那邊是怎麼接收的?
我的推導大致是:
手指在鍵盤上打出文字按下回車---->
這些文字被編碼應用程式的**監聽到---->
**通過io流將這些文字資訊write為位元組資訊---->
作業系統os---->
作業系統將這些位元組資訊傳送給網絡卡---->
網絡卡接收到這些位元組資訊,將這些位元組資訊包裝,貼上資料型別,並附帶好位址,然後轉換成特定標識的電訊號---->
這種特殊電訊號流入傳輸介質開始了自己的旅行---->
中途這個電訊號會經過許多中繼站(擴大訊號,防止訊號衰減)---->
履行完畢電訊號通過介質進入異地女盆友的網絡卡---->
網絡卡將電訊號轉換為位元組資料報,並檢視是不是自己的包裹(不是的話就退回線路,是的話就將這些資料報拆包,分清是什麼型別的資料---->
作業系統os,識別這些位元組,傳輸給qq(應用程式)---->
通過io流read這些位元組資訊---->
轉換成他的女朋友能夠識別的文字資訊,並顯示出來
2、tcp/ip協議:
前面已經自己胡亂推導了一下通訊是乙個怎麼樣的過程,下面讓我們仔細看看tcp/ip協議:
tcp/ip協議(傳輸控制協議/網際協議)其實是乙個很多協議組成的協議簇它是借鑑osi模型提出來的乙個解決不同作業系統、不同晶元構架之間進行乙個通訊的網路協議,即共識
tcp/ip協議分為四個層面:
1、應用層:(http、ftp、telnet協議)
2、運輸層傳輸層:(tcp、udp協議)
3、網路層:(ip協議)
4、資料鏈路層(硬體設施與網路介面)
那麼這四個層面到底都發揮著乙個怎麼樣的作用呢?收先我們需要理解的是,通訊其實是一台電腦的應用程式和另一台電腦上的應用程式的通訊
那麼問題來了:
1、首先,乙個資料從一台電腦傳送到另一台電腦怎麼發?即怎麼將這些資料精確傳送到接收機上?
2、電腦上收到這些資料之後,電腦上執行著這麼多的應用程式或者說是埠,我怎麼知道這個資料是傳送到哪個埠或者應用程式的?
3、找到對應的應用程式之後,我怎麼知道發過來的資料是乙個怎麼樣的資料,是超文字檔案,還是遠端登陸訪問,還是郵件?
那麼著四個層面正是為了解決這些問題而提出來的協議!
那麼我們來分析這四個層面各有什麼樣的作用!
資料鏈路層
是乙個對於區域網而言的乙個資料傳輸協議,我們現在大多數都是用的乙太網的組網形式,其他區域網的組網形式還有(令牌環網,fddi等等),在乙太網中規定,資料報只能通過乙個網絡卡,傳送到另乙個網絡卡,每乙個網絡卡有乙個自己對應的mac位址,如下圖所示,在乙太網中,在乙個局域子網中,路由器將自己收到的資料報以廣播的形式傳送給此局域子網中的每乙個裝置的網絡卡,網絡卡解析資料報上面的mac位址看與自己的是否相同,不相同的話就將資料報丟棄,不進行其它操作
網路層(ip協議,arp協議,路由協議)
ip協議:
ip位址是用於用於識別網路中的特定計算機而分配的乙個特定的位址,現在開啟電腦的命令列視窗輸入ipconfig會顯示乙個ipv4位址,意思就是ip的v4版本,用32bit儲存,用點加十進位制表示,如192.168.0.3此類的一共有2的32次方個位址,有a、b、c、d類之分(即他是用於標識網路中的乙個特定計算機而分配的乙個特有的ip位址)
在網路層引入ip協議,能夠區分兩台主機是否在同乙個網路下,32bit位址分為兩個部分,前面一部分是主機的網路位址,後面一部分是主機在子網中對應的位址,隨著技術發展,大家還可以在這個命令列視窗看見乙個子網掩碼,子網掩碼和ip位址相互運算,就可以的到計算機的mac位址
arp協議:路由協議:(arp協議和路由協議不知到怎麼去組織自己的語言,就只能這樣了。。)
其實一句話說,網路層就是乙個通過網路層找到特定的網路位置,找到特定區域網的路由器,路由器再以廣播形式將資料報傳送到內部組網中的通訊裝置上,這樣就解決了第乙個問題,精確地將乙個資料報傳送到了目標電腦
運輸層和傳輸層(udp協議,tcp協議)
現在資料報已經傳送到我們地網絡卡了,現如今我接受的這個資料報要傳送給計算機中執行的哪個應用程式上面呢?那麼就有udp協議和tcp協議來幫忙啦
udp協議:udp協議為電腦上執行的應用程式或者說埠,都給了乙個特定的標識,解析資料報的ip位址和mac位址之後,作業系統讀取資料報埠號找到udp定義的對應的埠號,這樣的話,資料報就找到了目標應用程式,
tcp協議:
tcp協議其實就是乙個更加完善的udp協議,在udp協議中,只有接收,但是接收的這個資料報是不是在傳輸過程會丟失資料呢?完不完整呢?他沒有乙個確認機制,而tcp協議新增了這個確認收到完整資料報的機制,在讀取資料報的時候,如果資料報完整,tcp協議就會傳送確認,如果傳送端收不到確認,則會再次傳送資料報過來,這樣就建立了乙個穩定的資料傳輸連線,比udp協議更加可靠,tcp有乙個三次招手建立連線和四次揮手斷開連線(這個具體過程還得仔仔細細的研究)
應用層
資料報已經找到了相應計算機下的特定應用程式,接下來就要讀取資料了,那麼這個資料怎麼來讀取呢?它也得遵循一定的協議,在應用層裡,規範了很多的資料傳輸格式也就是不同資料傳輸的共識比如我給你發過來的是乙個郵件,那麼就是通過遵循smtp協議來讀取資料,又比如我要遠端登陸你的電腦,那麼此時在應用層的資料傳輸協議就會用到telnet協議,還有傳輸超文字檔案所遵循的http協議等等,根據不同的協議,會對傳送過來的資料報及使用不同的資料讀取方法,實現與人們的直接互動!
那麼對於前面提出的三個問題,資料鏈路層和網路層解決了第乙個問題
運輸層和傳輸層解決了第二個問題,應用層解決了第三個問題!tcp/ip協議從底層到互動,為我們提供了乙個用於網路通訊的規約!
深入理解TCP IP協議族
tcp ip協議族是乙個四層協議系統,自底而上分別是資料鏈路層 網路層 傳輸層和應用層。每一層完成不同的功能,且通過若干協議來實現,上層協議使用下層協議提供的服務。mac位址,處於資料鏈路層.ip位址,處於網路層.埠號,處於傳輸層.tcp ip是乙個協議集,對英特網中主機的定址方式,主機的命名機制,...
網路程式設計 TCP IP協議和UDP協議
tcp是面向連線的通訊協議,通過三次握手建立連線,通訊完成時要拆除連線,由於tcp是面向連線的所以只能用於端到端的通訊。tcp提供的是一種可靠的資料流服務,採用 帶重傳的肯定確認 技術來實現傳輸的可靠性。tcp還採用一種稱為 滑動視窗 的方式進行流量控制,所謂視窗實際表示接收能力,用以限制傳送方的傳...
網路程式設計的OSI協議和TCP IP協議
在網路發展中,人們為了規範網際網路的資訊互動,就必須遵守一種約定,從而引出了osi和tcp ip的協議。首先講一下osi協議,它是一種開放系統的互聯模式。有七層結構分別為應用層 表示層 會話層 傳輸層 網路層 資料鏈路層和物理層。它們每一層都有各自的一些協議。但是在後來的規劃中發現osi的模式太複雜...