概述---《TCP/IP协议》卷一
第1章 概述
1.1 引言
很多不同的廠家生產(chǎn)各種型號的計算機,它們運行完全不同的操作系統(tǒng),但TCP/IP協(xié)議族允許它們互相進(jìn)行通信。這一點很讓人感到吃驚,因為它的作用已遠(yuǎn)遠(yuǎn)超出了起初的設(shè)想。
1.2 分層
TCP/IP的四層系統(tǒng)
- 鏈路層
- 包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機中對應(yīng)的網(wǎng)絡(luò)接口卡。
- 網(wǎng)絡(luò)層
- 處理分組在網(wǎng)絡(luò)中的活動。例:分組的選路。
- 網(wǎng)絡(luò)層協(xié)議包括IP協(xié)議(網(wǎng)際協(xié)議),ICMP協(xié)議(Internet互聯(lián)網(wǎng)控制報文協(xié)議),以及IGMP協(xié)議(I nternet組管理協(xié)議)。
- IP協(xié)議是不可靠的(與傳輸層比較)。
- 運輸層
- 主要為兩臺主機上的應(yīng)用程序提供端到端(End system)的通信。
- 有兩個互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)。
- 應(yīng)用層
- 應(yīng)用層負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。
- Telnet遠(yuǎn)程登錄。
- FTP文件傳輸協(xié)議。
- SMTP簡單郵件傳送協(xié)議。
- SNMP簡單網(wǎng)絡(luò)管理協(xié)議。
- 等等一系列協(xié)議。
- 下面將用一張圖描述:
一個例子,如圖:
問題是:我們列舉了一個FTP客戶程序和另一個FTP服務(wù)器程序。
- 圖1-2的右邊,我們注意到應(yīng)用程序通常是一個用戶進(jìn)程,而下三層則一般在(操作系統(tǒng))內(nèi)核中執(zhí)行。盡管這不是必需的,但通常都是這樣處理的,例如UNIX操作系統(tǒng)。
- 圖1-2中列舉了四種不同層次上的協(xié)議。 FTP是一種應(yīng)用層協(xié)議,TCP是一種運輸層協(xié)議,IP是一種網(wǎng)絡(luò)層協(xié)議,而以太網(wǎng)協(xié)議則應(yīng)用于鏈路層上。
答案顯而易見,任何兩臺計算機之間進(jìn)行通信都需要經(jīng)過這幾個過程。
由上面的內(nèi)容引出了一個問題:從表面上看,網(wǎng)絡(luò)層和運輸層之間的區(qū)別不那么明顯。為什么要把它們劃分成兩個不同的層次呢?
在回答這個問題之前,讓我們將視野從單個網(wǎng)絡(luò)放大到一組網(wǎng)絡(luò)(Internet)。漸漸地,我們有了Internet的概念,它是由多個路由器(老一輩的會把它叫做網(wǎng)關(guān))相連組成的。
在圖1-3中,我們可以劃分出端系統(tǒng)(End system)(兩邊的兩臺主機)和中間系統(tǒng)(Intermediate system)(中間的路由器)。
應(yīng)用層和運輸層使用端到端(End-to-end)協(xié)議。在圖中,只有端系統(tǒng)需要這兩層協(xié)議。但是,網(wǎng)絡(luò)層提供的卻是逐跳(Hop-by-hop)協(xié)議,兩個端系統(tǒng)和每個中間系統(tǒng)都要使用它。
在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層IP提供的是一種不可靠的服務(wù)。也就是說,它只是盡可能快地把分組從源結(jié)點送到目的結(jié)點,但是并不提供任何可靠性保證。而另一方面, TCP在不可靠的IP層上提供了一個可靠的運輸層。為了提供這種可靠的服務(wù), TCP采用了超時重傳、發(fā)送和接收端到端的確認(rèn)分組等機制。
由此可見,雖然傳輸層跟網(wǎng)絡(luò)層看上去相同,但實際上運輸層和網(wǎng)絡(luò)層分別負(fù)責(zé)不同的功能。
1.3TCP/IP的分層
下圖是本書要討論的協(xié)議
- TCP和UDP是兩種最為著名的運輸層協(xié)議,二者都使用IP作為網(wǎng)絡(luò)層協(xié)議。
- 雖然TCP使用不可靠的IP服務(wù),但它卻提供一種可靠的運輸層服務(wù)。(TCP上層應(yīng)用有Telnet和Rlogin、SMTP等)
- UDP為應(yīng)用程序發(fā)送和接收數(shù)據(jù)報。一個數(shù)據(jù)報是指從發(fā)送方傳輸?shù)浇邮辗降囊粋€信息單元(例如,發(fā)送方指定的一定字節(jié)數(shù)的信息)。但是與TCP不同的是,UDP是不可靠的,它不能保證數(shù)據(jù)報能安全無誤地到達(dá)最終目的。(UDP上層應(yīng)用有DNS、TFTP、BOOTP(DHCP的前身)、SNMP等)
- IP是網(wǎng)絡(luò)層上的主要協(xié)議,同時被TCP和UDP使用。 TCP和UDP的每組數(shù)據(jù)都通過端系統(tǒng)和每個中間路由器中的IP層在互聯(lián)網(wǎng)中進(jìn)行傳輸。
- ICMP是I P協(xié)議的附屬協(xié)議。 I P層用它來與其他主機或路由器交換錯誤報文和其他重要信息。(應(yīng)用層程序可以訪問它,比如ping和traceroute)
- IGMP是Internet組管理協(xié)議。它用來把一個UDP數(shù)據(jù)報多播到多個主機。
- ARP(地址解析協(xié)議)和RARP(逆地址解析協(xié)議)是某些網(wǎng)絡(luò)接口(如以太網(wǎng)和令牌環(huán)網(wǎng))使用的特殊協(xié)議,用來轉(zhuǎn)換IP層和網(wǎng)絡(luò)接口層使用的地址。
1.4互聯(lián)網(wǎng)的地址
五類不同的互聯(lián)網(wǎng)地址格式如下:
各類IP地址范圍:
有3類IP地址
- 單播地址(目的為單個主機)
- 廣播地址(目的端為給定網(wǎng)絡(luò)上的所有主機)
- 多播地址(目的端為同一組內(nèi)的所有主機)
PS:由于互聯(lián)網(wǎng)上的每個接口必須有一個唯一的IP地址,因此必須要有一個管理機構(gòu)為接入互聯(lián)網(wǎng)的網(wǎng)絡(luò)分配IP地址。這個管理機構(gòu)就是互聯(lián)網(wǎng)絡(luò)信息中心(Internet Network InformationCentre),稱作InterNIC。InterNIC只分配網(wǎng)絡(luò)號。主機號的分配由系統(tǒng)管理員來負(fù)責(zé)。(中國的NIC的網(wǎng)址)
1.5域名系統(tǒng)(DNS)
- 域名系統(tǒng)(DNS)是一個分布的數(shù)據(jù)庫,由它來提供IP地址和主機名之間的映射信息。
- 任何應(yīng)用程序都可以調(diào)用一個標(biāo)準(zhǔn)的庫函數(shù)來查看給定名字的主機的IP地址。類似地,系統(tǒng)還提供一個逆函數(shù)—給定主機的IP地址,查看它所對應(yīng)的主機名。
- 大多數(shù)使用主機名作為參數(shù)的應(yīng)用程序也可以把IP地址作為參數(shù)。例如,在第4章中當(dāng)我們用Telnet進(jìn)行遠(yuǎn)程登錄時,既可以指定一個主機名,也可以指定一個IP地址。
也就是說,域名系統(tǒng)使得“IP地址”等同于“主機名”。
1.6封裝
當(dāng)應(yīng)用程序用TCP傳送數(shù)據(jù)時,數(shù)據(jù)被送入?yún)f(xié)議棧中,然后逐個通過每一層直到被當(dāng)作一串比特流送入網(wǎng)絡(luò)。其中每一層對收到的數(shù)據(jù)都要增加一些首部信息(有時還要增加尾部信息),該過程如圖1-7所示。
- IP和網(wǎng)絡(luò)接口層之間傳送的數(shù)據(jù)單元應(yīng)該是分組(packet)。分組既可以是一個IP數(shù)據(jù)報,也可以是IP數(shù)據(jù)報的一個片(fragment)。
- 以太網(wǎng)數(shù)據(jù)幀的物理特性是其長度必須在46~1500字節(jié)之間。
各層數(shù)據(jù)名稱
- TCP報文段
- UDP數(shù)據(jù)報
- IP數(shù)據(jù)報
- 以太網(wǎng)數(shù)據(jù)幀
1.7分用
當(dāng)目的主機收到一個以太網(wǎng)數(shù)據(jù)幀時,數(shù)據(jù)就開始從協(xié)議棧中由底向上升,同時去掉各層協(xié)議加上的報文首部。每層協(xié)議盒都要去檢查報文首部中的協(xié)議標(biāo)識,以確定接收數(shù)據(jù)的上層協(xié)議。這個過程稱作分用(Demultiplexing),圖1 - 8顯示了該過程是如何發(fā)生的。
1.8客戶—服務(wù)器模式
服務(wù)器分為兩種類型
- 重復(fù)型
- 等待一個客戶請求的到來。
- 處理客戶請求。
- 發(fā)送響應(yīng)給發(fā)送請求的客戶。
- 返回第一步。
- 并發(fā)型
- 等待一個客戶請求的到來。
- 啟動一個新的服務(wù)器來處理這個客戶的請求。在這期間可能生成一個新的進(jìn)程、任務(wù)或線程,并依賴底層操作系統(tǒng)的支持。這個步驟如何進(jìn)行取決于操作系統(tǒng)。生成的新服務(wù)器對客戶的全部請求進(jìn)行處理。處理結(jié)束后,終止這個新服務(wù)器。
- 返回第一步。
重復(fù)型服務(wù)器在第二步的時候不能為其他客戶服務(wù)(一對一服務(wù))。
并發(fā)型服務(wù)器的優(yōu)點在于它是利用生成其他服務(wù)器的方法來處理客戶的請求(一對多服務(wù))。
一般來說,TCP服務(wù)器是并發(fā)的,而UDP服務(wù)器是重復(fù)的。
1.9端口號
TCP和UDP采用16 bit的端口號來識別應(yīng)用程序。
- 臨時端口號:1024~5000
- 其他服務(wù)預(yù)留端口號:5001~65535
注:windows的查看進(jìn)程命令:netstat -an
1.10標(biāo)準(zhǔn)化過程
IETF
www.ietf.org/rfc.html
1.11RFC
RFC文獻(xiàn)地址
1.12標(biāo)準(zhǔn)的簡單服務(wù)
| echo | 7 | 7 | 862 | 服務(wù)器返回客戶發(fā)送的所有內(nèi)容 |
| discard | 9 | 9 | 863 | 服務(wù)器丟棄客戶發(fā)送的所有內(nèi)容 |
| daytime | 13 | 13 | 867 | 服務(wù)器以可讀形式返回時間和日期 |
| chargen | 19 | 19 | 864 | 當(dāng)客戶發(fā)送一個數(shù)據(jù)報時,TCP服務(wù)器發(fā)送一串連續(xù)的字符流,知道客戶中斷連接。UDP服務(wù)器發(fā)送一個隨即長度的數(shù)據(jù)報 |
| time | 37 | 37 | 868 | 服務(wù)器返回一個二進(jìn)制形式的32bit數(shù),表示從UTC時間1900年1月1日午夜至今的秒數(shù) |
如果仔細(xì)檢查這些標(biāo)準(zhǔn)的簡單服務(wù)以及其他標(biāo)準(zhǔn)的TCP/IP服務(wù)(如Telnet、FTP、SMTP等)的端口號時,我們發(fā)現(xiàn)它們都是奇數(shù)。這是有歷史原因的,因為這些端口號都是從NCP端口號派生出來的(NCP,即網(wǎng)絡(luò)控制協(xié)議,是ARPANET的運輸層協(xié)議,是TCP的前身)。NCP是單工的,不是全雙工的,因此每個應(yīng)用程序需要兩個連接,需預(yù)留一對奇數(shù)和偶數(shù)端口號。當(dāng)TCP和UDP成為標(biāo)準(zhǔn)的運輸層協(xié)議時,每個應(yīng)用程序只需要一個端口號,因此就使用了NCP中的奇數(shù)。
1.13互聯(lián)網(wǎng)
internet和Internet區(qū)別
- Internet指的是世界范圍內(nèi)通過TCP/IP互相通信的所有主機集合(超過100萬臺)。
- Internet是一個internet,但internet不等于Internet。
internet意思是用一個共同的協(xié)議族把多個網(wǎng)絡(luò)連接在一起。
1.14實現(xiàn)
既成事實標(biāo)準(zhǔn)的TCP/IP軟件實現(xiàn)來自于位于伯克利的加利福尼亞大學(xué)的計算機系統(tǒng)研究小組。
成長歷史:
1.15應(yīng)用編程接口
TCP/IP協(xié)議的應(yīng)用程序通常采用兩種應(yīng)用編程接口(API)。
- socket(套接字)。
- TLI(運輸層接口)。
- 所有關(guān)于socket和TLI的編程細(xì)節(jié)請參閱文獻(xiàn) [Stevens1990]。
1.16測試網(wǎng)絡(luò)
不廢話,上圖:
1.17小結(jié)
本章快速地瀏覽了TCP/IP協(xié)議族,介紹了在后面的章節(jié)中將要詳細(xì)討論的許多術(shù)語和協(xié)議。
總結(jié)
以上是生活随笔為你收集整理的概述---《TCP/IP协议》卷一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想系统化提升自己产品能力,就要读这些书籍
- 下一篇: B端产品如何做好从1到10的架构搭建?