TCP/IP協議、Http協議、ftp協議

TCP/IP起源於20世紀60年代末美國政府資助的一個網絡分組交換研究項目,TCP/IP是發展至今最成功的通信協議,它被用於當今所構築的最大的開放式網絡系統Internet之上。
TCP和IP是兩個獨立且緊密結合的協議,負責管理和引導數據報文在Internet上的傳輸。二者使用專門的報文頭定義每個報文的內容。TCP負責和遠程主機的連接,IP負責尋址,使報文被送到其該去的地方。

TCP/IP協議簇自下而上分爲:鏈路層,網絡層,運輸層和應用層四個層次,如圖:
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

鏈路層

包括操作系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節。鏈接層位於整個網絡協議suite的最低一層,與硬件關係密切,比如以太網,token ring都是位於這一層。

網絡層

處理分組在網絡中的活動,例如分組的選路。網絡層協議包括IP協議(網際協議),ICMP協議(Internet互聯網控制報文協議),以及IGMP協議(Internet組管理協議)。網絡層和運輸層之間的區別是最爲關鍵的:網絡層(IP)提供點到點的服務,而運輸層(TCP和UDP)提供端到端的服務。

運輸層

爲兩臺主機上的應用程序提供端到端的通信。有兩個互不相同的傳輸協議: TCP(傳輸控制協議)和UDP(用戶數據報協議)。TCP提供高可靠性的數據通信。而UDP則爲應用層提供一種非常簡單的服務。它只是把稱作數據報的分組從一臺主機發送到另一臺主機,但並不保證該數據報能到達另一端。任何必需的可靠性必須由應用層來提供。

應用層

負責處理特定的應用程序細節。


2、鏈路層
SLIP:串行線路IP,SLIP的全稱是Serial Line IP。它是一種在串行線路上對IP數據報進行封裝的簡單形式,它的傳輸速率通常較低(19200b/s或更低),下面的規則描述了SLIP協議定義的幀格式:
1) IP數據報以一個稱作END(0xc0)的特殊字符結束。
2) 如果IP報文中某個字符爲END,那麼就要連續傳輸兩個字節0xdb和0xdc來取代它。
3) 如果IP報文中某個字符爲SLIP的ESC字符,那麼就要連續傳輸兩個字節0xdb和0xdd來取代它。

SLIP是一種簡單的幀封裝方法,還有一些值得一提的缺陷:
1) 每一端必須知道對方的IP地址。沒有辦法把本端的IP地址通知給另一端。
2) 數據幀中沒有類型字段(類似於以太網中的類型字段)。
3) SLIP沒有在數據幀中加上檢驗和(類似於以太網中的CRC字段)。

PPP:點對點協議

PPP包括以下三個部分:
1) 在串行鏈路上封裝IP數據報的方法。PPP既支持數據爲8位和無奇偶檢驗的異步模式,還支持面向比特的同步鏈接。
2) 建立、配置及測試數據鏈路的鏈路控制協議(LCP)。它允許通信雙方進行協商,以確定不同的選項。
3) 針對不同網絡層協議的網絡控制協議(NCP)體系。

PPP比SLIP具有下面這些優點:
1) PPP支持在單根串行線路上運行多種協議,不只是IP協議。
2)每一幀都有循環冗餘檢驗。
3)通信雙方可以進行IP地址的動態協商。
4)與CSLIP類似,對TCP和IP報文首部進行壓縮。
5)鏈路控制協議可以對多個數據鏈路選項進行設置。

最大的傳輸單元:MTU
以太網和802.3對數據幀的長度都有一個限制,其最大值分別是1500和1492字節。鏈路層的這個特性稱作MTU,最大傳輸單元。每個網絡的鏈路層就可能有不同的MTU,兩臺通信主機路徑中的最小MTU爲路徑MTU。

IP 網際協議

IP(internet protocol)是TCP/IP協議簇的基礎,在鏈接層中封裝的IP datagram是網絡間數據傳輸的一個基本單元,包括傳輸層的TCP,UDP等協議都是基於IP協議的。IP協議有個特點:IP協議是無連接的。我們知道,TCP是面向連接的,是可靠的傳輸協議;而UDP是無連接的,相應的也就不可靠,無法保證數據確實傳輸到了目的地。TCP面向連接,需要經過3次握手才能建立起可靠的數據傳輸的全雙工的通道,這就導致了需要保存連接的狀態等信息,增加實現的複雜程度。UDP無連接,自然也就更容易實現,維護起來也就更簡單些。在現在的應用中,UDP與TCP都應用地很廣泛,所以IP協議並不需要面向連接,因爲需要可靠性的TCP自身去實現可靠性就行了。

IP路由表的每一項所包含的信息:
1) 目的IP地址。
2) 下一站(或下一跳)路由器的IP地址,或者有直接連接的網絡IP地址。
3) 標誌。其中一個標誌指明目的IP地址是網絡地址還是主機地址,另一個標誌指明下一站路由器是否爲真正的下一站路由器,還是一個直接相連的接口。
4) 爲數據報的傳輸指定一個網絡接口。

IP路由選擇主要完成以下這些功能:
1) 搜索路由表,尋找能與目的IP地址完全匹配的表目(網絡號和主機號都要匹配)。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值)。
2) 搜索路由表,尋找能與目的網絡號相匹配的表目。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值)。
3) 搜索路由表,尋找標爲“默認(default)”的表目。如果找到,則把報文發送給該表目指定的下一站路由器。

如果上面這些步驟都沒有成功,那麼該數據報就不能被傳送。如果不能傳送的數據報來自本機,那麼一般會向生成數據報的應用程序返回一個“主機不可達”或“網絡不可達”的錯誤。

ARP:地址解析協議

簡單的說,ARP協議就是將IP地址轉換爲MAC物理地址;而RARP,就是ARP的逆向,也就是將MAC物理地址轉換爲IP地址。看起來這兩個協議是完全對稱的,但發明這兩個協議的初衷基本上沒有什麼關係。ARP協議是爲了在鏈接層中傳輸的datagram只能識別MAC地址,所以只能將IP地址轉換爲MAC物理地址再進行傳輸和定向;RARP協議是爲了獲取無磁盤操作系統的IP地址而設計的。具有本地磁盤的系統通常是從磁盤中的配置文件中讀取IP地址的,但是無盤系統無法這樣操作,所以就需要將MAC地址轉換成IP地址了。

ARP提供了IP地址與其對應的硬件地址之間動態映射,它的工作方式如下:
1) ARP發送ARP請求的以太網數據幀給以太網上的每個主機。這個過程稱作廣播,ARP請求數據幀中包含目的主機的IP地址,其意思是“如果你是這個IP地址的擁有者,請回答你的硬件地址。”
2) 目的主機的ARP層收到這份廣播報文後,識別出這是發送端在尋問它的IP地址,於是發送一個ARP應答,這個ARP應答包含I P地址及對應的硬件地址。
3) 收到ARP應答後,使ARP進行請求—應答交換的IP數據報現在就可以傳送了。
4) 發送IP數據報到目的主機。

點對點鏈路不使用ARP。當設置這些鏈路時(一般在引導過程進行),必須告知內核鏈路每一端的IP地址。

ARP代理,如果ARP請求是從一個網絡的主機發往另一個網絡上的主機,那麼連接這兩個網絡的路由器就可以回答該請求,這個過程稱作委託ARP或ARP代理(Proxy ARP)。這樣可以欺騙發起ARP請求的發送端,使它誤以爲路由器就是目的主機,而事實上目的主機是在路由器的“另一邊”。路由器的功能相當於目的主機的代理,把分組從其他主機轉發給它。

免費ARP,主機發送ARP查找自己的IP地址。

RARP:逆地址解析協議

RARP協議是許多無盤系統在引導時用來獲取IP地址的。一個RARP請求在網絡上進行廣播,它在分組中標明發送端的硬件地址,以請求相應IP地址的響應。應答通常是單播傳送的。
RARP帶來的問題包括使用鏈路層廣播,這樣就阻止大多數路由器轉發RARP請求,只返回很少信息:只是系統的IP地址。
RARP服務器的實現與系統相關。並不是所有的TCP/IP實現都提供RARP服務器。

ICMP:Internet控制報文協議

ICMP報文的類型由報文中的類型字段和代碼字段共同決定。
ICMP地址掩碼請求與應答,ICMP地址掩碼請求用於無盤系統在引導過程中獲取自己的子網掩碼。系統廣播它的ICMP請求報文。報文中的標識符和序列號字段由發送端任意選擇設定,這些值在應答中將被返回。最後發送端將應答與請求得到的報文進行匹配。
ICMP時間戳請求與應答,ICMP時間戳請求允許系統向另一個系統查詢當前的時間。返回的建議值是自午夜開始計算的毫秒數,協調的統一時間(UTC)。這種ICMP報文的好處是它提供了毫秒級的分辨率,而利用其他方法從別的主機獲取的時間只能提供秒級的分辨率。由於返回的時間是從午夜開始計算的,因此調用者必須通過其他方法獲知當時的日期,這是它的一個缺陷。請求端填寫發起時間戳,然後發送報文。應答系統收到請求報文時填寫接收時間戳,在發送應答時填寫發送時間戳。但是,實際上,大多數的實現把後面兩個字段都設成相同的值(提供三個字段的原因是可以讓發送方分別計算髮送請求的時間和發送應答的時間)。

ICMP端口不可達差錯,ICMP差錯報文,即端口不可達報文,是ICMP目的不可到達報文中的一種。UDP的規則之一是,如果收到一份UDP數據報而目的端口與某個正在使用的進程不相符,那麼UDP返回一個ICMP不可達報文。

PING程序

LAN輸出,執行Ping程序,當返回ICMP回顯應答時,要打印出序列號和TTL,並計算往返時間。回顯應答是以發送的次序返回的,沒有丟失報文的情況。Ping程序通過在ICMP報文數據中存放發送請求的時間值來計算往返時間。當應答返回時,用當前時間減去存放在ICMP報文中的時間值,即是往返時間。通常,第1個往返時間值要比其他的大。這是由於目的端的硬件地址不在ARP高速緩存中的緣故。因此,在發送第一個回顯請求之前要發送一個ARP請求並接收ARP應答,這需要花費幾毫秒的時間。

WAN輸出,與在LAN中的情況又很大的不同,WAN中會有丟失報文的情況發生,使得回顯應答中某些序列號的回顯應答丟失。而且往返時間也有了很大的增加。

線路SLIP鏈接,與LAN輸出的情況非常相似,只是由於SLIP爲低速傳輸,往返時間會大大的增加

撥號SLIP鏈路,與線路SLIP類似,但由於在鏈路的兩端增加了調制解調器。針對線路鏈路參數進行的簡單計算不再準確了。很多因素都有可能影響。調制解調器帶來了時延。隨着數據的壓縮,分組長度可能會減小,但是由於使用了錯誤控制協議,分組長度又可能會增加。另外,接收端的調制解調器只能在驗證了循環檢驗字符(檢驗和)後才能釋放收到的數據。最後,我們還要處理每一端的計算機異步串行接口,許多操作系統只能在固定的時間間隔內,或者收到若干字符後纔去讀這些接口。

IP記錄路由選項,Ping程序提供的-R選項,可以實現記錄路由的功能。它使得ping程序在發送出去的IP數據報中設置IP RR選項。這樣,每個處理該數據報的路由器都把它的IP地址放入選項字段中。當數據報到達目的端時,IP地址清單應該複製到ICMP回顯應答中,這樣返回途中所經過的路由器地址也被加入清單中。當ping程序收到回顯應答時,它就打印出這份IP地址清單。清單中最多隻能存放9個IP地址。

Traceroute程序

1)Traceroute程序使用ICMP報文和IP首部中的TTL字段(生存週期)。TTL可看成爲一個跳站的計數器,所經過的每個路由器都將其值減1。當路由器收到一份IP數據報,如果其TTL字段是0或1,路由器將該數據報丟棄,並給信源機發一份ICMP“超時”信息。
2)Traceroute程序的操作過程:它發送一份TTL字段爲1的IP數據報給目的主機。處理這份數據報的第一個路由器將TTL值減1,丟棄該數據報,併發回一份超時ICMP報文。這樣就得到了該路徑中的第一個路由器的地址。然後Traceroute程序發送一份TTL值爲2的數據報,這樣我們就可以得到第二個路由器的地址。繼續這個過程直至該數據報到達目的主機。Traceroute程序發送一份UDP數據報給目的主機,但它選擇一個不可能的值作爲UDP端口號(大於30000),使目的主機的任何一個應用程序都不可能使用該端口。因爲,當該數據報到達時,將使目的主機的UDP模塊產生一份“端口不可達”錯誤的ICMP報文。這樣,Traceroute程序就可以分析接收到的ICMP報文來判斷是否到達目的主機。

IP選路

選路的原理,路由表中包含的信息決定了IP層所做的所有決策。以下是IP搜索路由表的幾個步驟:
1) 搜索匹配的主機地址;
2) 搜索匹配的網絡地址;
3) 搜索默認表項(默認表項一般在路由表中被指定爲一個網絡表項,其網絡號爲0)。

匹配主機地址步驟始終發生在匹配網絡地址步驟之前。IP層進行的選路實際上是一種選路機制,它搜索路由表並決定向哪個網絡接口發送分組。這區別於選路策略,它只是一組決定把哪些路由放入路由表的規則。IP執行選路機制,而路由守護程序則一般提供選路策略。

路由器的五種不同的標誌(flag):

U 該路由可以使用。

G 該路由是到一個網關(路由器)。如果沒有設置該標誌,說明目的地是直接相連的。

H 該路由是到一個主機,也就是說,目的地址是一個完整的主機地址。如果沒有設置該標誌,說明該路由是到一個網絡,而目的地址是一個網絡地址:一個網絡號,或者網絡號與子網號的組合。

D 該路由是由重定向報文創建的。

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

ICMP主機和網絡不可達差錯,當路由器收到一份IP數據報但又不能轉發時,就要發送一份ICMP“主機不可達”差錯報文。

ICMP重定向差錯, ICMP重定向報文的接收者必須查看三個IP地址:
1)導致重定向的IP地址(即ICMP重定向報文的數據位於IP數據報的首部);
2)發送重定向報文的路由器的IP地址(包含重定向信息的I P數據報中的源地址);

3)應該採用的路由器IP地址。

在生成ICMP重定向報文之前這些條件都要滿足,條件如下:
1) 出接口必須等於入接口。
2) 用於向外傳送數據報的路由不能被ICMP重定向報文創建或修改過,而且不能是路由器的默認路由。
3) 數據報不能用源站選路來轉發。
4) 內核必須配置成可以發送重定向報文。

爲防止路由器或主機的誤操作,以及惡意用戶的破壞,導致錯誤地修改系統路由表,在修改路由表之前要作一些檢查,如下:
1) 新的路由器必須直接與網絡相連接。
2) 重定向報文必須來自當前到目的地所選擇的路由器。
3) 重定向報文不能讓主機本身作爲路由器。
4) 被修改的路由必須是一個間接路由。

關於重定向最後要指出的是,路由器應該發送的只是對主機的重定向,而不是對網絡的重定向。子網的存在使得難於準確指明何時應發送對網絡的重定向而不是對主機的重定向。只當路由器發送了錯誤的類型時,一些主機才把收到的對網絡的重定向當作對主機的重定向來處理。

動態路由協議

RIP

1) 初始化:在啓動一個路由守護程序時,它先判斷啓動了哪些接口,並在每個接口上發送一個請求報文,要求其他路由器發送完整路由表。在點對點鏈路中,該請求是發送給其他終點的。如果網絡支持廣播的話,這種請求是以廣播形式發送的。目的UDP端口號是520。
2) 接收到請求。如果這個請求是剛纔提到的特殊請求,那麼路由器就將完整的路由表發送給請求者。否則,就處理請求中的每一個表項:如果有連接到指明地址的路由,則將度量設置成我們的值,否則將度量置爲16,然後發回響應。
3) 接收到響應。使響應生效,可能會更新路由表。可能會增加新表項,對已有的表項進行修改,或是將已有表項刪除。
4) 定期選路更新。每過30秒,所有或部分路由器會將其完整路由表發送給相鄰路由器。發送路由表可以是廣播形式的,或是發送給點對點鏈路的其他終點的。
5) 觸發更新。每當一條路由的度量發生變化時,就對它進行更新。不需要發送完整路由表,而只需要發送那些發生變化的表項。

RIP所使用的度量是以跳(hop)計算的。所有直接連接接口的跳數爲1。

OSPF 開放最短路徑優先

OSPF優於RIP的特點:
1) OSPF可以對每個I P服務類型計算各自的路由集。這意味着對於任何目的,可以有多個路由表表項,每個表項對應着一個I P服務類型。
2) 給每個接口指派一個無維數的費用。可以通過吞吐率、往返時間、可靠性或其他性能來進行指派。可以給每個I P服務類型指派一個單獨的費用。
3) 當對同一個目的地址存在着多個相同費用的路由時,OSPF在這些路由上平均分配流量。我們稱之爲流量平衡。
4) OSPF支持子網:子網掩碼與每個通告路由相連。這樣就允許將一個任何類型的IP地址分割成多個不同大小的子網。到一個主機的路由是通過全1子網掩碼進行通告的。默認路由是以I P地址爲0.0.0.0、網絡掩碼爲全0進行通告的。
5) 路由器之間的點對點鏈路不需要每端都有一個IP地址,我們稱之爲無編號網絡。
6) 採用了一種簡單鑑別機制。
7) OSPF採用多播,而不是廣播形式,以減少不參與OSPF的系統負載。

BGP 邊界網關協議

BGP是一種不同自治系統的路由器之間進行通信的外部網關協議,如下:
1) BGP允許使用基於策略的選路。由自治系統管理員制訂策略,並通過配置文件將策略指定給BGP。
2) BGP與RIP和OSPF的不同之處在於BGP使用TCP作爲其傳輸層協議。兩個運行BGP的系統之間建立一條TCP連接,然後交換整個BGP路由表。從這個時候開始,在路由表發生變化時,再發送更新信號。
3) BGP是一個距離向量協議,但是與(通告到目的地址跳數的)RIP不同的是,BGP列舉了到每個目的地址的路由(自治系統到達目的地址的序列號)。這樣就排除了一些距離向量協議的問題。採用16 bit數字表示自治系統標識。
4) BGP通過定期發送keep alive報文給其鄰站來檢測TCP連接對端的鏈路或主機失敗。兩個報文之間的時間間隔建議值爲30秒。

你要對數據包的路由情況進行跟蹤,用什麼工具? Tracert.exe

你要捕捉進出你的計算機的數據包,用什麼工具? NetworkMonitor

你要捕捉網絡上的數據包,並要保存到一個文件中以備以後分析,用什麼工具?NetworkMonitor(注意:不能用PerformanceMonitor)

你要查看TCP/IP的統計信息,用什麼工具? Netstat.exe
你要查找DHCP工作中的問題,用什麼工具? Netstat.exe

你要查看網絡上NetBIOS的統計信息,用什麼工具? Nbtstat.exe

你要對網絡上TCP/IP的統計信息以圖表(Chart)的形式進行監視,用什麼工具?PerformanceMonitor

你要對網絡上TCP/IP的統計信息進行監視,並保存到文件中以備用Spreadsheet軟件進行分析,用什麼工具?PerformanceMonitor

你要查看打印服務器(LPDServer)上的打印隊列,用什麼工具? LPQ

你要把NTServer的機器設成打印服務器,應裝什麼服務? LPD(MicrosoftTCP/IPPrinting)

你要從Unix客戶機上往NT打印服務器(LPDServer)上發送打印作業,用什麼工具?LPR

你要在NTServer用PerformanceMonitor看TCP/IP的統計情況,應裝什麼服務?SNMP

你要在UNIX機器上看NT機器上的TCP/IP的統計情況,應裝什麼服務?SNMP

你的公司已有兩個DNSServer,現在要安裝第三個。你不希望發生區域傳輸(ZoneTransfer),如何設置? CachingOnlyDNSServer

你正在設置一個DNSServer,你要通過它訪問Internet,如何做?Forwarder

你能用IP地址Ping通一臺遠程的計算機,但你用Internet域名Ping這臺計算機時卻不通,爲什麼?DNS或HOSTS文件的設置問題。

你要實現HostsName的非靜態解析,如何設置?–DNS與WINS集成。

你的NT網絡上有多個字網,你要讓網絡上的每一臺計算機都能在網上鄰居中看到所有其它計算機,如何設置?–使用WINS或LMHOSTS文件。

你要通過LMHOSTS文件實現跨網段的瀏覽,如何設置LMHOSTS文件?–在每個主瀏覽器(MasterBrowser)中加入域主瀏覽器的記錄並加上#PRE#DOM:域名,–在域主瀏覽器(PDC)中加入每個主瀏覽器的記錄並加上#PRE#DOM:域名。

一個WINS的客戶機在初始化時會向WINS服務器註冊什麼服務:Server,Workstation,Messenger。

你的FTP服務器的IP地址爲193.1.1.100,計算機名爲Ftpserver。你能用FTP“IP地址”連到服務器上,但你不能用FTP“UNC名”連接,爲什麼?WINS設置問題。

你能用“UNC”路徑連接到FTP服務器,但當你用FTP“IP地址”連接時,訪問被拒絕,爲什麼?FTP訪問權限問題。

你現在有30個子網,以後還要加25個子網,每個子網有600臺機器,什麼是可用的子網掩碼?255.255.252.0

你的網絡ID爲217.170.250.0,要實現9個子網,什麼是可用的子網掩碼?255.255.255.240

你正在組建一個網絡,如何計算HOSTSID? 臺主機一個,一個路由器接口一個,一個網絡接口打印機一個。

【申明,本文轉自http://www.tuicool.com/m/articles/i6fiaa

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