官术网_书友最值得收藏!

1.1 TCP/IP協議的分層結構

TCP/IP協議族按照層次由上到下,可以分成4層,分別是應用層(Application Layer)、傳輸層(Transport Layer)、網絡層(Internet Layer,也稱Internet層或網絡層)和網絡接口層(Network Interface Layer)或稱數據鏈路層。其中,應用層包含所有的高層協議,比如虛擬終端協議(Telecommunications Network,TELNET)、文件傳輸協議(File Transfer Protocol,FTP)、電子郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)、域名系統(Domain Name System,DNS)、網上新聞傳輸協議(Net News Transfer Protocol,NNTP)和超文本傳送協議(Hyper Text Transfer Protocol,HTTP)等。TELNET允許一臺機器上的用戶登錄到遠程機器上,并進行工作;FTP提供有效地將文件從一臺機器上轉移到另一臺機器上的方法;SMTP用于電子郵件的收發;DNS用于把主機名映射到網絡地址;NNTP用于新聞的發布、檢索和獲取;HTTP用于在WWW上獲取主頁。

應用層的下面一層是傳輸層,著名的TCP協議和UDP協議就在這一層。TCP協議是面向連接的協議,它提供可靠的報文傳輸和對上層應用的連接服務。為此,除了基本的數據傳輸外,它還有可靠性保證、流量控制、多路復用、優先權和安全性控制等功能。UDP協議(User Datagram Protocol,用戶數據報協議)是面向無連接的不可靠傳輸的協議,主要用于不需要TCP的排序和流量控制等功能的應用程序。

傳輸層下面一層是網絡層,該層是整個TCP/IP體系結構的關鍵部分,其功能是使主機可以把分組發往任何網絡,并使分組獨立地傳向目標。這些分組可能經由不同的網絡,到達的順序和發送的順序也可能不同。互聯網層使用協議有IP協議。

網絡層下面是網絡接口層,該層是整個體系結構的基礎部分,負責接收IP層的IP數據報,通過網絡向外發送;或接收處理從網絡上來的物理幀,抽出IP數據報,向IP層發送。該層是主機與網絡的實際連接層。鏈路層下面就是實體線路了(比如以太網絡、光纖網絡等)。鏈路層有以太網、令牌環網等標準,鏈路層負責網卡設備的驅動、幀同步(就是說從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就自動重發)、數據差錯校驗等工作。交換機是工作在鏈路層的網絡設備,可以在不同的鏈路層網絡之間轉發數據幀(比如十兆以太網和百兆以太網之間、以太網和令牌環網之間),由于不同鏈路層的幀格式不同,交換機要將進來的數據報拆掉鏈路層首部重新封裝之后再轉發。

不同的協議層對數據報有不同的稱呼,在傳輸層叫作段(Segment),在網絡層叫作數據報(Datagram),在鏈路層叫作幀(Frame)。數據封裝成幀后發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部,最后將應用層數據交給應用程序處理。

不同層包含不同的協議,如圖1-1所示為各個協議及其所在的層。

圖1-1

在主機發送端,從傳輸層開始,會把上一層的數據加上一個報頭形成本層的數據,這個過程叫數據封裝。在主機接收端,從最下層開始,每一層數據會去掉首部信息,該過程叫作數據解封,如圖1-2所示。

圖1-2

下面以瀏覽某個網頁為例,了解瀏覽網頁的過程中TCP/IP各層所做的工作。

發送方:

(1)打開瀏覽器,輸入網址:www.xxx.com,按Enter鍵,訪問網頁,其實就是訪問Web服務器上的網頁,在應用層采用的協議是HTTP協議,瀏覽器將網址等信息組成HTTP數據,并將數據發送給下一層傳輸層。

(2)傳輸層將數據前加上TCP首部,并標記端口為80(Web服務器默認端口),將這個數據段發給下一層網絡層。

(3)網絡層在這個數據段前加上自己機器的IP和目的IP,此時這個段被稱為IP數據報(也可以稱為報文),然后將這個IP包發給下一層網絡接口層。

(4)網絡接口層先將IP數據報前面加上自己機器的MAC地址和目的MAC地址,這時加上MAC地址的數據稱為幀,網絡接口層通過物理網卡將這個幀以比特流的方式發送到網絡上。

互聯網上有路由器,它會讀取比特流中的IP地址進行選路,以到達正確的網段,之后這個網段的交換機讀取比特流中的MAC地址,找到對應要接收的機器。

接收方:

(1)網絡接口層用網卡接收到了比特流,讀取比特流中的幀,將幀中的MAC地址去掉,就成了IP數據報,傳遞給上一層網絡層。

(2)網絡層接收了下層傳上來的IP數據報,將IP從包的前面拿掉,取出帶有TCP的數據(數據段)交給傳輸層。

(3)傳輸層接收了這個數據段,看到TCP標記的端口是80,說明應用層協議是HTTP協議,之后將TCP頭去掉并將數據交給應用層,告訴應用層發送方請求的是HTTP的數據。

(4)應用層發送方請求的是HTTP數據,就調用Web服務器程序,把www.xxx.com的首頁文件發送回去。

如果兩臺計算機在不同的網段中,那么數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器,如圖1-3所示。

圖1-3

目的主機收到數據報后,經過各層協議棧最后到達應用程序的過程如圖1-4所示。

圖1-4

以太網驅動程序首先根據以太網首部中的“上層協議”字段確定該數據幀的有效載荷(Payload,指除去協議首部之外實際傳輸的數據)是IP、ARP還是RARP協議的數據報,然后交給相應的協議處理。假如是IP數據報,IP協議再根據IP首部中的“上層協議”字段確定該數據報的有效載荷是TCP、UDP、ICMP還是IGMP,然后交給相應的協議處理。假如是TCP段或UDP段,TCP或UDP協議再根據TCP首部或UDP首部的“端口號”字段確定應該將應用層數據交給哪個用戶進程。IP地址是標識網絡中不同主機的地址,而端口號就是同一臺主機上標識不同進程的地址,IP地址和端口號合起來標識網絡中唯一的進程。

注意,雖然IP、ARP和RARP數據報都需要以太網驅動程序來封裝成幀,但是從功能上劃分,ARP和RARP屬于鏈路層,IP屬于網絡層。雖然ICMP、IGMP、TCP、UDP的數據都需要IP協議來封裝成數據報,但是從功能上劃分,ICMP、IGMP與IP同屬于網絡層,TCP和UDP屬于傳輸層。

如圖1-5所示,總結TCP/IP協議模型對數據的封裝。

圖1-5

主站蜘蛛池模板: 绥中县| 调兵山市| 金秀| 吐鲁番市| 阿拉善右旗| 宣威市| 昌平区| 鄂尔多斯市| 闽清县| 绥江县| 普定县| 蓝山县| 林州市| 二连浩特市| 大石桥市| 乌恰县| 乃东县| 盐源县| 化州市| 陈巴尔虎旗| 大厂| 蕉岭县| 沅陵县| 阿尔山市| 寿宁县| 永寿县| 文成县| 黄大仙区| 潮州市| 亚东县| 潼关县| 巍山| 内乡县| 苍梧县| 彩票| 宿迁市| 平远县| 伊川县| 合作市| 迁西县| 繁昌县|