學習資料:http://www.cnblogs.com/KeenLeung/p/3482987.html
TCP/IP(Transmission Control Protocol/Internet Protocol)傳輸控制協議/互連網絡協議,是Internet上使用的網絡協議
1】分層
I.網絡接口層(SubNetwork Layer
與OSI協議的物理層、數據鏈路層以及網絡層的部分相對應。
該層只定義了TCP/IP與各種通信子網之間的網絡接口。
網絡接口層的功能是傳輸經網絡層處理過的消息。
II.網絡層(Internet Layer)
與OSI網絡層相對應,由于它是針對網際環境設計的,具有更強的網際通信能力。
網絡層協議為IP協議。它將傳輸層送來的消息組裝成IP數據包,并且把IP數據包傳遞給網絡接口層。
III.傳輸層(Transport Layer)
與OSI傳輸層相對應,為應用程序提供端到端通信功能。
傳輸層有3個主要協議,其分別為傳輸控制協議TCP,用戶數據報協議UDP和互聯網控制消息協議ICMP
TCP協議負責將用戶數據按規定長度組成數據包發送,在接收端對數據包按順序進行分解重組以恢復用戶數據。
DP協議負責主機和網關以及Internet運行管理中心等的信息通信,控制管理網絡的運行。
ICMP協議負責當數據包傳輸有誤時,發送出錯信息給數據包發送端主機,另外還具有控制數據包流量的功能。
IV.應用層(Application Layer)
包含了OSI會話層,表示層和應用層的功能,為用戶提供各類服務。
TCP/IP協議集以及各層次與OSI各層次對應關系:
OSI層次 |
|
TCP/IP層次 |
|
TCP/IP協議集 |
|||||||
5~7層 |
|
應用層 |
|
SMTP |
DNS |
FTP |
RPC |
SNMP |
|||
4層 |
|
傳輸層 |
|
TCP |
UDP |
||||||
3層 |
|
網絡層 |
|
IP(ICMP.ARP.RARP) |
|||||||
1~2層 |
|
網絡接口層 |
|
Ethernet |
Token-Ring |
100BASE-T |
Others |
2】TCP/IP分層工作原理
(1)TCP/IP分層原理:
表示了兩臺主機上的應用程序之間傳輸報文的路徑。主機B上的第n層接收到的正是主機A上的第n層發送出來的對象。
(2)TCP/IP模型的分界線
TCP/IP協議的概念性層次包含兩個重要的劃分,一個是協議地址的劃分界線,以區分不同的尋址,另一個是操作系統的劃分,以區分系統程序與應用程序。
網絡接口層處理物理地址,該層協議已集成到操作系統中,屬于系統軟件。網絡層與傳輸層處理IP地址,這兩層協議也已集成到操作系統中,屬于系統軟件。應用層協議未集成到操作系統中,屬于非系統軟件。
(3)網絡協議與操作系統的關系
計算機體系結構中的低層部分,即物理層和數據鏈路層協議,是和通信設備等硬件密切相關的,需要由網絡接口卡和網絡互連設備來實現。計算機體系結構中的高層部分,網絡層協議和傳輸層協議,由計算機主機操作系統來實現,作為核心線程方式運行。網絡層與數據鏈路層協議的接口以及服務調用,是通過操作系統中網卡驅動程序來實現的。處于TCP之上的應用層協議大部分使用TCP/IP協議提供的系統調用,它們處于用戶程序的地位,以用戶線程方式執行。
3】IP協議
IP協議為網絡層協議,其內容包括:基本傳輸單元,也就是IP報文的類型與定義、IP報文的地址以及分配方法、IP報文的路由轉發以及IP報文的分段與重組。
IP協議僅具有有限的報錯功能,數據包在傳輸過程中的差錯檢測和恢復都由傳輸層協議TCP來完成。
(1)IP數據報
IP數據報包括報文頭和正文部分,其格式如圖8.10所示,以及說明見表8.1。
0 |
4 |
8 |
16 19 24 31 |
||
版本 |
報頭長度 |
服務級別 |
報文長度 |
||
標識 |
|
標志 |
分段偏移 |
||
生存時間 |
用戶協議 |
報頭校驗和 |
|||
源IP地址 |
|||||
目的IP地址 |
|||||
選項 |
填充 |
||||
數據 |
|||||
…… |
|||||
圖8.10 IP協議數據報格式
名 字 |
位數 |
說 明 |
版本號 |
4 |
此協議版本號 |
IP報頭長度 |
4 |
IP數據報的報頭長度(32位) |
服務級別 |
8 |
規定優先級、傳送速率、吞吐量和可靠性等參量 |
報文長度 |
16 |
報關和數據兩部分總長度(字節) |
標識 |
16 |
數據報標識,便于數據報分段與重裝 |
標志 |
3 |
數據報是否分段標志 |
分段偏移 |
13 |
以64位為單位表示的分段偏移 |
生存時間 |
8 |
允許數據報在網間傳輸的存活時間 |
用戶協議號 |
8 |
指出發送數據報的上層協議 |
報頭校驗和 |
16 |
只用于報頭檢查 |
源IP地址 |
32 |
數據報的源主機IP地址 |
目的IP地址 |
32 |
數據報的舊的主機IP地址 |
任選項 |
可變 |
規定附加服務,如時間戳、錯誤報告及特殊路由等 |
填充 |
可變 |
保證IP報頭以32位為邊界對齊 |
表8.1 IP數據報格式說明
(2)數據報分段與重裝
在各種物理網絡中,數據幀的長度可以不一樣,在互連網絡中,IP協議首先要根據物理網絡所允許的最大發送長度對上層協議提交的數據報進行長度檢查,需要時把數據報分成若干個段發送,對數據報分段后,形成多個IP數據報,為了說明被分段數據報和IP數據報的關系,被分段IP數據報需設置相同的標識(IP)。每一個被分段的IP數據報要重新計算其報文長度,并且要表明該IP數據報在原始數據報中的位置。
在互連網絡中,被分段的數據報獨立傳輸,在經路由器轉發時,由于路由可能不同,導致達目標主機時,接收到的IP數據報順序與發送時的順序不一致,因此必須根據IP數據報中相關字段(標識、長度、偏移及標志等)將被分段的數據報重新組裝恢復為原始IP數據報(保留第一段IP數據報頭),根據用戶協議號提交給上層協議。
(3)IP地址
IP地址是IP協議的核心,IP地址格式如圖8.11所示。
|
0 7 |
8 1516 2324 31 |
|||||||
A類地址 |
0 |
網絡地址 |
主機地址 |
||||||
|
|
||||||||
B類地址 |
1 |
0 |
網絡地址 |
主機地址 |
|||||
|
|
||||||||
C類地址 |
1 |
1 |
0 |
網絡地址 |
主機地址 |
||||
|
|
||||||||
D類地址 |
1 |
1 |
1 |
0 |
組播地址 |
||||
|
|
||||||||
E類地址 |
1 |
1 |
1 |
1 |
0 |
保留 |
|||
圖8.11 IP地址格式
A類地址中網絡地址126個(1個字節),主機地址16387064個(3個字節),其范圍為0.0.0.0~127.255.255.255。A類地址用于大型網絡,由國際網絡中心來分配。
B類地址中網絡地址16256個(2個字書),主機地址64576個(2個字節),其范圍為128.0.0.0~191.255.255.255。B類地址用于各地區的網管中心,由歐州、北美和亞太三大區網絡信息中心負責分配。
C類地址中網絡地址2064512個(3個字節),主機地址254個(1個字節),其范圍為192.0.0.0~223.255.255.255。C類地址用于校園網或企業網。由國家或地區網絡信息中心負責分配。
D類地址為組播地址,E類地址保留。
(4)子網和IP地址屏蔽碼
由于Internet發展迅速,網絡地址成為寶貴資源,為了提高IP地址的利用率,將大型網絡劃分為若干個邏輯上相互獨立的子網,但網絡地址不變,原主機地址成為子網主機地址。
IP地址屏蔽碼是和IP地址配合的,用于說明某大型網絡所具有的子網數,以及每個子網所包含的主機數,屏蔽碼是對地址分類的擴展。
IP協議為每個網絡接口分配一個IP地址,在有子網的IP地址中,其子網號是通過主機號字段的高幾位二進制位來表示的,所占位數與子網數對應。如果把該接口IP地址和其屏蔽碼相與,屏蔽碼將IP地址中主機字段主機號屏蔽掉,即可得到該接口所在網絡的子網號。以C類地址為例,例如,屏蔽碼255.255.255.192(11000000B)表示有4個子網號,每個子網可以有64臺主機,設IP地趾為
202.117.80.1 主機號為00000001
202.117.80.3 主機號為00000011
202.117.80.130 主機號為10000010
將上述IP地址與屏蔽碼相與,可看出前兩個IP地址的子網號為0號,屬于同一網段,而第三個IP地址的子網號為i號,不屬于同一網段。
(5)路由選擇
在互連網絡中,每個主機和路由器(TCP/IP中稱為網關)都保存有一個路由選擇表,其基本格式參見圖8.12
目的地址 |
路由器地址 |
忙閑度 |
圖8.12 路由選擇表基本格式
其中路由器地址指向IP數據報應送往的下一個路由器。忙閑度表示這個路由器發送數據的數量。當一個目的地址有多個路由時,IP協議總是選擇忙閑度最小的路由。
(6)ICMP,ARP和RARP協議
互連網控制報文協議ICMP(Internetwork Control Message Protocol)為差錯和控制報文協議,用于傳輸錯誤報告和控制信息。由于IP協議提供不連接的數據報傳送服務,須要由ICMP提供這類傳輸差錯報告服務。
地址解析協議ARP(Address Resolution Protocol)提供IP地址到物理地址的映射服務。
逆向地址解析協議RARP(Reverse Address Resolution Protocol)提供從物理地址到IP地址的映射服務。
4】TCP協議
TCP為傳輸層協議,提供可靠的進程間通信機制,該協議可以自動糾正各種差錯,TCP支持許多高層協議ULP(Upper Level Protocol),它提供一對ULP之間面向連接的傳輸服務,包括建立連接、數據傳輸和終止連接。TCP主要通過套接字(Socket)為ULP提供面向連接的傳輸服務。
1.接口和套接字
傳輸層協議和應用程序之間的數據接口由運行在某主機上的TCP協議為其分配端口號。為了使其具有全局唯一性,將此端口號和IP地址合起來組成套接字。
使用TCP協議的網絡應用程序分為服務程序和客戶程序。服務程序為其他主機提供服務,服務程序使用固定的端口號,例如Telnet服務端口號為23,FTP為21號,E-mail為25號。客戶程序使用服務程序提供的服務,客戶程序可選擇通信端口號。服務程序運行后,在各自端口等待,如果希望使用服務程序提供的服務,可向該服務對應的套接字上發送消息。
2.TCP報文格式
TCP協議中的基本傳輸單元為段,TCP報文又稱為TCP段。一個TCP段由段頭和數據流兩部分組成。其格式如圖8.13所示,說明見表8.2。
源端口號 |
目的端口號 |
|||||||
序號 |
||||||||
確認號 |
||||||||
數據偏移值 |
保留 |
URG |
ACK |
FST |
RSH |
SYN |
FIN |
窗口大小 |
校驗和 |
緊急數據指針 |
|||||||
選項 |
填充 |
|||||||
TCP數據 |
||||||||
圖8.13 TCP報文格式
報頭字段名 |
位 數 |
說 明 |
源端口號 |
16 |
本地通信端口 |
目的端口號 |
16 |
遠地通信端口 |
序號(SEQ) |
32 |
數據部分第一個字節的序列號 |
確認號(ACK) |
32 |
表示本地希望接收的下一個數據字節的序號 |
數據偏移值 |
4 |
該TCP段中數據的起始位置 |
URG |
1 |
緊急數據指針有效標志,指示本段中包含緊急數據 |
ACK |
1 |
確認標志,指示段中確認號有效 |
PST |
1 |
復位連接標志,指示本段為復位段 |
RSH |
1 |
PUSH操作標志 |
SYN |
1 |
建立同步連接標志 |
FIN |
1 |
本地數據發送結束,終止連接標志 |
窗口大小 |
16 |
本地接收窗口(接收緩沖區)大小 |
校驗和 |
16 |
包括TCP報頭和數據在內的校驗和 |
緊急數據指針 |
16 |
指示從發送數據序列號開始到緊急數據之后的第一個字節偏移值 |
選項 |
可變 |
提供任選服務 |
填充 |
可變 |
保證TCP報頭以32位為邊界對齊 |
表8.2 TCP報文格式說明
TCP數據流是無結構的字節流,這一特征允許TCP段長可變。兩個使用TCP協議進行通信的對等實體間的通信,一般要經歷建立連接、數據傳輸和終止連接3個階段。TCP協議通過狀態轉換機制,可以保證可靠的執行各個階段,為上層應用提供雙向、可靠、順序及無重復的數據流傳輸服務。
3.建立連接
TCP的連接建立,需要發送序列號和接收序列號,初始序列號由TCP在創建連接時分配,建立連接實際上是雙方序列號同步的過程,建立連接時,每一方都發送自己的初始序列號,并且接收對方發送的序列號作為接收序列號,通過"三次握手"機制建立連接。TCP協議可以處理一方發起的連接請求或由雙方同時發起的連接請求。正常連接建立過程如圖8.14所示,同步標志SYN用于連接建立階段。由發起方發送初始序列號為X,且SYN標志置位的段;由接收方回送初始序列為Y、SYN置位、ACK標志置位且應答序列號為X十1(表示希望接收的下一個數據字節的序列號)的響應段;最后發起方發送以ACK置位,應答序列號為Y十1應答的段。建立起連接。
4.關閉連接
連接的關閉由雙方共同完成。關閉請求可以由一方發起也可以由雙方同時發起。請求關閉方向對方發送FIN段請求關閉連接,接收方必須使用ACK段給予確認。關閉過程也是一個三次握手過程。
5.UDP協議
UDP協議是對IP協議集的擴充,提供了復用功能,區分一臺主機中多個不同應用。UDP提供無連接服務,通訊開銷很小,效率較高,適用于簡單的請求/響應通信方式的應用,例如DNS應用等。
文章列表