网络 基础知识笔记
1.物理層
網絡由若干結點和連接這些結點的鏈路組成,網絡把許多計算機連接在一起,而因特網則把許多網絡連接在一起
因特網服務提供商ISP(Internet Service Provider)
網絡接入點NAP(Network Access Point)NAP又稱對等點(peering point)表示接入到NAP的設備不存在從屬關系而都是平等的。
RFC(Request For Comments)請求評論。所有的因特網標準都是以RFC形式在因特網上發表。
在網絡邊緣的端系統中運行的程序之間的通信方式通常可劃分為兩大類:客戶端服務器方式(C/S方式)和對等方式(P2P9(peer 2 peer)方式).實際上,對待連接方式從本質上看仍然是使用客戶服務器方式,只是對待連接中的每個主機即是客戶同時又是服務器
寬帶接入技術:
1.xDSL 用數字技術對現有的模擬電話用戶線進行改造,使它能夠承載寬帶業務。DSL(Digital Subscriber Line)
2.HFC網光纖同軸混合網,具有很寬的頻帶,利用有相當大的覆蓋面的有線電視網
3.FTTx技術(光纖到。。Fiber To The ..)
2.鏈路層
數據鏈路(data link):除了物理線路外,還必須有通信協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。
一般的網絡適配器都包含了數據鏈路層和物理層這兩層功能
點對點信道的數據鏈路層的協議數據單元---幀
數據鏈路層把網絡層交下來的數據構成幀發送到鏈路上,以及把接收到的幀中的數據取出并上交給網絡層。在因特網中,網絡層協議數據單元就是IP數據報(或簡稱為數據報,分組或包)
封裝成幀是在一段數據的前后分別添加首部和尾部,這樣就構成了一個幀。接收端在收到物理層上交的比特流后,就能根據首部和尾部的標記,從收到的比特流中識別幀的開始和結束。
點對點數據鏈路層協議PPP(point to point protocol):
PPP協議就是用戶計算機和ISP進行通信所使用的數據鏈路層協議。
PPP協議的組成:
1.一個將IP數據報封裝到串行鏈路的方法。PPP既支持異步(無奇偶檢驗的8x比特數據),也支持面向比特的同步鏈路。IP數據報在PPP幀中就是其信息部分。這個信息部分的長度受最大傳輸單元MTU的限制
2.一個用來建立,配置和測試數據鏈路連接的鏈路控制協議LCP(Link Control Protocol)通信的雙方可協商一些選項,在RFC1661中定義了11種類型的LCP分組
3.一套網絡控制協議NCP(Network Control Protocol),其中的每一個協議支持不同的網絡層協議,如IP,OSI的網絡層,DECnet,以及AppleTalk等
在計算機的適配器上裝有處理器和存儲器(包括RAM和ROM),適配器和局域網之間的通信是通過電纜或雙絞線以串行傳輸方式進行的,而適配器和計算機之間的通信則是通過計算機主板上的I/O總線以并行傳輸方式進行的。因此適配器的一個重要功能就是進行數據串行傳輸和并行傳輸的轉換。由于網絡上的數據率和計算機總線上的數據并不相同,因此在適配器中必須裝有對數據進行緩存的存儲芯片。如果適配器是另外裝在主板上的,則還要裝驅動程序,驅動程序會告訴適配器,應當從存儲器的什么位置上把多長的數據塊發送到局域網,或者應當在存儲器的什么位置上把局域網傳送過來的數據塊存儲下來。適配器還要能夠實現以太網協議。
注意計算機的硬件地址就在適配器的ROM中,而計算機的軟件地址--IP地址則在計算機的存儲器中。計算機通過適配器和局域網通信。
局域網的數據鏈路層在公共總線上使用CSMA/CD協議(多點接入,載波監聽,碰撞檢測)
在數據鏈路層擴展以太網要使用網橋。網橋工作在數據鏈路層,它根據MAC幀的目的地址對收到的幀進行轉發和過濾。
網橋靠轉發表來轉發幀。轉發表也叫做轉發數據庫或路由目錄。網橋是通過內部的接口管理軟件和網橋協議實體來完成操作
3.網絡層
因特網采用與電信網不同的設計思路:網絡層向上只提供簡單靈活的,無連接的,盡最大努力交付的數據報服務。網絡在發送分組時不需要先建立連接。每個分組(也就是IP數據報)獨立發送,與其前后的分組無關(不進行編號)。網絡層不提供服務質量的承諾。也就是說所傳送的分組可能出錯,丟失,重復和失序(即不按序到達終點),當然也不保證分組交付的時限。由于傳輸網絡不提供端到端的可靠傳輸服務,這就使網絡中的路由器可以做得比較簡單,而且價格低廉(與電信網的交換機相比較)。如果主機(即端系統)中的進程之間的通信需要是可靠的,那么就由網絡的主機的運輸層負責(包括差錯處理,流量控制等)。采用這種設計思路的好處是:網絡的造價大大降低,運行方式靈活,能夠適應多種應用。
網絡協議IP,與IP協議配套使用的還有4個協議:
地址解析協議ARP(Address Resolution Protocol)
逆地址解析協議RARP(Reverse Address Resolution Protocol)
網際控制報文協議ICMP(Internet Control Message Protocol)
網際組管理協議IGMP(Internet Group Management Protocol)
沒有一種單一的網絡能夠適應所有用戶的需求。在市場中總是有很多種不同性能,不同網絡協議的網絡,供不同用戶選用。將網絡互相連接起來要使用一些中間設備,根據中間設備所處的層次,可以有以下4種設備:
1.物理層使用的中間設備叫轉發器(repeater)
2.數據鏈路層使用的中間設備叫網橋或橋接器(bridge)
3.網絡層使用的中間設備叫路由器(router)
4.在網絡層以上使用的中間設備叫網關(gateway),用網關連接兩個不兼容的系統需要在高層進行協議的轉換。
實際上IP地址是標志一個主機(或路由器)和一條鏈路的接口,當一個主機同時連接到兩個網絡時,該主機就必須同時具有兩個相應的IP地址,其網絡號必須是不同的,這種主機稱為多歸屬主機(multihomed host).由于一路由器至少應當連接到兩個網絡,因此一個路由器至少應當有兩個不同的IP地址。
物理地址是數據鏈路層和物理層使用的地址,而IP地址是網絡層和以上各層使用的地址,是一種邏輯地址(稱IP地址為邏輯地址是因為IP地址是用軟件實現的)
在發送數據時,數據從高層下到低層,然后才到通信鏈路上傳輸。使用IP地址的IP數據報一旦交給了數據鏈路層,就被封裝成MAC幀了。MAC幀在傳送時使用的源地址和目的地址都是硬件地址,這兩個硬件地址都寫在MAC幀的首部中。
IP地址放在IP數據報的首部,而硬件地址則放在MAC幀的首部。在網絡層和網絡層以上使用的是IP地址,而數據鏈路層及以下使用的是硬件地址。數據鏈路層看不見數據報的IP地址。
MAC幀在不同網絡上傳送時,其MAC幀首部中的源地址和目的地址要發生變化。
地址解析協議ARP,找出IP地址的物理地址
逆地址解析協議RARP,根據物理地址解析出IP地址
網絡層使用的是IP地址,但在實際網絡的鏈路上傳送數據幀時,最終是必須使用該網絡的硬件地址。但IP地址與網絡的硬件地址并沒有直接的關系,而且網絡上經常會加入新的主機或撤走一些主機,網絡適配器也會由于故障改變。地址解析協議ARP解決這個問題的方法是在主機ARP高速緩存中存放一個從IP地址到硬件地址的映射表,并且這個映射表還經常動態更新(新增或超時刪除)。每個主機都設有一個ARP高速緩存(ARP cache),里面有本局域網上的各主機和路由器的IP地址到硬件地址的映射表,這些都是該主機目前知道的一些地址。
主機怎么知道這些地址呢?
當主機A要向本局域網上的某個主機B發送IP數據報時,就先在其ARP高速緩存中查看有無主機B的IP地址。如有,就在ARP高速緩存中查出其對應的硬件地址,再把這個硬件地址寫入到MAC幀,然后通過局域網把該MAC幀發往此硬件地址。也有可能查不到主機B的IP地址的項目,這可能是主機B才入網,也可能是主機A剛剛加電,其高速緩存還是空的。在這種情況下,主機A自動運行ARP,然后按以下步驟找出主機B的硬件地址。
1.ARP進行在本局域網上廣播發送一個ARP請求分組,發送內容為自己的IP及硬件地址,要查找的硬件地址的IP
2.在本局域網上的所有主機運行的ARP進程都收到此ARP請求分組
3.主機B在ARP請求分組中見到自己的IP地址,就向主機A發送ARP響應分組(ARP響應分組是單播,即從一個源地址到目的地址)
4.主機A收到主機B的ARP響應分組后,就在其ARP高速緩存中定入主機B的地址到硬件地址的映射。
可見ARP高速緩存非常有用,如果不使用ARP高速緩存,那么任何一個主機只要進行一次通信,就必須在網絡上用廣播方式發送ARP請求分組,這就使網絡上的通信量大大增加。
ARP把保存在高速緩存中的每一個映射地址項目都設置了生存時間,凡超過時間的項目就從高速緩存中刪除掉。
請注意,ARP是解決同一個局域網上的主機或路由器的IP地址和硬件地址的映射問題。
從IP地址到硬件地址的解析是自動進行的,主機的用戶對這種地址解析過程是不知道的。只要主機或路由器要和本網絡上的另一個已知IP地址的主機或路由器進行通信,ARP協議就會自動把這個IP地址解析為鏈路層所需要的硬件地址。
下面為使用ARP的4種典型情況:
1.發送方是主機,要把IP數據報發送到本網絡上的另一個主機,這時用ARP找到目的主機的硬件地址
2.發送方是主機,要把IP數據報發送到另一個網絡上的一個主機,這時用ARP找到本網絡上的一個路由器的硬件地址,剩下的工作由這個路由器來完成
3.發送方是路由器,要把IP數據報轉發到本網絡上的一個主機。這時用ARP找到目的主機的硬件地址
4.發送方是路由器,要把IP數據報轉發到另一個網絡上的一個主機。這時用ARP找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。
為什么 我們不直接使用硬件地址進行通信,而是要使用抽象的IP地址并調用ARP來尋找硬件地址?
由于全世界存在著各式各樣的網絡,它們使用不同的硬件地址。要使這些異構網絡能夠互相通信就必須進行非常復雜的硬件地址轉換工作,因此由用戶或用戶主機來完成這項工作幾乎是不可能的事,但統一的IP地址把這個復雜的問題解決了。連接到因特網的主機只要擁有統一的IP地址,它們之間的通信就像連接在同一個網絡上那樣簡單方便,上述的調用ARP的復雜過程都是由計算機軟件自動進行的,對用戶來說是看不見這種調用過程的。
IP數據報格式:
(1)版本 占4位,指IP協議的版本。通信雙方使用的IP協議版本必須一致。目前廣泛使用的IP協議版本號為4(即IPv4)。IPv6在推廣階段。
(2)首部長度 占4位,可表示的最大十進制數值是15。請注意,這個字段所表示數的單位是32位字長(1個32位字長是4字節),因此,當IP的首部長度為1111時(即十進制的15),首部長度就達到60字節。當IP分組的首部長度不是4字節的整數倍時,必須利用最后的填充字段加以填充。因此數據部分永遠在4字節的整數倍開始,這樣在實現IP協議時較為方便。首部長度限制為60字節的缺點是有時可能不夠用。但這樣做是希望用戶盡量減少開銷。最常用的首部長度就是20字節(即首部長度為0101),這時不使用任何選項。
(3)區分服務 占8位,用來獲得更好的服務。這個字段在舊標準中叫做服務類型,但實際上一直沒有被使用過。1998年IETF把這個字段改名為區分服務DS(Differentiated Services)。只有在使用區分服務時,這個字段才起作用。
(4)總長度 總長度指首部和數據之和的長度,單位為字節。總長度字段為16位,因此數據報的最大長度為2^16-1=65535字節。
在IP層下面的每一種數據鏈路層都有自己的幀格式,其中包括幀格式中的數據字段的最大長度,這稱為最大傳送單元MTU(Maximum Transfer Unit)。當一個數據報封裝成鏈路層的幀時,此數據報的總長度(即首部加上數據部分)一定不能超過下面的數據鏈路層的MTU值。當數據報長度超過網絡所容許的最大傳送單元MTU時,就必須把過長的數據報進行分片后才能在網絡上傳送(見后面的“片偏移”字段)。這時,數據報的首部中的“總長度”字段不是指未分片前的數據報長度,而是指分片后的每一個分片的首部長度與數據長度的總和。
(5)標識(identification) 占16位。IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,并將此值賦給標識字段。但這個“標識”并不是序號,因為IP是無連接服務,數據報不存在按序接收的問題。當數據報由于長度超過網絡的MTU而必須分片時,這個標識字段的值就被復制到所有的數據報的標識字段中。相同的標識字段的值使分片后的各數據報片最后能正確地重裝成為原來的數據報。
(6)標志(flag) 占3位,但目前只有2位有意義。
● 標志字段中的最低位記為MF(More Fragment)。MF=1即表示后面“還有分片”的數據報。MF=0表示這已是若干數據報片中的最后一個。
● 標志字段中間的一位記為DF(Don’t Fragment),意思是“不能分片”。只有當DF=0時才允許分片。
(7)片偏移 占13位。片偏移指出:較長的分組在分片后,某片在原分組中的相對位置。也就是說,相對用戶數據字段的起點,該片從何處開始。片偏移以8個字節為偏移單位。這就是說,每個分片的長度一定是8字節(64位)的整數倍。
(8)生存時間 占8位,生存時間字段常用的的英文縮寫是TTL(Time To Live),表明是數據報在網絡中的壽命。由發出數據報的源點設置這個字段。其目的是防止無法交付的數據報無限制地在因特網中兜圈子,因而白白消耗網絡資源。最初的設計是以秒作為TTL的單位。每經過一個路由器時,就把TTL減去數據報在路由器消耗掉的一段時間。若數據報在路由器消耗的時間小于1秒,就把TTL值減1。當TTL值為0時,就丟棄這個數據報。后來把TTL字段的功能改為“跳數限制”(但名稱不變)。路由器在轉發數據報之前就把TTL值減1.若TTL值減少到零,就丟棄這個數據報,不再轉發。因此,現在TTL的單位不再是秒,而是跳數。TTL的意義是指明數據報在網絡中至多可經過多少個路由器。顯然,數據報在網絡上經過的路由器的最大數值是255.若把TTL的初始值設為1,就表示這個數據報只能在本局域網中傳送。
(9)協議 占8位,協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個處理過程。常用協議和相應字段值如下:
協議名 ICMP IGMP TCP EGP IGP UDP IPv6 OSPF
協議字段值 1 2 6 8 9 17 41 89
(10)首部檢驗和 占16位。這個字段只檢驗數據報的首部,但不包括數據部分。這是因為數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標志、片偏移等都可能發生變化)。不檢驗數據部分可減少計算的工作量。
(11)源地址 占32位。
(12)目的地址 占32位。
IP轉發分組流程:
在互聯網上轉發分組時,是從一個路由器轉發到下一個路由器。
在路由表中,對每一條路由最主要的是以下兩個信息:目的網絡地址,下一跳地址
分組轉發算法如下:
1.從數據報的首部提取目的主機IP地址D,得出目的網絡地址(目的網絡路由地址)為N.
2.若N就是與此路由器直接相連的某個網絡地址,則進行直接交付,不需要再經過其他的路由器,直接把數據報交付給目的主機(這里包括把目的主機地址D轉換為具體的硬件地址,把數據報封裝成MAC幀,再發送此幀),否則就間接交付,執行3
3.若路由表中有目的地址為D的特定主機路由,則把數據報傳送給路由表指明的下一跳路由器,否則,執行4
4.若路由表中有到達網絡N的路由,則把數據報傳送給路由表中所指明的下一跳路由器,否則,執行5
5.若路由表中有一個默認路由,則把數據報傳送給路由表中指明的默認路由器,否則執行6
6.報告轉發分組出錯。
無分類編址CIDR(構造超網)
----------------------網際控制報文協議ICMP(Internet Message Protocol)
ICMP允許主機或路由器報告差錯情況和提供有關異常情況的報告。ICMP是因特網的標準協議,但ICMP不是高層協議,而是IP層的協議。ICMP報文作為IP層數據報的數據,加上數據報的首部,組成IP數據報發送出去。
ICMP報文的種類:
ICMP報文的種類有兩種:即ICMP差錯報告報文和ICMP詢問報文。
ICMP報文類型
ICMP差錯報告報文共有5種:
1.終點不可達 當路由器或主機不能交付數據報時就向源點發送終點不可達報文
2.源點抑制 當路由器或主機由于擁塞而丟棄數據報時,就向源點發送源點抑制報文,使源點知道應當把數據報的發送速率放慢
3.時間超過 當路由器收到生存時間為零的數據報時,除丟棄該數據報外,還要向源點發送時間超過報文。當終點在預先規定的時間內不能收到一個數據報的全部數據報片時,就把自己收到的數據報片丟棄,并向源點發送時間超過報文。
4.參數問題 當路由器或目的主機收到的數據報的首部中有的字段的值不正確時,就丟棄該數據報,并向源點發送參數問題報文。
5.改變路由(重定向) 路由器把改變路由報文發送給主機,讓主機知道下次應將數據報發送給另外的路由器(可通過更好的路由)
--因特網的路由選擇協議
路由選擇協議主要作用也就是路由表中的路由是怎樣得出的。
因特網采用的路由選擇協議主要是自適應的(即動態的),分布式路由選擇協議。由于以下兩個原因,因特網采用分層次路由選擇協議:
1.因特網規模非常大,如果讓所有路由器知道所有的網絡怎樣到達,則這種路由表非常大,處理起來也太花時間,而所有這些路由器之間交換路由信息所需的寬帶就會使因特網通信鏈路飽和。
2.許多單位不愿意外界了解自己單位網絡的布局細節和本部門所采用的路由選擇協議,但同時還希望連接到因特網上。
在目前的因特網中,一個大的ISP就是一個自治系統, 這樣因特網就把路由選擇協議劃分為兩大類:
1.內部網關協議IGP(Interior Gateway Protocol)一個自治系統內部使用的路由選擇協議,目前這類選擇較多的有RIP和OSPF協議
2.外部網關協議EGP(External Gateway Protocol) 若源主機和目的主機處在不同的自治系統中(這兩個自治系統可能使用不同的內部網關協議),當數據報傳到一個自治系統的邊界時,就需要使用一種協議將路由選擇信息傳遞到另一個自治系統中。這樣的協議就是外部網關協議EGP.目前使用最多的是BGP的版本4
路由器:
是一種具有多個輸入端口和多個輸出端口的專用計算機,其任務是轉發分組。整個路由器結構可分為兩在部分:路由選擇部分和分組轉發部分。路由選擇部分也叫控制部分,其核心構件是路由選擇處理機。路由選擇處理機的任務是根據所選定的路由選擇協議構造出路由表,同時經常或定期地和相鄰路由器交換路由信息而不斷地更新和維護路由表。路由器的輸入和輸出的功能和傳統的操作系統中的I/O設備一樣。路由器處理機從分組首部提取目的地址,查找路由表,再將分組復制到合適的輸出端口的緩存中。
--虛擬專用網VPN和網絡地址轉換NAT
由于IP地址的緊缺,在許多情況下,很多主機主要還是和本機構內的計算機進行通信,一個機構內部的計算機通信也是采用TCP/IP協議,那么從原則上,讓這些計算機使用僅在本機構有效的IP地址(這種地址稱為本地地址)而不需要向因特網的管理機構申請全球唯一的IP地址。這樣可以大大節省全球IP地址資源。
在因特網中的所有路由器,對目的地址是專用地址(本地地址)的數據報一律不進行轉發。
有時一個很大的機構有許多部門分布在相距較遠的一些地點,而在每個地點都有自己的專用網。如果這些分布在不同地點的專用網需要經常進行通信。這時,可以有兩種方法。第一種方法是租用電信公司的通信線路為本機專用。這種方法簡單,但租金昂貴。第二種方法是利用公用的因特網作為本機構專用網之間的通信載體,這樣的專用網又稱為虛擬專用網VPN(Virtual Private Network).如果專用網不同網點之間的通信必須經過公用的網絡,但又有保密的要求,那么所有通過因特網傳送的數據都必須加密。
網絡地址轉換NAT(Network Address Translation)
當NAT路由器具有n個全球IP地址時,專用網內最多可以同時有n個主機接入到因特網。這樣可以使專用網內較多數量的主機,輪流使用NAT路由器有限數量的全球IP地址。在傳送時,NAT路由器負責轉換包的源地址為全球IP地址
為了更加有效地利用NAT路由器上的全球IP地址,現在常用的NAT轉換表把運輸層的端口號也利用上。這樣,就可以使多個擁有本地地址的主機,共用一個NAT路由上的全球IP地址,因而可以同時和因特網上的不同主機進行通信。使用端口號的NAT也叫作網絡地址與端口號轉換NAPT(Network Address and Port Translation)
4.運輸層
運輸層最重要的兩種協議:UDP和TCP.TCP的各種機制(面向連接的可靠服務,流量控制,擁塞控制等)
--進程之間的通信
從通信和信息處理的角度看,運輸層向它上面的應用層提供通信服務,它屬于面向通信部分的最高層,同時也是用戶功能中的最低層。當網絡的邊緣部分中的兩個主機使用網絡的核心部分的功能進行端到端的通信時,只有主機的協議才有運輸層,而網絡核心部分的路由器在轉發分組時都只用到下三層的功能。
從IP層來說,通信的兩端是兩個主機。IP數據報的首部明確地標志了這兩個主機的IP地址。但“兩個主機之間的通信”這種說法還不夠清楚。這是因為,真正進行通信的實體是在主機中的進程,是這個主機中的一個進程和另一個主機的一個進程在交換數據(即通信)。嚴格來說,兩個主機進行通信就是兩個主機的應用進程互相通信。
從運輸層的角度看,通信真正端點并不是主機而是主機中的進程。在一個主機中經常有多個應用進程同時分別和另一個主機中的多個應用進程通信。這就需要運輸層有一個很重要的功能---復用(multiplexing)和分用(demultiplexing).復用指發送方不同的應用進程都可以使用同一個運輸層協議傳送數據(當然需要加上適當的首部),而“分用”是指接收方的運輸層在剝去報文的首部后能夠把這些數據正確交付到目標應用進程
從這可看出,網絡層是為主機之間提供邏輯通信,而運輸層為應用進程之間提供端到端的邏輯通信。運輸層還要對收到的報文進行差錯檢測。
根據應用程序的不同需要,運輸層需要有兩種不同的運輸協議,即面向連接的TCP和無連接的UDP
TCP/IP運輸層的兩個主要協議都是因特網的正式標準
1.用戶數據報協議UDP(User Datagram Protocol)
2.傳輸控制協議TCP(Transmission Control Protocol)
UDP在傳送數據之前不需要先建立連接。TCP則面向連接服務,在傳送數據之前必須先建立連接,數據傳送結束后要釋放連接。TCP不提供廣播或多播服務。
使用UDP和TCP協議的各種應用和應用層協議
應用 應用層協議 運輸層協議
1 名字轉換 DNS UDP
2 文件傳送 TFTP UDP
3 路由選擇協議 RIP UDP
4 IP地址配置 BOOTP,DHCP UDP
5 網絡管理 SNMP UDP
6 遠程文件服務器 NFS UDP
7 IP電話 專用協議 UDP
8 流式多媒體通信 專用協議 UDP
9 多播 IGMP UDP
10 電子郵件 SMTP TCP
11 遠程終端輸入 TELNET TCP
12 萬維網 HTTP TCP
13 文件傳送 FTP TCP
--端口
運輸層的復用和分用功能,使得給應用層的每個應用進程賦予一個明確的標志至關重要。在單個計算機中的進程是用進程標識符來標志的。但是在因特網環境下,用計算機操作系統所指派的這種進程標識符來標志運行在應用層的各種應用進程則是不行的。因為因特網上使用的計算機的操作系統種類很多,而不同的操作系統又使用不同格式的進程標識符。為了使運行不同操作系統的計算機的應用進程能夠互相通信,就必須用統一的方法(而這種方法必須與操作系統無關)對TCP/IP體系的應用進程進行標志。但是,把一個特定機器上運行的特定進程指明為因特網上通信最后的終點還是不可行的。因為進程的創建和攤銷都是動態的,通信的一方幾乎無法識別對方機器上的進程。另外,我們往往需要利用目的主機提供的功能來識別終點,而不需要知道具體實現這個功能的進程是哪一個。 解決這個問題的方法就是在運輸層使用協議端口號(protocol port number),或通常簡稱為端口(port).這就是說,雖然通信的終點是應用進程,但我們只要把要傳送的報文交到目的主機的合適的目的端口,剩下的工作(即最后的交付給目的進程)就由TCP來完成。
注意:這種在協議層間的抽象的協議端口是軟件端口,和路由器或交換機上的硬件端口是完全不同的概念。硬件端口是不同硬件設備進行交互的接口,而軟件端口是應用層的各種協議進程與運輸實體進行層間交互的一種地址。不同系統具體實現端口的方法可以是不同的。
TCP/IP的運輸層用一個16位端口號來標志一個端口。但請注意端口號只具有本地意義,它只是為了標志本計算機應用層中的各個進程在和運輸層交互時的層間接口。在因特網不同計算機中,相同的端口號是沒有關聯的。16位的端口號可允許65535個不同的端口號。
由此可見,兩個計算機中的進程要互相通信,不僅必須知道對方的IP地址(為了找到對方的計算機),而且還要知道對方的端口號(為了找到對方計算機中的應用進程)
因特網上的計算機通信是采用客戶--服務器方式。客戶在發起通信請求時,必須先知道對方服務器的IP地址和端口號,因此運輸層的端口號共分為兩在類:
1.服務器端使用的端口號:這又分為兩在類,最重要的一類叫做熟知端口號(well-known port number)或系統端口號,數值為0-1023.這些數值可以網址www.iana.org查到。IANA把這些端口號指派給了TCP/IP最重要的一些應用程序,讓所有的用戶都知道。當一種新的應用程序出現后,IANA必須為它指派一個熟知的端口,否則因特網上的其他應用進程就無法和它進行通信。下面是一些熟知端口號
FTP 21,TELNET 23, SMTP 25, DNS 53, TFTP 69, HTTP 80, SNMP 161, SNMP(trap) 162
另一類端口叫做登記端口號,數值為1024~49151,這類端口號是為沒有熟知端口號的應用程序使用的。使用這類端口號必須在IANA按照規定的手續登記,以防止重復。
2.客戶端使用的端口號 數值為49152~65535.由于這類端口號僅在客戶進程運行時才動態選擇,因此又叫做短暫端口號。 這類端口號是留給客戶進程選擇暫時使用。當服務器進程收到客戶進程的報文時,就知道了客戶端使用的端口號,因而可以把數據發送到客戶進程。通信結束后,剛才已使用的客戶端口號不復存在。這個端口號就可以供其他客戶進程以后使用。
---用戶數據報協議UDP
UDP的主要特點:
1.無連接的
2.UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的連接狀態
3。UDP是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部后就向下交付給IP層
3.1UDP沒有擁塞控制,因此網絡出現的擁塞不會使源主機的發送速率降低。這對某些實時應用是很重要的。很多的實時應用(如IP電話,實時視頻會議等)要求源主機以恒定的速率發送數據,并且允許網絡發生擁塞時丟失一些數據,但卻不允許數據有太大的時延。UDP正好適合這種要求
3.2 UDP支持一對一,一對多,多對一和多對多的交互通信
3.3 UDP的首部開銷小,只有8個字節,比TCP的20個字節的首部要短
UDP用戶數據報的首部格式:
當運輸層從IP層收到UDP數據報時,就根據首部中的目的端口,把UDP數據報通過相應的端口,上交到最后的終點。如果接收方UDP發現收到的報文中的目的端口號不正確(即不存在對應于該端口號的應用進程)就丟棄該報文,并由ICMP發送“端口不可達”差錯報文給發送方。Traceroute就是讓發送的UDP用戶數據報故意使用一個非法的UDP端口,結果ICMP就返回“端口不可以達”差錯報文,因而達到測試目的。
UDP用戶數據報首部中的檢驗和的計算方法有引特殊。在計算檢驗和時,要在UDP用戶數據報之前增加12個字節的偽首部。所謂“偽首部”是因為這種偽首部并不是UDP用戶數據報真正的首部,只是在計算檢驗和時,臨時添加在UDP用戶數據報前面,得到一個臨時的UDP用戶數據報。檢驗和就是按照這個臨時的UDP用戶數據報來計算的。偽首部即不向下傳送也不向上遞交,而僅僅是為了計算檢驗和。
---------TCP連接
TCP連接的主要特點:
1.是面向連接的運輸層協議。應用程序在使用TCP協議之前,必須先建立TCP連接。在傳送完數據后,必須釋放已經建立的連接
2.每一條TCP連接只能有兩個端點(endpoint),每一條TCP連接都是點對點的()一對一
3.TCP提供可靠交付服務。通過TCP連接傳送的數據,無差錯,不丟失,不重復,并且按序到達
4.TCP提供全雙工通信。TCP允許通信雙方的應用進程在任何時候都能發送數據。TCP連接的兩端都高有發送緩存和接收緩存,用來臨時存放雙向通信的數據。在發送時,應用程序在把數據傳送給TCP的緩存后,就可以做自己的事,而TCP在合適的時候把數據發送出去。在接收的時候,TCP把收到的數據放入緩存,上層的應用進程在合適的時候讀取緩存中的數據。
5.面向字節流。TCP中的“流”指的是流入到進程或從進程流出的字節序列。“面向字節流”的含義是:雖然應用程序和TCP的交互是一次一個數據塊(大小不等),但TCP把應用程序交下來的數據看成僅僅是一連串的無結構的字節流。TCP并不知道所傳送的字節流的含義。TCP報文先要傳送到IP層,加上IP首部后,再傳送到數據鏈路層。再加上數據鏈路層的首部和尾部后,才離開主機發送到物理鏈路。
TCP和UDP在發送報文時所采用的方式完全不同。TCP對應用程序一次把多長的報文發送到TCP的緩存中是不關心的,TCP根據對方給出的窗口值和當前網絡的擁塞程序來決定一個報文應包含多少個字節(UDP發送的報文長度是應用進程給出的)。如果應用進程傳送到TCP緩存的數據塊太長,TCP就可以把它劃分短一些再傳送。如果應用進程一次只發來一個字節,TCP也可以等待積累有足夠的字節后再構成報文段發送出去。
TCP 的連接的端點是什么呢?不是主機,不是主機 的IP地址,不是應用 進程,也不是運輸層的協議端口。TCP連接的端點叫做套接字(socket)或插口。端口號拼接到(contatenated with)IP 地址即構成了套接字。
套接字socket = (IP地址:端口號)
自動重傳請求ARQ(automatic Repeat request):重傳的請求是自動進行的,接收方不需要請求發送方重傳某個出錯分組。
所謂流量控制(flow control)就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
擁塞控制與流量控制的關系密切,它們之間存在著一些差別。所謂擁塞控制就是防止過多的數據注入到網絡中,這樣可以使網絡中的路由器或鏈路不致過載。流量控制往往是點對點通信量的控制,是個端到端的問題
TCP的運輸連接管理:
TCP是面向連接的協議,運輸連接是用來傳送TCP報文的。TCP運輸連接的建立和釋放是每一次面向連接的通信中必不可少的過程。
在TCP連接建立的過程中要解決以下三個問題:
1.要使每一方確知對方的存在
2.要允許雙方協商的一些參數(如最大窗口值,是否使用窗口擴大選項和時間戳選項以及服務質量等)
3.能夠對運輸實體資源(如緩存大小,連接表中的項目等)進行分配。
5.應用層
前面的層都是計算機網絡提供通信服務的過程。應用層則是把這些通信服務提供給應用進程來使用。主要是各種應用進程通過什么應用層協議來使用網絡所提供的這些通信服務。應用 層就具體內容就是規定應用進程在通信時遵守的協議。
域名系統DNS(Domain Name Systemping )
因特網的域名系統DNS被設計成為一個聯機分布式數據庫系統,并采用客戶服務器方式。DNS規定,域名中的標號都是由英文字母和數字組成的,每一個標號不超過63個字符(為記憶方便最好不超過12個字符),也不區分大小寫字母(如CCTV或cctv是等效的)。標號中除連字符外不能使用其它的標點符號。級別最低的域名寫在最左邊,而級別最高的域名則寫在最右邊。由多個標號組成的完整域名總共不超過255個字符。
DNS服務器的管轄范圍不是以“域”為單位,而是以“區”為單位。區是DNS服務器實際管轄范圍,區可能等于或小于域,但一定不可能大于域。
文件傳輸協議:基于TCP的FTP和基于UDP的TFTP
FTP(File Transfer Protocol) 文件傳輸協議只提供文件傳送的一些基本服務,它使用TCP可靠的運輸服務。FTP的主要功能是減少或消除在不同操作系統下處理文件的不兼容性。FTP使用客戶服務器方式,一個FTP服務器進程可同時為多個客戶提供服務。FTP的服務器進程由兩大部分組成:一個主進程,負責接受新的請求;另外有若干個從屬進程,負責處理單個請求。
主進程工作步驟如下:
1,打開端口(端口號為21),使客戶進程能夠連接上
2.等待客戶進程發出連接請求
3.啟動從屬進程來處理客戶進程發來的請求。從屬進程對客戶進程的請求處理完畢后即終止,但從屬進程在運行期間根據需要還可能創建其他一些子進程
4.回到等待狀態,繼續接受其他客戶進程發來的請求。主進程與從屬進程的處理是并發地進行。
簡單文件傳輸協議TFTP:
TFTP主要優點有兩個:1,TFTP可用于UDP環境,如當需要將程序或文件同時向許多機器下載時就往往需要使用TFTP。2.TFTP代碼所占代碼內存較小,這對較小的計算機或某些特殊用途的設備是很重要的。這些設備不需要硬盤,只需要固化了TFTP,UDP和IP的小容量只讀存儲器即可。
TFTP主要特點:
1.每次傳送的數據報文中有512字節的數據,但最后一次可不足512字節
2.數據報文按序號編號,從1開始
3.支持ASCII碼或二進制傳送
4.可對文件進行讀或寫
5.使用很簡單的首部
遠程終端協議TELNET:
telnet能夠將用戶的擊鍵傳到遠地主機,同時也能將遠地主機的輸出通過TCP連接返回到用戶屏幕。又稱終端仿真協議。
telnet定義了數據和命令怎樣通過因特網,這些定義就是所謂的網絡虛擬終端NVT(Network Virtual Terminal)
------------萬維網WWW(world wide web)
萬維網是一個分布式的超媒體(hypermedia)系統,它是超文本(hypertext)系統的擴充。
萬維網使用統一資源定位符URL來標志萬維網上的各種文檔,并使每一個文檔在整個因特網的范圍內具有的標識符URL.萬維網使用超文本傳輸協議HTTP,它是一個應用層協議,使用TCP連接進行可靠的傳送。萬維網使用超文本標記語言HTML,使得萬維網頁面的設計者可以很方便地用鏈接從本頁面的某處鏈接到因特網上的任何一個萬維網頁面,并且能夠在自己的主機屏幕上顯示出來。
URL的一般形式為:<協議>://<主機>:<端口>/<路徑>
使用HTTP的URL:http://<主機>:<端口>/<路徑> http默認端口是80,通常可以省略
HTTP是面向事務的(transaction-oriended)應用層協議,它是萬維網上能夠可靠地交換文件(文本,聲音,圖像等各種多媒體文件)的重要基礎。HTTP協議是無狀態的
代理服務器(proxy server)是一種網絡實體,它又稱為萬維網高速緩存(Web cache)
HTTP有兩類報文;請求報文和響應報文
請求報文和響應報文都是由三部分組成,這兩類報文格式的區別是開始行不同:
1.開始行:用于區分請求報文還是響應報文。在請求報文中的開始行叫做請求行,而在響應報文中的開始行叫做狀態行(Status_Line).在開始行的三個字段之間都是以空格分隔開來。最后的“CR”和“LF”分別代表“回車”和“換行”
2.首部行,用來說明瀏覽器,服務器或報文主體的一些信息。
3.實體主體(entity body)在請求報文中一般沒有這個字段,而在響應報文中也可能沒有這個字段。
HTTP請求報文的一些主要特點:請求報文第一行“請求行”,只有三個內容:方法,請求資源的URL,以及HTTP的版本。
每一個語法報文發出后都能收到一個響應報文。響應報文的第一行就是狀態行。狀態行包括三項內容:HTTP的版本,狀態碼,以及解釋有狀態碼的簡單短語
狀態碼(Status-Code)都是三位數字,分為5大類33種
1XX表示通知信息的,如請求收到 了或正在處理
2XX表示成功,如接受或知道了
3XX表示重定向,如要完成請求還必須采取進一步行動
4XX表示客戶端差錯,如請求中有錯誤的語法或不能完成
5XX表示服務器錯誤,如服務器失效無法完成請求
電子郵件:
簡單郵件傳送協議 SMTP(Simple Mail Transfer Protocol)
通用因特網郵件擴充MIME(Multipurpose Internet Mail Extensions)
一個電子郵件系統應具有三個主要組成構件,用戶代理,郵件服務器,以及郵件發送協議(如SMTP)和郵件讀取協議(POP3)。
用戶代理UA(User Agent),就是用戶與電子郵件系統的接口,大多數情況下就是用戶PC機上的一程序。因此用戶代理又稱電子郵件客戶端程序
SMPT規定了在兩個相互通信的SMTP進程之間應如何交換信息。由于SMTP使用客戶服務器方式,因此負責發送郵件 的SMTP進程就是SMTP客戶,而負責接收郵件的SMTP進程就是SMTP服務器。SMTP不使用中間的郵件服務器
郵件讀取協議POP3和IMAP
即郵局協議第3個版本POP3和網際報文存取協議IMAP(Innternet Message Access Protocol)
通用因特網郵件擴充MIME
SMTP有一些缺點:
1.SMTP不能傳送可執行文件或其他的二進制對象
2.SMTP限于傳送7位的ASCII碼
3.SMTP服務器會拒絕超過一定長度的郵件
4.某些SMTP的實現并沒有完全按照SMTP的因特網標準
于是在這種情況下提出了通用因特網郵件擴充協議MIME,MIME并不有改動或取代SMTP,但增加了郵件主體結構,并字義了傳送非ACSII碼的編碼規則。MIME郵件可以現有的電子郵件程序和協議下傳送
動態主機配置協議DHCP(Dynamic Host Configuration Protocol)
為了把協議軟件做成通用的和便于移植,協議軟件的編寫者不會把所有的細節都固定在源代碼中。相反,他們把協議軟件參數化,這就使得在很多臺計算機上有可能使用同一個經過編譯的二進制代碼。一臺計算機和另一臺計算機的許多區別都可以通過 一些不同的參數來體現。在協議軟件運行之前,必須給每一個參數賦值。在協議軟件中給這些參數賦值的動作叫做協議配置。一個協議軟件在使用之前必須是已正確配置的。具體的配置信息有那些取決于協議棧。如連接到因特網的計算機的協議軟件需要配置項目包括:
1.IP地址。2.子網掩碼。3.默認路由器的IP地址。4.域名服務器的IP地址。
DHCP提供一種機制,稱為即插即用。這允許一臺計算機加入新的網絡和獲取IP地址而不用手工參與。DHCP使用客戶服務器形式,需要IP 地址的主機在啟動時就向DHCP服務器廣播發送發現報文(DHCPDISCOVER)(將目的IP地址置為全1,即255.255.255.255)。DHCP服務器先在其數據庫中查找該計算機的配置信息。若找到,則返回給該計算機。若找不到,則從服務器的IP地址池中取出一個分配給該計算機。
-------------------網絡安全
運輸層安全套接層SSL(Secure Socket Layer)協議
SSL可對萬維網客戶與服務器之間傳送的數據進行加密和鑒別。它在雙方聯絡階段(也就是握手階段)對將要使用的加密算法(如用DES或RSA)和雙方共享的會話密鑰進行協商,完成客戶與服務器之間的鑒別。在聯絡階段完成后,所有發送的數據都使用在聯絡階段商定的會話密鑰。SSL不僅被所有的瀏覽器和萬維網服務器所支持,而且也是運輸層安全協議TLS的基礎
SSL提供三個功能:
1.SSL服務器鑒別 這允許用戶證實服務器的身份。具有SSL功能的瀏覽器維持一個表,上面有一些可信的認證中心CA及其公鑰。當瀏覽器要和一個具有SSL功能 的服務器進行商務活動時,瀏覽器就從服務器得到 含有服務器的公鑰的證書。此證書是由某個認證中心CA發出的(此CA在客戶的表中)。這就使得客戶在提交其信用卡之前能夠服務器的身份
2.加密的SSL會話 客戶和服務器交互的所有數據都在發送方加密,在接收方解密。SSL還提供了一種檢測信息是否被攻擊者篡改的機制
3.SSL客戶鑒別。允許服務器證實客戶的身份。這個信息對服務器是重要的。
從網絡傳輸角度看,通常有兩種不同的加密策略:鏈路加密與端到端加密
防火墻技術一般分為兩類:
1.網絡級防火墻,主要用來防止整個網絡出現外來非法的入侵。屬于這類的有分組過濾(packet filtering)和授權服務器(authorization server)
2.應用級防火墻,從應用 程序來進行訪問控制。通過使用應用網關和代理服務器來區分各種應用。
---------------------------------------------------------------------無線網絡
WLAN(Wireless Local Area Network)
使用802.11系列協議的局域網又稱為wi-fi(Wireless-Fidelity)意思是無限保真度
總結
- 上一篇: Java Web中的mapper,ser
- 下一篇: 现阶段很多站长做SEO优化有哪些难点呢?