TCP/IP協議的基本原理,例如: IP和TCP頭的各個字段的功能以及
連接的建立過程。這裏先簡單地介紹一下 TCP/IP協議。
IP數據包( packet):數據包這個術語指的是 IP協議消息。消息分爲消息頭和消息體,消息頭是IP協議使用的各種參數信息,如:源、目的地址等等。消息體是上層協議—TCP協議的數據內容。
IP機制: Linux支持三種 IP消息類型: ICMP、UDP和TCP。ICMP數據報是網絡級的 IP控制
和狀態消息。 ICMP消息控制兩臺端主機之間的與通信相關的信息。 UDP 類型的IP包在網絡應用
程序之間傳送數據,但是不保證傳送質量和數據包的傳送順序。 UDP數據的傳送類似郵局的明
信片發送方式。 TCP類型的 IP包同樣在網絡應用程序之間傳送數據,但是 TCP數據包頭包含了更
多的信息,從而保證了可靠有序的數據傳輸。傳送 TCP數據類似通過電話系統交談的過程:數據
可靠而且保證傳送順序。大多數 Internet應用程序都使用 TCP協議, UDP用的比較少。也就是說
絕大多數的 Internet服務都傾向於在客戶程序和服務器程序之間建立雙向的數據傳送通道(使用
TCP),而不是單向的數據傳送通道(使用 UDP)。
IP數據包頭:所有的 IP數據包( ICMP、UDP或TCP)都要包含源、目的的 IP地址和 IP包的
上層協議的類型,如: ICMP、UDP或TCP。根據不同的協議類型, IP數據包頭還包含其他不同
的字段。 ICMP類型的 IP數據包包含一個標識控制或狀態消息的類型字段,以及一個進一步指示
是何種類型的控制或狀態消息類型的字段。對於 UDP和TCP類型,還包含兩個分別標識源和目
的端口號的字段。 TCP數據包頭還包含區分每個數據包的標識符及保證連接狀態的信息的字段。
TCP/IP 安全問題: TCP/IP協議本身有不少的缺陷,允許***者利用隱藏通道的方式在看上
去正常的數據包中祕密地傳輸數據。下面對這些缺陷進行進一步說明:
隱藏通道指任何被進程用來進行可能對系統安全策略造成威脅的數據傳輸的通道。 TCP/IP
的設計本身並不想有什麼隱藏通道,但是設計上的缺陷導致了用來非法傳輸信息的隱藏通道的
存在。
在TCP/IP環境下,有若干方法可以用來建立隱藏通道,在主機之間實現非法通信。例如:
1) 旁路包過濾器,網絡探測器( sniffer)和“不潔詞”(dirty word)搜索引擎。
2) 在正常的信息包中封裝經過加密的或未經加密的信息的方式,通過網絡祕密傳輸信息。
3) 通過將封裝有非法信息的僞裝包在 Internet上的某一個站點上“中轉”來隱藏被傳輸的數
據的源發送位置。
衆所周知, TCP是面向連接的可靠的協議。簡單的說, TCP協議採取一定的措施保證到達遠
端機器的數據沒有被篡改。實現這個特性依賴於 TCP的三次握手機制:
1. 發送一個帶有序列號( Initial Sequence Number,ISN)的同步數據包 -SYN
主機 A希望同主機 B建立連接。主機 A發送一個數據包,該數據包的 SYN位被置位,表示希
望建立一個新的連接,並且該數據包帶有一個 ISN號,來識別主機之間發送的不同的數據包。
Host A ------ SYN(ISN) ------> Host B
2. 遠程機器響應一個確認包 ACK
主機B通過發送一個 SYN位和ACK位被置位的數據包來響應該主機 A的連接請求。這個響應
包中不但包含了主機 B的ISN,而且包含了主機 A的ISN+1,表示剛纔的連接請求數據包被正確的
接收,等待接收 ISN爲ISN+1的數據包。 Host A <------ SYN(ISN+1)/ACK ------ Host B
3. 主機A通過再發送一個確認包 ACK給主機B來完成連接的建立