IP協(xié)議
IP協(xié)議是不可靠、無鏈接的數(shù)據(jù)報傳輸服務(wù)
不可靠:它不能保證ip數(shù)據(jù)報能成功的到達目的地,如某個路由器暫時用完了緩沖區(qū),ip有一個簡單的錯誤處理算法:丟棄該數(shù)據(jù)報,然后發(fā)送ICMP消息報給信源端。任何要求的可靠性必須由上層提供
無連接:ip并不維護任何關(guān)于后續(xù)數(shù)據(jù)報的狀態(tài)信息。每個數(shù)據(jù)報的處理是相互獨立的。IP數(shù)據(jù)報可以不按發(fā)送順序接受。如果一信源向相同的信宿發(fā)送兩個連續(xù)的數(shù)據(jù)報,每個數(shù)據(jù)報都是獨立地進行路由選擇,可能選擇不同的路線,因此B可能在A到達之前先到達。
IP首部
4位版本號
4位首部長度:最大就是15個長度,長度的單位是字,每個字就是4個字節(jié),即32位,所以最大不超過15*4=60字節(jié)
8位服務(wù)類型(TOS):最后1位是沒有用的。前面3位是ip優(yōu)先級,然后4位,第一位被置為1,表示Ip需要的最小的延時,第二位置1,,標(biāo)志這個包需要最大吞吐量,第三位被置1,表示需要最高的可靠性,第四位被置1,表示需要最小的費用。
16位總長度(字節(jié)數(shù)):2^16 = 65536,0~65535,這是65536個數(shù)字,一個整體的數(shù)據(jù)包,最大不可能超過65535字節(jié)。
16位標(biāo)識:每一個ip包都給它一個id。id的作用:ip包可能被分片,同一個包的分片的id都是相同的。
3個標(biāo)志位:只用了兩位,一位是df位,df位表示是否能分片,如果包的長度大于MTU,正常會被分片,但是如果df = 1,則會被直接丟棄,并發(fā)送一個ICMP報文,報告給PC丟包的原因。第二位是mf 用來標(biāo)識是否是最后一個分片,如果是1表示不是最后一個分片,如果為0表示是最后一個分片
13位片偏移:一個包分片之后,在接受的時候,利用片偏移將其重新組合。
8位生存時間(TTL):過一跳路由器就-1,防止包在網(wǎng)絡(luò)中形成環(huán)路。如果TTL字段為0或1,就會發(fā)送一個ICMP超時報文給發(fā)送端
8位協(xié)議位:下一個是什么協(xié)議,比如下一個協(xié)議是TCP,則在第6的位置標(biāo)記為1
16為首部校驗和
32位源IP
32位目IP
選項:最長為40字節(jié)
ICMP
ICMP通常被認(rèn)為是IP層的一個組成部分,它傳遞差錯保溫以及其他需要注意的信息。ICMP報文通常被IP層或更高層協(xié)議使用,一些ICMP報文把差錯報文返回給用戶進程。
類型 + 代碼:80:請求回顯,00:回顯應(yīng)答
不產(chǎn)生ICMP差錯報文:
1. ICMP差錯報文(ICMP查詢報文可能會產(chǎn)生ICMP差錯報文)
2. 目的地址是廣播或者多播地址的IP數(shù)據(jù)報
3. 作為鏈路層廣播的數(shù)據(jù)報
4. 不是IP分片的第一片(因為只有第一片才有四層的端口號信息)
5. 源地址不是單個主機的數(shù)據(jù)報。這就是說,源地址不能是零地址、環(huán)回地址、廣播地址和組播地址。
為什么用Traceroute,而不用IP路徑記錄選項
1. 并不是所有的路由器都支持記錄路由選項,因此該選項在某些路徑上是不能使用的。
2. 記錄路由一般是單向選項。發(fā)送段設(shè)置了該選項,那么接收端不得不從收到的IP首部中提取出所有的信息,然后全部返回給發(fā)送端。
3. IP首部中留給選項中的空間有限,不能存放當(dāng)前大多數(shù)的路徑。
TCP鏈接
TCP面向鏈接意味著兩個使用TCP的應(yīng)用在彼此交換數(shù)據(jù)之前必須先建立一個TCP鏈接。在TCP鏈接中,僅有兩方進行彼此通信。
TCP可靠性:
1. 應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊
2. 當(dāng)TCP發(fā)送一個段后,它啟動一個定時器,等待目的端確認(rèn)收到這個報文段。如果 不能及時收到一個確認(rèn),將重新發(fā)送這個報文。
3. 當(dāng)TCP收到發(fā)送TCP鏈接另一端的數(shù)據(jù),它將發(fā)送一個確認(rèn)。這個確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒。
4. TCP將保持它首部和數(shù)據(jù)的校驗和。
5. 既然TCP報文段作為IP數(shù)據(jù)報來傳輸,而IP數(shù)據(jù)報的到達可能會失序,因此TCP報文段的到達也可能會失序。如果必要,TCP將對收到的數(shù)據(jù)進行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。
6. TCP提供流量控制。TCP鏈接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主句致使較慢主機的緩沖區(qū)溢出。
UDP的主要特點
1. UDP是無鏈接的,即發(fā)送數(shù)據(jù)之前不需要建立鏈接。
2. UDP使用盡最大努力交付,即不保證可靠交付,同時不適用擁塞控制
3. UDP是面向報文的(TCP是面向字節(jié)流的)
4.? UDP支持一對一,一對多,多對以和多對多的交互通信。(TCP是一對一,并且提供全雙工通信)
5. UDP的首部開銷小,只有8個字節(jié)(TCP至少是24個字節(jié))
TCP如何實現(xiàn)可靠性:
1. 以字節(jié)為單位的滑動窗口技術(shù)
A為發(fā)送端,B為接收端,A維護一個發(fā)送窗口和一個發(fā)送緩存,B維護一個接受窗口和一個接受緩存。處于發(fā)送窗口的數(shù)據(jù)可以發(fā)送數(shù)據(jù),接受到接受方的確認(rèn)之后,確認(rèn)之前的數(shù)據(jù)可以從發(fā)送緩沖區(qū)中刪除,并且發(fā)送窗口移動到確認(rèn)的哪個序號上。(如果丟失了,接收端會選擇性確認(rèn),讓發(fā)送端只發(fā)送一段數(shù)據(jù))
2. 流量控制:
主要是通過接收端告訴發(fā)送端,接收窗口多大來實現(xiàn)的。接收端可以根據(jù)當(dāng)前自身的處理情況,來動態(tài)的調(diào)整接收窗口大小,并反饋給發(fā)送端,并且發(fā)送端通過此來動態(tài)的調(diào)整發(fā)送窗口的大小。
3. TCP擁塞控制(協(xié)調(diào)使用這個網(wǎng)絡(luò)資源的所有主機)
出現(xiàn)擁塞的條件:對資源需求的總和 > 可用資源
擁塞控制的四種算法:
假定:1. 數(shù)據(jù)單方向傳送的,而另一個方向只傳送確認(rèn)。2. 接收方總是有足夠大的緩存空間,因為發(fā)送窗口大小取決于擁塞程度。
慢開始:是一個指數(shù)增長的過程,起始的默認(rèn)值是一個報文段。經(jīng)過一個傳輸輪次之后,發(fā)送窗口大小就由1變?yōu)?……一直增大到慢開始門限
擁塞避免:加法增大,線性增加的過程。從慢開始門限開始,每次傳輸輪次只在上一次傳輸輪次上增加一個報文段。如果發(fā)送方在發(fā)送的時候,檢測到了網(wǎng)絡(luò)擁塞。則又從慢開始開始。
慢開始:這次慢開始的門限值為剛剛擁塞避免值的1/2。然后再進行擁塞避免。
快重傳:慢開始到擁塞避免,如果收到三個重復(fù)確認(rèn)就執(zhí)行重傳算法。
快恢復(fù):此時不用降到慢開始的起始值1,而是直接降到擁塞避免最大值的1/2。然后進行線性增長。
流量控制和TCP擁塞控制的區(qū)別:
流量控制是端到端的,擁塞控制。擁塞控制是多對一的,比如接受主機察覺到了網(wǎng)絡(luò)擁塞,但是它并不能明確到底是哪個發(fā)送速率過快,或者發(fā)送數(shù)據(jù)過多所造成的。
中繼器和集線器
中繼器(再生數(shù)字信號)
誕生原因是由于存在損耗,在線路上傳輸?shù)男盘柟β蕰饾u衰減,衰減到一定程度到一定程度時將造成信號失真,因此會導(dǎo)致接受錯誤。中繼器的功能就是對信號進行再生和還原,對衰減的信號進行放大,保持與源數(shù)據(jù)相同,以增加信號的傳輸距離,延長網(wǎng)絡(luò)的長度。
集線器:多口的中繼器(鏈接到集線器的主機平分帶寬)
對信號進行放大轉(zhuǎn)發(fā),對衰減的信號進行放大,接著轉(zhuǎn)發(fā)到其他所有處于工作狀態(tài)的端口上,以增加信號傳輸?shù)木嚯x,延長網(wǎng)絡(luò)的長度。不具備信號的定向傳送能力,是一種共享設(shè)備(廣播)。
網(wǎng)橋和交換機(都是在數(shù)據(jù)鏈路層對以太網(wǎng)進行優(yōu)化)
網(wǎng)橋
網(wǎng)橋工作在數(shù)據(jù)鏈路層,它根據(jù)MAC幀的目的地址對收到的幀進行轉(zhuǎn)發(fā)。
網(wǎng)橋具有過濾幀的功能。當(dāng)網(wǎng)橋收到一個幀時,并不是向所有的接口轉(zhuǎn)發(fā)幀,而是先檢查幀的目的MAC地址,然后再確定將該幀轉(zhuǎn)發(fā)到哪一個接口。
交換機
網(wǎng)橋兩邊連的是兩個沖突域,交換機是各個主機直接鏈接到交換機上,它能隔離沖突域,但是不能隔離廣播。
路由器:
鏈接因特網(wǎng)中各個局域網(wǎng)、廣域網(wǎng)的設(shè)備,隔離沖突域和廣播域。