1. 程式人生 > >TCP/IP與OSI

TCP/IP與OSI

紙上得來終覺淺,絕知此事要躬

通俗理解OSI七層模型

物理層

          硬體<————————>硬體

通過1,0的弱電訊號形成的位元流,在硬體之間通訊。

資料鏈路層

通過無線電,將有差錯的位元流物理通訊變為無差錯的能可靠傳輸資料幀的資料鏈路。

網路層

主要之路由演算法。假如A電腦要經過不,B,C,D,E,F……給G發資料,我怎麼選擇最佳路徑?這就是路由要做的事。
於是,發明了網路層。

傳輸層

TCP(發1萬個包)     ————>> 電腦(我只接受了9997個,還差3個,分別是 第1001,2004,5004個包,你再給我發一遍)

TCP 一次發大量的包,露了包,還可以再次傳送,效率低

UDP(發20個包)  ————>> 電腦(我都接受了/我只接受了19個包,差一個包,算了不要了。丟了一個包,我卡一下吧)

UDP 一次發少量的包,露了包,不管。效率高,一般適用於多人遊戲中,丟包就卡一下子。

會話層

建立一個自動收發包,自動定址的功能

允許使用者在兩個實體裝置之間建立、維持和終止會話,並支援它們之間的資料交換。例如提供單方向會話或雙向同時會話,並管理會話中的傳送順序,以及會話所佔用時間的長短。

表示層

解決在不同的系統之間通訊語法的問題,比如window與linu通訊。

應用層

將所以的協議和功能應用在在具體的應用程式和web程式中

tcp/ip協議四層模型

            tcp 傳輸控制協議

             ip 網路地址協議

應用層

            http 超文字傳輸協議

            talnet 遠端登陸

            ssh 遠端登陸(保證安全)

        telne協議: 遠端登入協議,它使我們能在本地完成遠端任務
        OSPF協議: OSPF協議(Open Shorttest Path First, 開放最短路徑優先)是一種動態路由更新協議,用於路由器之間的通訊,以告知對方自身的路由資訊
        DNS協議: DNS協議(Domain Name Service, 域名服務)提供機器域名到IP地址的轉換。如百度的機器域名是www.baidu.com,對應的IP地址是http://119.75.217.109/。
另外注意,ping是應用程式而非協議,它利用網路層的ICMP協議監測網路連線。
應用層協議可以跳過傳輸層直接使用網路層提供的服務,比如ping程式和OSPF協議;又可以既使用TCP服務,又可以使用UDP服務,如DNS協議

傳輸層

           打包和確定目的應用程式

           TCP (保證資料的可靠有序),UDP不保證

            http   佔用 80 埠

            talnet 佔用 22

             ssh   佔用  22

             mysql 佔用 3306

            TCP協議: TCP協議(Transmission Control Protocol, 傳輸控制協議)為應用程式提供可靠的、面向連線的、基於流的服務,具有超時重傳、資料確認等方式來確保資料包被正確傳送到目的端。因此TCP服務是可靠的,使用TCP協議通訊的雙方必須先建立起TCP連線,並在系統核心中為該連線維持一些必要的資料結構,比如連線的狀態,讀寫緩衝區,多個定時器等。當通訊結束時雙方必須關閉連線以釋放這些核心資料。基於流傳送意思是資料是沒有長度限制,它可源源不斷地從通訊的一段流入另一端。
            UDP協議: UDP協議(User Datagram Protocol, 使用者資料報協議)與TCP協議相反,它為應用程式提供的是不可靠的、無連線的基於資料報的服務。
無連線: 通訊雙方不保持一個長久的聯絡,因此應用程式每次傳送資料都要明確指定接收方的地址;
基於資料報的服務: 這是相對於資料流而言的,每個UDP資料報都有一個長度,接收端必須以該長度為最小單位將其內容一次性讀出,否則資料將被截斷。
UDP不具有傳送時是被重發功能,所以UDP協議在核心實現中無需為應用程式的資料儲存副本,當UDP資料報被成功傳送之後,UDP核心緩衝區中該資料報就被丟棄了。
            SCTP協議: SCTP(Stream Control Transmission Protocol, 流控制傳輸協議)是為了在因特網上傳輸電話訊號而設計的。
 

網際網路


網路層的任務之一就是選擇這些中間節點,以確定兩臺主機間的通訊路徑。
其次網路層對上層協議隱藏了網路拓撲連線的細節,在使得傳輸層看來通訊雙方是直接連線的

        IP協議: IP協議(Internet Protocol)是網路層最核心的協議,它根據資料包的目的IP地址來決定如何投遞該資料包。若資料包不可直接傳送給目標主機,那麼IP協議就為它尋找一個合適的下一跳路由器,並將資料包交付給該路由器去轉發,如此迴圈直至到達目標主機或者傳送失敗而丟棄該資料包。
        ICMP協議: ICMP協議(Internet Control Message Protocol,因特網控制報文協議)是IP協議的補充,用於檢測網路的連線狀態,如ping應用程式就是ICMP協議的使用。ICMP包傳送是不可靠的,所以不能依靠接收ICMP包解決網路問題;ICMP與TCP/UDP不同,它們是傳輸層協議,雖然都具有型別域和程式碼域,但是前者和後者不同,ping用到的ICMP協議,不是埠。ICMP協議使用的是IP協議而非使用下層協議提供的的服務,所以嚴格來講它並非網路層協議,而是網路層程式。

網路訪問(資料鏈路層)

實現網絡卡介面的網路驅動,以處理資料在乙太網線等物理媒介上的傳輸
網路驅動程式隱藏了不同物理網路的不同電氣特性,為上層協議提供一個統一的介面

TCP/IP四層模型與OSI七層模型的對應關係