TCP IP結構詳述

2021-06-16 07:24:02 字數 3703 閱讀 1867

從協議分層模型方面來講,tcp/ip由四個層次組成:網路介面層、網路層、傳輸層、

應用層。

tcp/ip協議並不完全符合osi的七層參考模型。傳統的

開放式系統互連參考模型,是一種通訊協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬體在相同的層次上相互通訊。這7層是:物理層、

物理層是定義物理介質的各種特性:

1、機械特性。

2、電子特性。

3、功能特性。

4、規程特性。

資料鏈路層是負責接收ip資料報並通過網路傳送之,或者從網路上接收物理幀,抽出ip資料報,交給ip層。

常見的介面層協議有:

ethernet 802.3、token ring 802.5、x.25、frame relay、hdlc、ppp atm 等。

負責相鄰計算機之間的通訊。其功能包括三方面。

一、處理來自傳輸層的分組傳送請求,收到請求後,將分組裝入ip資料報,填充報頭,選擇去往信宿機的路徑,然後將資料報發往適當的網路介面。

二、處理輸入資料報:首先檢查其合法性,然後進行尋徑--假如該資料報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該資料報尚未到達信宿,則**該資料報。

三、處理路徑、流控、擁塞等問題。

網路層包括:ip(internet protocol)協議、icmp(internet control message protocol)

控制報文協議、arp(address resolution protocol)位址轉換協議、rarp(reverse arp)反向位址轉換協議。

ip是網路層的核心,通過路由選擇將下一跳ip封裝後交給介面層。ip資料報是無連線服務。

icmp是網路層的補充,可以回送報文。用來檢測網路是否通暢。

ping命令就是傳送icmp的echo包,通過回送的echo relay進行網路測試。

arp是正向位址解析協議,通過已知的ip,尋找對應主機的mac位址。

rarp是反向位址解析協議,通過mac位址確定ip位址。比如無盤工作站和dhcp服務。

ip層接收由更低層(網路介面層例如乙太網裝置驅動程式)發來的資料報,並把該資料報傳送到更高層---tcp或udp層;相反,ip層也把從tcp或udp層接收來的資料報傳送到更低層。ip資料報是不可靠的,因為ip並沒有做任何事情來確認資料報是按順序傳送的或者沒有被破壞。ip資料報中含有傳送它的主機的位址(源位址)和接收它的主機的位址(目的位址)。

高層的tcp和udp服務在接收資料報時,通常假設包中的源位址是有效的。也可以這樣說,ip位址形成了許多服務的認證基礎,這些服務相信資料報是從乙個有效的主機傳送來的。ip確認包含乙個選項,叫作ip source routing,可以用來指定一條源位址和目的位址之間的直接路徑。對於一些tcp和udp的服務來說,使用了該選項的ip包好像是從路徑上的最後乙個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連線。那麼,許多依靠ip源位址做確認的服務將產生問題並且會被非法入侵。

icmp與ip位於同一層,它被用來傳送ip的的控制資訊。它主要是用來提供有關通向目的位址的路徑資訊。icmp的『redirect』資訊通知主機通向其他系統的更準確的路徑,而『unreachable』資訊則指出路徑有問題。另外,如果路徑不可用了,icmp可以使tcp連線『體面地』終止。ping是最常用的基於icmp的服務。

提**用程式間的通訊。其功能包括:一、格式化資訊流;二、提供可靠傳輸。為實現後者,傳輸層協議規定接收端必須發回確認,並且假如分組丟失,必須重新傳送。

傳輸層協議主要是:傳輸控制協議tcp(transmission control protocol)和使用者資料報協議udp(user datagram protocol)。

tcp是面向連線的通訊協議,通過三次握手建立連線,通訊時完成時要拆除連線,由於tcp是面向連線的所以只能用於點對點的通訊。

tcp提供的是一種可靠的資料流服務,採用「帶重傳的肯定確認」技術來實現傳輸的可靠性。tcp還採用一種稱為「滑動視窗」的方式進行流量控制,所謂視窗實際表示接收能力,用以限制傳送方的傳送速度。

如果ip資料報中有已經封好的tcp資料報,那麼ip將把它們向『上』傳送到tcp層。tcp將包排序並進行錯誤檢查,同時實現虛電路間的連線。tcp資料報中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。

tcp將它的資訊送到更高層的應用程式,例如telnet的服務程式和客戶程式。應用程式輪流將資訊送回tcp層,tcp層便將它們向下傳送到ip層,裝置驅動程式和物理介質,最後到接收方。

面向連線的服務(例如telnet、ftp、rlogin、x windows和smtp)需要高度的可靠性,所以它們使用了tcp。dns在某些情況下使用tcp(傳送和接收網域名稱資料庫),但使用udp傳送有關單個主機的資訊。

udp是面向無連線的通訊協議,udp資料報括目的埠號和源埠號資訊,由於通訊不需要連線,所以可以實現廣播傳送。

udp通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出丟包現象,實際應用中要求在程式設計師程式設計驗證。

udp與tcp位於同一層,但它不管資料報的順序、錯誤或重發。因此,udp不被應用於那些使用虛電路的面向連線的服務,udp主要用於那些面向查詢---應答的服務,例如nfs。相對於ftp或telnet,這些服務需要交換的資訊量較小。使用udp的服務包括ntp(網路時間協議)和dns(dns也使用tcp)。

欺騙udp包比欺騙tcp包更容易,因為udp沒有建立初始化連線(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與udp相關的服務面臨著更大的危險。

tcp和udp服務通常有乙個客戶/伺服器的關係,例如,乙個telnet服務程序開始在系統上處於空閒狀態,等待著連線。使用者使用telnet客戶程式與服務程序建立乙個連線。客戶程式向服務程序寫入資訊,服務程序讀出資訊並發出響應,客戶程式讀出響應並向使用者報告。因而,這個連線是雙工的,可以用來進行讀寫。

兩個系統間的多重telnet連線是如何相互確認並協調一致呢?tcp或udp連線唯一地使用每個資訊中的如下四項進行確認:

源ip位址 傳送包的ip位址。

目的ip位址 接收包的ip位址。

源埠 源系統上的連線的埠。

目的埠 目的系統上的連線的埠。

埠是乙個軟體結構,被客戶程式或服務程序用來傳送和接收資訊。乙個埠對應乙個16位元的數。服務程序通常使用乙個固定的埠,例如,smtp使用25、xwindows使用6000。這些埠號是『廣為人知』的,因為在建立與特定的主機或服務的連線時,需要這些位址和目的位址進行通訊。

向使用者提供一組常用的應用程式,比如電子郵件、檔案傳輸訪問、遠端登入等。遠端登入telnet使用telnet協議提供在網路其它主機上註冊的介面。telnet會話提供了基於字元的虛擬終端。檔案傳輸訪問ftp使用ftp協議來提供網路內機器間的檔案拷貝功能。

應用層一般是面向使用者的服務。如ftp、telnet、dns、smtp、pop3。

telnet服務是使用者遠端登入服務,使用23h埠,使用明碼傳送,保密性差、簡單方便。

dns(domain name service)是網域名稱解析服務,提供網域名稱到ip位址之間的轉換。

smtp(****** mail transfer protocol)是簡單郵件傳輸協議,用來控制信件的傳送、中轉。 

pop3(post office protocol 3)是郵局協議第3版本,用於接收郵件。 

資料格式

tcp資料資訊:tcp頭部+實際資料 (tcp頭包括源和目標主機埠號

、順序號、確認號、校驗字等)

遞迴結構詳述

遞迴是一種常見的解決問題的方法,即把問題逐漸簡單化。遞迴的基本思想就是 自己呼叫自己 乙個使用遞迴技術的方法將會直接或者間接的呼叫自己。利用遞迴可以用簡單的程式來解決一些複雜的問題。比如 斐波那契數列的計算 漢諾塔 快排等問題。遞迴結構包括兩個部分 public class recursionmet...

Linux的核心結構詳述

三 linux核心源 的目錄結構 如下圖所示,linux核心只是linux作業系統一部分。向上層提供系統呼叫介面。向下層,它管理系統的所有硬體裝置。其核心功能就是 管理硬體裝置,用程式使用。而現代計算機 無論是pc還是嵌入式系統 的標準組成,就是cpu memory 記憶體和外存 輸入輸出裝置 網路...

TCP IP資料報結構詳解

tcp ip 資料報 結構 詳解 網路 協議 一般來說,網路程式設計我們只需要呼叫一些封裝好的函式或者元件就能完成大部分的工作,但是一些特殊的情況下,就需要深入的理解 網路資料報的結構,以及協議分析。如 網路監控,故障排查等 ip包是不安全的,但是它是網際網路的基礎,在各方面都有廣泛的應用。由ip協...