章節回顧:html
《TCP/IP詳解卷1:協議》第3章 IP:網際協議(1)-讀書筆記服務器
《TCP/IP詳解卷1:協議》第3章 IP:網際協議(2)-讀書筆記網絡
《TCP/IP詳解卷1:協議》第4章 ARP:地址解析協議-讀書筆記併發
《TCP/IP詳解卷1:協議》第5章 RARP:逆地址解析協議-讀書筆記post
《TCP/IP詳解卷1:協議》第6章 ICMP:Internet控制報文協議-讀書筆記url
《TCP/IP詳解卷1:協議》第11章 UDP:用戶數據報協議-讀書筆記spa
《TCP/IP詳解卷1:協議》第1七、18章 TCP:傳輸控制協議(1)-讀書筆記操作系統
《TCP/IP詳解卷1:協議》第1七、18章 TCP:傳輸控制協議(2)-讀書筆記
《TCP/IP詳解卷1:協議》第19章 TCP的交互數據流-讀書筆記
一、引言
不少不一樣的廠家生產各類型號的計算機,它們運行徹底不一樣的操做系統,但TCP/IP協議族容許它們互相進行通訊。TCP/IP起源於60年代末美國政府資助的一個分組交換網絡研究項目,到90年代已發展成爲計算機之間最常應用的組網形式。
二、分層
網絡協議一般分不一樣層次進行開發,每一層分別負責不一樣的通訊功能。一個協議族,如TCP/IP是一組不一樣層次上的多個協議的組合。TCP/IP一般被認爲是一個四層協議系統。
每一層負責不一樣的功能:
(1)鏈路層
也稱做數據鏈路層或網絡接口層。一般包括操做系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一塊兒處理與電纜(或其餘任何傳輸媒介)的物理接口細節。
(2)網絡層
也稱做互聯網層,處理分組在網絡中的活動,例如分組的選路。在TCP/IP協議族中,網絡層協議包括IP協議(網際協議),ICMP協議(Internet互聯網控制報文協議),以及IGMP協議(Internet組管理協議)。
(3)運輸層
爲兩臺主機上的應用程序提供端到端的通訊。在TCP/IP協議族中,有兩個互不相同的傳輸協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。
TCP爲兩臺主機提供高可靠性的數據通訊。它所作的工做包括把應用程序交給它的數據分紅合適的小塊交給下面的網絡層,確認接收到的分組,設置發送最後確認分組的超時時鐘等。UDP爲應用層提供一種很是簡單的服務。它只是把稱做數據報的分組從一臺主機發送到另外一臺主機,但並不保證該數據報能到達另外一端。
(4)應用層
處理特定的應用程序細節。例如:Telnet遠程登陸、FTP文件傳輸協議、SMTP簡單郵件傳送協議,SNMP簡單網絡管理協議等。
假設在一個局域網(LAN)如以太網中有兩臺主機,兩者都運行FTP協議,圖1-2列出了該過程所涉及到的全部協議。
說明:
(1)大多數網絡應用程序都被設計成客戶-服務器模式,服務器爲客戶提供某種服務。
(2)在同一層上,雙方都有對應的一個或多個協議進行通訊。
(3)應用程序一般是一個用戶進程,而下三層則通常在(操做系統)內核中執行。
(4)應用層關心的是應用程序的細節,而不是數據在網絡中的傳輸活動。下三層對應用程序一無所知,但它們要處理全部的通訊細節。
在圖1-3中,能夠劃分出端系統(兩邊的兩臺主機)和中間系統(中間的路由器)。應用層和運輸層使用端到端協議。網絡層提供的是逐跳協議,點到點的服務。兩個端系統和每一箇中間系統都要使用它。
鏈接網絡的另外一個途徑是使用網橋。網橋是在鏈路層上對網絡進行互連,而路由器則是在網絡層上對網絡進行互連。網橋使得多個局域網組合在一塊兒,這樣對上層來講就好像是一個局域網。
三、TCP/IP的分層
說明:
(1)TCP和UDP是運輸層協議,兩者都使用IP做爲網絡層協議。雖然TCP使用不可靠的IP服務,但它卻提供一種可靠的運輸層服務。UDP爲應用程序發送和接收數據報。一個數據報是指從發送方傳輸到接收方的一個信息單元。UDP是不可靠的,它不能保證數據報能安全無誤地到達最終目的。
(2)IP是網絡層上的主要協議,同時被TCP和UDP使用。TCP和UDP的每組數據都經過端系統和每一箇中間路由器中的IP層在互聯網中進行傳輸。
(3)ICMP是IP協議的附屬協議,IP層用它來與其餘主機或路由器交換錯誤報文和其餘重要信息。IGMP是Internet組管理協議,它用來把一個UDP數據報多播到多個主機。
(4)ARP(地址解析協議)和RARP(逆地址解析協議)是某些網絡接口(如以太網和令牌環網)使用的特殊協議,用來轉換IP層和網絡接口層使用的地址。
四、互聯網的地址
互聯網上的每一個接口必須有一個惟一的Internet地址(也稱做IP地址)。IP地址長32bit。IP地址具備必定的結構,五類不一樣的互聯網地址格式如圖1-5所示。
說明:
(1)多接口主機具備多個IP地址,其中每一個接口都對應一個IP地址。
(2)有三類IP地址:單播地址(目的端爲單個主機)、廣播地址(目的端爲給定網絡上的全部主機)以及多播地址(目的端爲同一組內的全部主機)。
五、域名系統
在TCP/IP領域中,域名系統(DNS)是一個分佈的數據庫,由它來提供IP地址和主機名之間的映射信息。
六、封裝
當應用程序用TCP傳送數據時,數據被送入協議棧中,而後逐個經過每一層直到被看成一串比特流送入網絡。其中每一層對收到的數據都要增長一些首部信息(有時還要增長尾部信息)。如圖1-7所示。
說明:
(1)TCP傳給IP的數據單元稱做TCP報文段或簡稱爲TCP段。IP傳給網絡接口層的數據單元稱做IP數據報。經過以太網傳輸的比特流稱做幀。
(2)以太網數據幀的物理特性是其長度必須在46~1500字節之間。
(3)UDP數據與TCP數據基本一致。惟一的不一樣是UDP傳給IP的信息單元稱做UDP數據報,並且UDP的首部長爲8字節。
七、分用
當目的主機收到一個以太網數據幀時,數據就開始從協議棧中由底向上升,同時去掉各層協議加上的報文首部。每層協議盒都要去檢查報文首部中的協議標識,以肯定接收數據的上層協議。這個過程稱做分用。
八、客戶-服務器模型
大部分網絡應用程序在編寫時都假設一端是客戶,另外一端是服務器,其目的是爲了讓服務器爲客戶提供一些特定的服務。服務分爲兩種類型:重複型和併發型。
(1)重複型服務器
1)等待一個客戶請求的到來。
2)處理客戶請求。
3)發送響應給發送請求的客戶。
4)返回1)步。
重複型服務器主要的問題發生在2)狀態。在這個時候,它不能爲其餘客戶機提供服務。
(2)併發型服務器
1)等待一個客戶請求的到來。
2)啓動一個新的服務器來處理這個客戶的請求。在這期間可能生成一個新的進程、任務或線程,並依賴底層操做系統的支持。這個步驟如何進行取決於操做系統。生成的新服務器對客戶的所有請求進行處理。處理結束後,終止這個新服務器。
3)返回1)步。
併發服務器的優勢在於它是利用生成其餘服務器的方法來處理客戶的請求。每一個客戶都有它本身對應的服務器。若是操做系統容許多任務,那麼就能夠同時爲多個客戶服務。
說明:
(1)對服務器,而不是對客戶進行分類的緣由是由於對於一個客戶來講,它一般並不可以辨別本身是與一個重複型服務器或併發型服務器進行對話。
(2)通常來講,TCP服務器是併發的,而UDP服務器是重複的,但也存在一些例外。
九、端口號
TCP和UDP採用16bit的端口號來識別應用程序。服務器通常都是經過知名端口號來識別的。任何TCP/IP實現所提供的服務都用知名的1~1023之間的端口號。
說明:
(1)客戶端一般對它所使用的端口號並不關心,只需保證該端口號在本機上是惟一的就能夠了。客戶端口號又稱做臨時端口號(即存在時間很短暫)。這是由於它一般只是在用戶運行該客戶程序時才存在,而服務器則只要主機開着的,其服務就運行。
(2)Unix系統有保留端口號的概念。只有具備超級用戶特權的進程才容許給它本身分配一個保留端口號。這些端口號介於1~1023之間。
(3)大多數Unix系統的文件 /etc/services都包含了人們熟知的端口號。若是你想找到某個應用的端口號,能夠執行如下命令(以Telnet爲例):
十、標準的簡單服務
十一、其餘說明
(1)全部關於Internet的正式標準都以RFC(Request for Comment)文檔出版。大量的RFC並非正式的標準,出版的目的只是爲了提供信息。
(2)internet這個詞第一個字母是否大寫決定了它具備不一樣的含義。internet意思是用一個共同的協議族把多個網絡鏈接在一塊兒。而Internet指的是世界範圍內經過TCP/IP互相通訊的全部主機集合。Internet是一個internet,但internet不等於Internet。