TCP/IP淺談


1.TCP/IP不是協議,而是協議族的總稱。可分爲四層結構,分別爲:

(1) 應用層:包含高層協議如FTP、HTTP、TELNET等

(2) 傳輸層:TCP、UDP處於該層

(3) 網絡層:IP協議位於該層,負責對數據加上IP地址和其他的數據,以確定傳輸的目標

(4) 數據鏈路層:爲數據加入一個以太網協議頭,並進行CRC編碼,爲最後的數據傳輸做準備

2. 發送協議的主機從上自下將數據按照協議封裝,而接收數據的主機則按照協議從得到的數據包解析,最後拿到需要的數據。

3. IP地址一般爲:網絡號+主機號,域名系統的作用是將主機名轉換爲IP地址的服務。RFC是TCP/IP的標準文檔,應用接口一般包括socket和TLI。

4. 數據鏈路層的目的:

(1) 爲IP模塊發送和接收IP數據

(2) 爲ARP模塊發送ARP請求和接收ARP應答

(3) 爲RARP模塊發送RARP請求和接收RARP應答

其中ARP爲地址解析協議,即將IP地址解析爲MAC地址

5. PPP是點對點協議,提供了了一種低速接入的解決方案。

6. MTU是最大傳輸單元,如果IP數據報過大,則要進行分片,使得每片都小於MTU。netstat -in命令可以打印MTU的結果。

7. 環回接口(LOOKBACK),即127.0.0.1嘗試自己的機器服務器好使不好使。

(1) 傳給環回地址的任何數據均作爲IP輸入

(2) 傳給廣播地址或多播地址的數據報復制一份到環回接口,然後送到以太網上

(3) 任何傳給主機IP地址的數據均送到環回接口

8. IP協議爲不可靠協議,其中的字段TTL,即8位的生存時間,數據包在穿過多少個路由後纔會被拋棄,每經過一個路由,TTL減一,當爲0時則被拋棄。

路由器和主機將會用如下的方式處理一個IP數據包

(1) TTL一到0,IP包自動拋棄

(2) 搜索路由表,優先搜索匹配主機,能找到和IP地址完全一致的目標主機,則向其發包

(3) 搜索路由表,如匹配主機失敗,則匹配同子網的路由器,如找到,將包發給路由器

(4) 搜索路由表,若匹配同子網路由器失敗,則匹配同網號路由器,若找到,將包發給路由器

(5) 搜索路由表,如果以上都失敗,則搜索默認路由,如存在,則發包

(6) 若都失敗,則丟包

9. 子網尋址:可將IP地址細分爲網絡號+子網號+主機號,如210.30.109.134中210.30爲網絡號,109爲子網號

134爲主機號,對應的子網掩碼爲255.255.255.0。

10. ICMP(Internet Control Message Protocol) 網絡控制報文協議,當IP數據傳送發生錯誤時,ICMP會將錯誤信息封包,然後傳送回主機。ICMP報文在特殊情況下,不產生錯誤報文,因爲要防止產生ICMP報文的無線傳播。

ICMP有以下兩種功能:

(1) 查詢報文:ping查詢,子網掩碼查詢,時間戳查詢

(2) 差錯報文:產生在數據傳送,發生錯誤時

ping利用ICMP協議包偵測另一個主機是否可達,給出了傳送的時間和TTL的數據,可查看主機到目的主機之間的路由信息,但不能完全記錄。

traceroute用來偵測主機到目的主機之間所經路由情況,原理之一是發送的端口號>30000,因此到達目的主機時,目的主機只能發送一個端口不可達的ICMP數據報給主機

11. 路由器的5個標誌(靜態IP選路):

U:可使用

G:路由到一個網關,無該標誌,說明目標是直接相連的

H:路由到一個主機,無該標識,說明目標是一個網絡

D:路由爲重定向報文創建的

M:路由已被重定向報文修改

靜態IP選路的方式:

(1) 首先用IP地址匹配帶H標誌的IP地址(H)

(2) 若(1)失敗,則匹配網絡地址(G)

(3) 若(2)失敗,則發送到默認網關

12. route add命令用於手動添加路由

當IP包在某路由器中發現沒有路由可走,則路由器會給源主機發送“主機/網絡不可傳”的ICMP包來報錯。

IP重定向報文:IP包在某地方轉向時,會給發送IP報的源主機一個ICMP重定向報文,源主機將更新自己的路由表,因此路由表將越來越完善,數據轉發速度也將越來越快。

注意:重定向報文只能由路由器發出,重定向報文爲主機所用,而非路由所用

13. 動態路由協議:只用於相鄰路由之間相互通信,動態選路在系統核心網外部進行,只是用一些選路的策略影響路由表,常用到的方法是RIP(選路信息協議)與OSPF(開放最短路徑優先協議)。

14. UDP協議

端口號:UDP協議必須通過某個標誌用以區分不同的程序所需要的數據包

檢驗和:發送端進行檢驗和

UDP長度:可以很長,但需要分片。

IP頭裏,16bit識別號唯一記錄了一個IP包的ID,具有同一個ID的IP片將會被重組,13bit片偏移則記錄了某IP片相對整個包的位置,中間的3bit標誌着該分片是否還有新的分片。

目標主機的處理速度趕不上數據接收的速度時,主機將發出“我受不了了”的ICMP報文。

15. UDP服務器的設計:

(1) 關於客戶端和IP地址:服務器必須有根據客戶IP地址和端口判斷數據包是否合法的能力

(2) 關於目的地址:服務器必須要有過濾廣播地址的能力

(3) 關於數據輸入:服務器的每一個端口號都會和一塊輸入緩衝區對應,進來的輸入根據先來後到的原則等待服務器處理,所以難免緩衝區溢出,UDP可能被丟棄,而應用服務器本身並不知道這個問題。

(4) 服務器應把自己綁定到某一網絡接口的某端口上

16. 單播、廣播域多播

單播:對特定主機進行數據傳送,數據鏈路層給出的數據頭裏是非常具體的地址

廣播:針對某一網絡上的所有主機發送數據包

多播:給一組特定的主機發送數據,多播租的IP地址244.0.0.0-239.255.255.255

17.  TCP保證可靠性的原因

(1) 應用數據被分割成TCP認爲最合適發送的數據塊

(2) 當TCP發出一個報文段後,會啓動一個定時器,等待目的端確認收到這個報文段,如果不及時收到一個確認,將重發這個報文段,即超時重傳

(3) 當TCP收到發自TCP連接另一端的數據,將發送一個確認

(4) TCP將保持它首部和尾部的檢驗和,目的是檢驗數據包在傳輸過程中的任何變化

(5) 提供流量監控

18. TCP發送數據過程:

(1) 雙方建立連接

(2) 發送方向接收方發送TCP數據包,然後等待對方確認TCP數據報,如果沒有就重新發,如果有,則發送下一個數據報。

(3) 接收方等待發送方的數據報,如果得到數據報並檢驗無誤,就發送ACK確認,並等待下一個數據報的到來

(4) 中止鏈接

19. TCP建立連接的三次握手

(1) 客戶端先向服務器申請打開某一個端口

(2) 服務器發回一個ACK報文通知客戶端請求收到

(3) 客戶端收到報文後,再次向服務器端發送確認報文

20. 結束連接:

TCP的鏈接爲全雙工,因此,必須關閉穿和送兩個方向上的連接:

(1) 客戶端-->服務器,發送FIN爲1的TCP報文

(2) 服務器-->客戶端,返回確認ACK報文,併發送FIN報文

(3) 客戶端-->服務器端,回覆ACK報文


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章