近期把計算機網(wǎng)絡的主要章節(jié)看了一下嚷炉,整理出的知識點主要是TCP/IP四層模型每一層的具體細節(jié)等。
應用層费坊,運輸層事格,網(wǎng)絡層,數(shù)據(jù)鏈路層等進行詳解
- 應用層:通過應用程序間的交互來完成特定網(wǎng)絡應用锈至。應用層的協(xié)議定義是應用層序之間通信和交互的規(guī)則晨缴。
- 傳輸層:負責兩臺主機的進程之間通信提供通用的數(shù)據(jù)傳輸服務。(報文段(TCP)/用戶數(shù)據(jù)報(UDP))
- 網(wǎng)絡層:負責為分組交換網(wǎng)上的不同主機提供通信服務峡捡。分組也叫IP數(shù)據(jù)報击碗。
- 數(shù)據(jù)鏈路層:兩臺主機之間的數(shù)據(jù)在鏈路上進行傳輸,就需要專門的鏈路層協(xié)議们拙。在兩個相鄰節(jié)點之間傳送數(shù)據(jù)時稍途,數(shù)據(jù)鏈路將網(wǎng)絡層交下來的IP數(shù)據(jù)報(簡稱為數(shù)據(jù)報,分組或包)封裝成幀砚婆。每一幀包括數(shù)據(jù)和必要的控制信息(同步信息械拍,地址信息,差錯控制)
- 物理層:物理層傳輸?shù)臄?shù)據(jù)單位是比特装盯。
一殊者、物理層
在各種計算機的傳輸媒體上傳輸數(shù)據(jù)比特流。
二验夯、數(shù)據(jù)鏈路層
1猖吴、點對點信道的數(shù)據(jù)鏈路
點對點信道的數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元 — 幀。
數(shù)據(jù)鏈路層把網(wǎng)絡層交下來的 IP 數(shù)據(jù)報構成幀發(fā)送到鏈路上挥转,以及把接收到的幀中的數(shù)據(jù)取出并交給網(wǎng)絡層海蔽。
點對點信道的數(shù)據(jù)鏈路進行通信時主要步驟:
- 結點A的數(shù)據(jù)鏈路層把網(wǎng)絡層交下來的 IP 數(shù)據(jù)報添加首部和尾部封裝成幀。
- 結點A把封裝好的幀發(fā)給結點B的數(shù)據(jù)鏈路層
- 若結點B數(shù)據(jù)鏈路層收到的幀無差錯绑谣,則從收到的幀中取出 IP 數(shù)據(jù)報交給上面的網(wǎng)絡層党窜,否則丟棄幀。
數(shù)據(jù)鏈路層協(xié)議的三個基本問題
封裝成幀:在一段數(shù)據(jù)的前后添加首部和尾部借宵,這樣就構成了一個幀幌衣,接收端收到物理層上交的比特流后,就根據(jù)首部和尾部的標記,從收到的比特流中識別幀的開始和結束豁护。首部和尾部的作用就是進行幀定界哼凯。并且首部和尾部還會包含一些重要的控制信息。
-
透明傳輸:表示無論什么樣的比特組合的數(shù)據(jù)楚里,都能按照原樣沒有差錯的通過這個數(shù)據(jù)鏈路層断部。
幀的開始和結束標記使用專門指明的控制字符,任何 8 比特的組合一定不允許作為幀定界控制字符班缎。
為解決透明傳輸問題蝴光,必須設法使數(shù)據(jù)中可能出現(xiàn)的控制字符【SOH】【EOT】在接收端不被解釋為控制字符,具體辦法(字節(jié)/符填充法):發(fā)送端的數(shù)據(jù)鏈路層在數(shù)據(jù)中出現(xiàn)控制字符【SOH】【EOT】的前面插入轉義字符【ESC】达址,而在接收端的數(shù)據(jù)鏈路層把數(shù)據(jù)送往網(wǎng)絡層之前刪除插入的轉義字符蔑祟。
差錯檢測:比特差錯是比特在數(shù)據(jù)傳輸過程中常見的差錯,只是傳輸差錯中的一種沉唠。具體解決辦法(循環(huán)冗余檢查CRC):每組 k 個比特疆虚,待傳送的數(shù)據(jù)是 M,CRC 運算就是在數(shù)據(jù) M 后面添加供差錯檢測用的 n 位冗余碼右冻。構成新的比特 (k+n)位装蓬,在所要發(fā)送的數(shù)據(jù)上添加 n 位冗余碼著拭,雖增大了傳輸開銷纱扭,卻可以進行差錯檢測。
2儡遮、廣播信息的數(shù)據(jù)鏈路層
局域網(wǎng)最主要的特點:網(wǎng)絡為一個單位所擁有乳蛾,且地理范圍和站點數(shù)目均有限。
局域網(wǎng)的優(yōu)點
- 具有廣播功能鄙币,從一個站點可很方便的訪問全網(wǎng)肃叶,局域網(wǎng)上的主機可以共享連接在局域網(wǎng)上的各種硬件和軟件資源。
- 便于系統(tǒng)的擴展和逐漸演變十嘿,各設備的位置可靈活調整和改變因惭。
- 提高系統(tǒng)的可靠性,可用性绩衷,生存性蹦魔。
局域網(wǎng)可按照網(wǎng)絡拓撲進行分類:星形網(wǎng),環(huán)形網(wǎng)咳燕,總線網(wǎng)勿决。
三、網(wǎng)絡層
網(wǎng)絡層提供的兩種服務
-
虛電路服務(適用于電話業(yè)務等非智能招盲,無差錯處理能力的傳輸)
- 兩臺計算機進行通信低缩,首先建立連接(在分組交換中是建立的需電路)
- 為雙方預留通信所需的一切網(wǎng)絡資源
- 雙方沿著已建立的虛擬電路發(fā)送分組(這樣分組首部不需要添加完整的目的主機地址,只需要填寫虛擬電路的編號曹货,而減少分組的開銷咆繁。)
虛電路服務使用 可靠傳輸?shù)木W(wǎng)絡協(xié)議讳推,可以使得所發(fā)送的分組無差錯的按序列到達終點,當然也不丟失么介,不重復娜遵。 通信結束時釋放建立的連接。
-
數(shù)據(jù)報服務(適用于計算機網(wǎng)絡的端系統(tǒng)等智能的計算機)
網(wǎng)絡層向上只提供簡單靈活的壤短,無連接的设拟,盡最大努力交付的數(shù)據(jù)報服務。
網(wǎng)絡層發(fā)送分組時不需要建立連接久脯,每一個分組(IP 數(shù)據(jù)報)獨立發(fā)送纳胧,其前后的分組無關(不編號),網(wǎng)絡層不提供任何服務質量的承諾帘撰,鎖傳輸?shù)姆纸M可能出錯跑慕,丟失,重復和失序(不按序列到達終點)摧找,也不保證分組交付的時限核行。
好處:
網(wǎng)絡造價大大降低,運行方式靈活蹬耘,能適應多種應用芝雪。
對比的方面 | 虛電路服務 | 數(shù)據(jù)報服務 |
---|---|---|
思路 | 可靠通信應當由網(wǎng)絡來保證 | 可靠通信應當由用戶主機來保證 |
連接的建立 | 必須有 | 不需要 |
終點地址 | 僅在連接建立階段使用,每個分組使用短的虛電路號 | 每個分組都有終點的完整地址 |
分組的轉發(fā) | 屬于同一條虛電路的分組均按照同一路由進行轉發(fā) | 每個分組獨立選擇路由進行轉發(fā) |
當結點出故障時 | 所有通過出故障的結點的虛電路均不能工作 | 出故障的結點可能丟失分組综苔,一些路由器可能發(fā)生變化 |
分組的順序 | 總是按照順序到達終點 | 到達終點的時間不按照發(fā)送順序 |
端到端的差錯處理和流量控制 | 可以由網(wǎng)絡負責惩系,也可以由用戶主機負責 | 由用戶主機負責 |
IP
IP 協(xié)議配套使用的還有三個協(xié)議
-
地址解析協(xié)議ARP(Address Resolution Protocol)
當主機A向本局域網(wǎng)上某臺主機B發(fā)送 IP 數(shù)據(jù)報時,先在其ARP高速緩存中查找是否存在主機B的IP地址如筛,如有堡牡,則在ARP高速緩存中查出對應的硬件地址,再把這個硬件地址寫入MAC幀杨刨,然后通過局域網(wǎng)把該MAC幀發(fā)往此硬件地址晤柄。ARP高速緩存里存放著IP地址到硬件地址的映射表,這個表會經(jīng)常動態(tài)更新(添加或刪除)
網(wǎng)際控制報文協(xié)議ICMP(Internet Control Message Protocol)
網(wǎng)際組管理協(xié)議IGMP(Internet Group Management Protocol)
IP地址的編址方法共3個階段妖胀。
- 分類的IP地址
- 劃分子網(wǎng)
- 構成超網(wǎng)
分類的IP地址
兩級的 IP 地址可記為: IP 地址 ::= {<網(wǎng)絡號>,<主機號>}
IP 地址分為 5 類芥颈。
-
A 類,B 類做粤,C 類為單播地址(一對一通信)浇借,
網(wǎng)絡號字段分別為 1個,2個怕品,3個字節(jié)長妇垢,在網(wǎng)絡號字段最前面有1~3位類別位,數(shù)值分別規(guī)定為 0,10闯估,110灼舍。
主機號字段分別為 3個,2個涨薪,1個字節(jié)長
D 類地址(前4位是1110)用于多播(一對多通信)骑素。
E 類地址(前4位是1111)保留為今后使用。
IP 地址都是32位的二進制碼刚夺,為提高可讀性献丑,將32位Ip地址每8位進行分段,中間用點隔開侠姑,并用點分十進制記法進行表示(如:128.11.3.31创橄,表示B類地址)。
IP 地址具有的重要特點
- 每個 Ip 地址由網(wǎng)絡號和主機號組成莽红。
- IP 地址管理機構在分配 IP 地址時只分配網(wǎng)絡號妥畏,剩下的主機號由得到網(wǎng)絡號的單位自行分配。方便IP地址的管理安吁。
- 路由器僅根據(jù)目的主機所連接的網(wǎng)絡號來轉發(fā)分組而不考慮主機號醉蚁,使得路由器數(shù)目減少,從而減少路由表存儲空間和查找路由表的時間鬼店。
- Ip 地址是標記一臺主機(或路由器)和一條鏈路的接口网棍。
- 網(wǎng)絡是指具有相同網(wǎng)絡號的主機集合。
劃分子網(wǎng)
-
從兩級IP地址升級到三級Ip地址
原因:
- 每個Ip地址利用率很低(1薪韩、一個B類地址本可以連接的主機數(shù)超過6萬确沸,某些單位申請到B類地址捌锭,但是連接的主機不多俘陷,造成浪費。2观谦、給每個物理網(wǎng)絡分配一個網(wǎng)絡號會使路由表變得太大而使網(wǎng)絡性能變差)
- 兩級IP不夠靈活拉盾。(若一個單位在新地方申請了新的網(wǎng)絡,在沒有申請到一個新的IP地址之前是不可使用的豁状,希望有一種方法能使單位能靈活增加的網(wǎng)絡捉偏,而不用向互聯(lián)網(wǎng)管理機構去申請新的網(wǎng)絡號,兩級IP無法辦到)
劃分子網(wǎng)基本思路
劃分子網(wǎng)屬于單位內部的事情泻红,本單位以外仍是一個網(wǎng)絡夭禽。
-
劃分子網(wǎng)是從網(wǎng)絡的主機號借用若干位作為子網(wǎng)。
IP 地址 ::= {<網(wǎng)絡號>,<子網(wǎng)號>,<主機號>}
從其他網(wǎng)絡發(fā)送給單位的某主機的IP數(shù)據(jù)報谊路,仍然是根據(jù)IP數(shù)據(jù)報的目的網(wǎng)絡號找到連接在本單位網(wǎng)絡上的路由器讹躯,但此路由器在收到IP數(shù)據(jù)報以后,再按照目的網(wǎng)絡號和子網(wǎng)號找到目的子網(wǎng),把IP數(shù)據(jù)報交給目的主機潮梯。
-
子網(wǎng)掩碼
為使路由器(目的網(wǎng)絡地址骗灶,子網(wǎng)掩碼,下一跳地址)R能很方便的從數(shù)據(jù)報的目的IP地址提取出所要找的子網(wǎng)的網(wǎng)絡地址秉馏,路由器R就要使用三級IP地址的子網(wǎng)掩碼耙旦,子網(wǎng)掩碼也是32位,有一串24位1和8位0組成萝究,子網(wǎng)掩碼中的1對應于IP地址原來二級地址的16位網(wǎng)絡號新增加的8位子網(wǎng)號免都,而子網(wǎng)掩碼中的8個0對應二級地址中的主機號。
子網(wǎng)的網(wǎng)絡地址:三級地址的子網(wǎng)掩碼和數(shù)據(jù)報的IP地址逐位相【與】運算可得帆竹。
子網(wǎng)掩碼好處:不管網(wǎng)絡有沒有劃分子網(wǎng)琴昆,只要把子網(wǎng)掩碼和IP地址逐位相【與】就可以算出子網(wǎng)地址,便于查找路由表馆揉。
現(xiàn)在互聯(lián)網(wǎng)規(guī)定:所有網(wǎng)絡必須使用子網(wǎng)掩碼业舍,同時在路由器的路由表中也必須有子網(wǎng)掩碼這一欄,如果不劃分子網(wǎng)掩碼升酣,就使用默認的子網(wǎng)掩碼舷暮。
- A類地址默認子網(wǎng)掩碼:255.0.0.0
- B類地址默認子網(wǎng)掩碼:255.255.0.0
- C類地址默認子網(wǎng)掩碼:255.255.255.0
劃分子網(wǎng)增加了網(wǎng)絡靈活性,減少了能來連接到網(wǎng)絡的主機數(shù)噩茄。
-
無分類編址CIDR(構造超網(wǎng))
原因:
- B類地址在1992年已分配近一半下面,眼看很快就會分配完畢。
- 互聯(lián)網(wǎng)主干網(wǎng)上的路由表中的項目急劇增長(從幾千增長到幾萬個)
- 整個Ipv4地址空間最終將全部耗盡绩聘。(2011年2月3日沥割,IANA宣布Ipv4地址已經(jīng)耗盡)
特點:
-
CIDR消除了傳統(tǒng)A類,B類和C類地址以及劃分的子網(wǎng)概念凿菩。
IP 地址 ::= {<網(wǎng)絡前綴>,<主機號>}
CIDR還使用 / 來標記机杜,即 斜線記法/CIDR記法 — 在IP地址后面加 / ,然后寫上網(wǎng)絡前綴所占的位數(shù)衅谷。
-
CIDR把網(wǎng)絡前綴都相同的連續(xù)IP地址組成一個CIDR地址塊椒拗。
? 前20位是網(wǎng)絡前綴 后12位是主機號
128.14.35.7/20 = 10000000 00001110 00100011 00000111
四、運輸層
運輸層向它的上層應用層提供通信服務获黔。
從 網(wǎng)絡層(IP 層)來說蚀苛,通信的兩端是兩臺主機,IP 數(shù)據(jù)報的首部明確標志了兩臺主機的 IP 地址玷氏,而真正進行通信的實體是主機中的進程堵未,兩臺主機之間的通信實質上是主機中的進程間的通信。IP 協(xié)議雖然能把分組送到目的主機盏触,但是這個分組還停留在網(wǎng)絡層渗蟹,并沒有交付到主機中的應用進程侦厚。從運輸層角度來看,通信的真正端點并不是主機而是主機中的進程拙徽,也就是說端到端的通信是應用進程間的通信刨沦。
運輸層的一個很重要的功能:復用和分用
- 復用:發(fā)送方不同的應用進程都可以使用同一個運輸層協(xié)議傳送數(shù)據(jù)(需加上適當?shù)氖撞浚?/li>
- 分用:接收方的運輸層在剝去報文首部后能夠把這些數(shù)據(jù)正確交付到目的應用進程。
網(wǎng)絡層和運輸層有明顯的區(qū)別:
網(wǎng)絡層為主機之間提供邏輯通信膘怕。
運輸層為主機中的應用進程提供端到端的邏輯通信想诅。
運輸層的端口
-
服務器使用的端口號分為兩種
-
熟知端口(系統(tǒng)端口):數(shù)值為0~1023
應用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP SNMP(trap) HTTPS 熟知端口 21 23 25 53 69 80 161 162 443 登記端口:數(shù)值為1024~49151,這類端口為沒有熟知端口的應用程序使用岛心,這類端口必須在IANA按照規(guī)定手續(xù)登記来破,以防重復。
-
客戶端使用的端口號:數(shù)值為49152~65535忘古,這類端口僅在客戶進程運行時才動態(tài)選擇徘禁,因此也叫短暫端口號。
運輸層的兩種傳輸協(xié)議
傳輸控制協(xié)議 TCP(Transmission Control Protocol)— 面向連接
- TCP 是面向連接的運輸層協(xié)議髓堪。
- 每一條TCP連接只能有兩個端點送朱,每一條TCP連接只能是點對點的(一對一)
- TCP 提供可靠的交付服務。通過TCP連接傳輸數(shù)據(jù)干旁,無差錯驶沼,不丟失,不重復争群。
- TCP 提供全雙工通信回怜。TCP 允許通信雙方的應用程序在任何時候都能發(fā)送數(shù)據(jù)。TCP連接兩端都設有發(fā)送緩存和接收緩存换薄,用來臨時存放雙向通信的數(shù)據(jù)玉雾。在發(fā)送時,應用程序在把數(shù)據(jù)傳遞給TCP的緩存后轻要,就可以做自己的事情复旬,而TCP在合適的時候把數(shù)據(jù)發(fā)送出去。在接收時伦腐,TCP把收到的數(shù)據(jù)放入緩存赢底,上層應用進程在合適的時候讀取緩存中的數(shù)據(jù)失都。
- 面向字節(jié)流柏蘑。
TCP的連接
每條TCP有兩個端點,那么TCP的端點叫套接字(Socket)或插口粹庞。
每條TCP連接唯一的被通信兩端的兩個端點(套接字)所確定咳焚。
套接字 socket = (IP地址:端口號)
TCP連接 ::= {socket1,socket2} = {(IP1:port1), (IP2:port2)}
可靠傳輸原理
一庞溜、停止等待協(xié)議
無差錯情況:A發(fā)送分組M1革半,發(fā)送完暫停發(fā)送碑定,等待B的確認,B收到了M1就向A發(fā)送確認又官,A收到M1的確認后延刘,再發(fā)送下一個分組M2.
-
出現(xiàn)差錯:出現(xiàn)差錯使用超時重傳機制。
超時重傳:A發(fā)送M1以后暫停發(fā)送六敬,等待B的確認碘赖,此時出現(xiàn)差錯,B丟棄M1外构,什么也不做普泡,A在等待一段時間之后還未收到確認,則認為發(fā)送的M1已經(jīng)丟失审编,將剛發(fā)送的M1再次發(fā)送撼班。
實現(xiàn)超時重傳:在發(fā)送完一個分組時設置一個超時計時器,如果在超時計時器之前收到了對方的確認垒酬,就撤銷已設置的超時計時器砰嘁。否則重傳發(fā)送的分組。
注意:
- A發(fā)送完一個分組后勘究,必須暫時保留已發(fā)送的分組副本(在超時重傳時使用)般码,只有在收到確認后才能清除暫時保留的副本分組。
- 分組和確認分組都必須進行編號乱顾,這樣才能明確是哪一個發(fā)送出去的分組收到了確認板祝,哪一個沒有收到確認。
- 超時計時器設置的重傳時間應當比數(shù)據(jù)在分組傳輸?shù)钠骄禃r間要長走净。
-
確認丟失和確認遲到
若B所發(fā)送的對M1的確認丟失了券时,那么A進行重傳之后,B又收到了重傳的M1伏伯。- 丟棄這個重復的M1橘洞,不向上層交付。
- 向A發(fā)送確認说搅。不能因為已經(jīng)發(fā)過就不發(fā)炸枣,A超時重發(fā)就表明A并未收到確認。
通過確認和重試機制弄唧,就可以在不可靠的穿傳輸網(wǎng)絡上實現(xiàn)可靠的通信适肠。
上述這種傳輸協(xié)議稱為【自動重傳請求ARQ(Automic Repeat Request)】
-
信道利用率
停止等待協(xié)議的優(yōu)點是簡單,但缺點是信道利用率太低候引。
停止等待協(xié)議的信道利用率 U = Td/(Td + RTT + Ta)
Td:A發(fā)送分組需要的時間 Ta:B發(fā)送確認分組時間 RTT:往返時間
停止等待協(xié)議中往返時間RTT遠大于Td和Ta侯养,因此利用率極低。
考慮采用流水線傳輸來提高信道利用率澄干。流水線傳輸就是發(fā)送方可連續(xù)發(fā)送多個分組不必每發(fā)送一個分組就等到確認逛揩。當使用流水線傳輸時柠傍,就是連續(xù)的ARQ和滑動窗口協(xié)議。
二辩稽、連續(xù)ARO協(xié)議
滑動窗口協(xié)議比較復雜惧笛,是TCP協(xié)議的精髓所在。發(fā)送方維持發(fā)送窗口逞泄,它的意義在于:位于發(fā)送窗口的5個分組都可以連續(xù)發(fā)送而不用等待對方確認徐紧,這樣信道利用率就提高了。對方每收到一個確認炭懊,發(fā)送窗口就向前滑動一個分組并级。
接受方采用累積確認方式,不必對收到的分組逐個發(fā)送確認侮腹,而是在收到幾個分組后嘲碧,對按序列到達的最后一個分組發(fā)送確認,這就表示:到這個分組位置的所有分組都已經(jīng)正確收到父阻。
TCP報文首部格式
-
首部字段
- 源端口和目的端口:2字節(jié)愈涩,分別寫入源端口號和目的端口號
- 序號:4字節(jié),TCP連接中傳送的字節(jié)流中的每一個字節(jié)都按順序編號加矛。
- 確認號:4字節(jié)履婉,是期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號。如確認號 = N斟览,表明序號 N-1 為止所有數(shù)據(jù)都已經(jīng)正確收到毁腿。
- 數(shù)據(jù)偏移:4位,指出TCP報文段的數(shù)據(jù)起始處距離TCP報文段的起始處有多遠苛茂。這個字段實際是指出TCP報文段首部長度已烤。
- 保留:6位,保留為今后使用妓羊,目前置為0胯究。
- 緊急URG:當URG=1時,表明緊急指針字段有效躁绸。
- 確認ACK:當ACK=1時確認號字段才有效裕循。ACK=0時,確認號無效净刮。
- 推送PSH:當兩個應用進程進行交互式的通信時剥哑,有時在一端的應用程序希望在鍵入一個命令后立即就能夠收到對方的相應。這時TCP就可以使用推送操作庭瑰。
- 復位RST:當RST=1時星持,表明TCP連接中出現(xiàn)嚴重差錯,必須釋放連接弹灭。
- 同步SYN:在連接建立時用來同步序號督暂。當SYN=1而ACK=0時,表明這是一個連接請求報文段穷吮。對方同意連接逻翁,則應在響應報文段中使SYN=1和ACK=1。
- 終止FIN:釋放連接捡鱼。當FIN=1時八回,表示此報文段已經(jīng)發(fā)送完畢,并要求釋放運輸連接驾诈。
- 窗口:指發(fā)送本報文段的一方的接收窗口缠诅,窗口字段明確指出了現(xiàn)在允許對方發(fā)送的數(shù)據(jù)量,窗口值經(jīng)常在動態(tài)變化乍迄。
- 檢驗和:2字節(jié)管引,檢驗的范圍包括首部和數(shù)據(jù)兩部分。
- 緊急指針:2字節(jié)闯两,緊急指針僅在URG=1時有意義褥伴,指出本報文段中的緊急數(shù)據(jù)的字節(jié)數(shù)。
- 選項:長度可變漾狼,最長可達40字節(jié)重慢,當沒使用選項時,TCP首部長度是20字節(jié)逊躁。
-
數(shù)據(jù)字段
IP 數(shù)據(jù)報的數(shù)據(jù)部分
TCP流量控制
利用滑動窗口實現(xiàn)流量控制似踱。發(fā)送方的發(fā)送窗口不能超過接收方給出的接收窗口的數(shù)值。
用戶數(shù)據(jù)報協(xié)議 UDP(User Datagram Protocol)— 無連接
- DUP是面向無連接的稽煤,即發(fā)送數(shù)據(jù)之前不需要建立連接(當然發(fā)送結束也不需要釋放)屯援,因此減少了開銷和發(fā)送數(shù)據(jù)之前的時延。
- UDP使用盡最大努力交付念脯,即不保證可靠交付狞洋,因此主機不需要維持復雜的連接狀態(tài)表。
- UDP是面向報文的绿店。發(fā)送方的UDP對應用程序交下來的報文吉懊,在添加首部后就向下交付 IP 層。UDP 對應用層交付下來的報文既不合并也不拆分假勿,而是保留這些報文邊界借嗽。即UDP將報文原樣發(fā)送,因此需要考慮報文的大小转培,報文太長恶导,IP 層傳輸可能要進行分片,會降低IP 層效率浸须,報文太短惨寿,UDP 把它交給 IP 層后邦泄,會使 IP 數(shù)據(jù)報的首部的相對長度太大,也會降低 IP 層的效率裂垦。
- UDP 沒有擁塞控制顺囊。因此網(wǎng)絡上出現(xiàn)擁塞不會使源主機的發(fā)送頻率速率降低。某些實時應用(IP 電話蕉拢,實時視頻會議)要求源主機以恒定的速率發(fā)送數(shù)據(jù)特碳,并且允許在網(wǎng)絡發(fā)生擁塞的時丟失一些數(shù)據(jù),但不允許數(shù)據(jù)有太大的時延晕换。
- UDP 支持一對一午乓,一對多,多對一和多對多交互通信闸准。
- UDP首部開銷小益愈,只有8個字節(jié),比TCP的20個字節(jié)首部要短恕汇。
UDP 首部格式
- 首部字段
- 源端口:源端口號腕唧,在需要對方回信時選用,不需要時可以用0瘾英。
- 目的端口:目的端口號枣接,這在終點交付報文時必須使用。
- 長度:UDP用戶數(shù)據(jù)報的長度缺谴,其最小值是8(僅有首部)但惶。
- 檢驗和:檢測UDP用戶數(shù)據(jù)報在傳輸中是否有差錯,有錯就丟棄湿蛔。
- 數(shù)據(jù)字段:IP 數(shù)據(jù)報的數(shù)據(jù)部分
五膀曾、應用層
域名系統(tǒng)DNS
域名系統(tǒng)DNS能夠把互聯(lián)網(wǎng)上的主機名字轉換成IP地址。
域名到IP地址的解析是由分布在互聯(lián)網(wǎng)上的許多域名服務器程序共同完成阳啥,域名服務器程序在專設的節(jié)點上運行添谊,人們常把運行域名服務器上次的機器稱為域名服務器。
域名到IP地址解析過程要點:
當某個應用程序需要把主機名解析為IP地址時察迟,該應用進程就調用解析程序斩狱,并稱為DNS的一個客戶,把待解析的域名放在DNS請求報文中扎瓶,以UDP用戶數(shù)據(jù)報方式發(fā)給本地域名服務器(使用UDP是為了減少開銷)所踊,本地域名服務器在查找到域名后,把對應的IP地址放在回答報文中返回概荷,應用進程獲取到目的主機的IP地址后即可進行通信秕岛。
域名結構
三級域名 . 二級域名 . 頂級域名
頂級域名
-
國家頂級域名
cn:中國 us:美國 uk:英國
-
通用頂級域名
com:公司企業(yè) net:網(wǎng)絡服務機構 org:非營利性組織 int:國際組織
edu:美國專用教育機構 gov:美國政府部門 mil:美國軍事部門
-
基礎結構域名
這種定義域名只有一個 — arpa。用于反向域名解析,又稱為反向域名继薛。
域名樹可以清晰的表示互聯(lián)網(wǎng)的域名系統(tǒng)修壕。
域名服務器
域名服務器的實際管轄范圍是區(qū),區(qū)可能小于或等于域惋增,但一定不大于域叠殷。
域名服務器被劃分為4種不同類型
- 根域名服務器
- 頂級域名服務器
- 權限域名服務器
- 本地域名服務器
超文本傳輸協(xié)議 HTTP
HTTP協(xié)議定義了瀏覽器怎樣向萬維網(wǎng)服務器請求萬維網(wǎng)文檔以及服務器怎樣把文檔傳送給瀏覽器改鲫。從層次角度來看诈皿,HTTP是面向事務的應用層協(xié)議。它是萬維網(wǎng)上能夠可靠交換文件(文本像棘,聲音稽亏,圖像等各種多媒體文件)的重要基礎。
HTTP報文結構
由于HTTP是面向文本的缕题,因此在報文中的每一個字段都是一些ASCII碼串截歉。因而各個字段的長度是不確定的。
HTTP請求報文
-
請求行:請求方法烟零,URL瘪松,HTTP版本,字段由空格分開锨阿,最后有回車換行
方法 意義 OPTIONS 請求一些選項信息 GET 請求讀取由URL所標志的信息 HEAD 請求讀取由URL所標志的信息的首部 POST 給服務器添加信息 PUT 在指明的URL下存儲一個文檔 DELETE 刪除指定的URL所標志的資源 TRANCE 用來進行環(huán)回測試的請求報文 CONNECT 用于代理服務器 請求行格式
GET http://www.xyz.edu.cn/dir/index.html HTTP/1.1
首部行:用來說明瀏覽器宵睦、服務器或報文主體的一些信息。首部可以有好幾行墅诡,也可以不是呀壳嚎。每個首部行中都有首部字段名和值,每行結束地方都要有回車換行末早,還有一行空格用于區(qū)分請求實體和首部行烟馅。
-
請求實體:在請求行中一般不用這個字段
完整的HTTP請求報文 GET /dir/index/html HTTP/1.1 請求航使用了相對URL(首部行給出了主機域名,這里可以省略) Host:www.xyz.edu.cn 慈航是首部行的開始然磷,這行給出主機的域名 Connection:close 告訴服務器發(fā)送完請求的文檔后就可釋放連接(不使用持續(xù)連接) User-Agent:Mozilla/5.0 表名用戶代理是使用火狐瀏覽器 Firefox Accept-Language:cn 表示用戶希望優(yōu)先得到中文版本的文檔 請求報文的最后還要一個空行
HTTP響應報文
-
狀態(tài)行:HTTP版本郑趁,狀態(tài)碼,狀態(tài)碼描述信息姿搜,字段中有空格寡润,結束有回車換行
狀態(tài)碼 描述 1xx 指示信息 — 表示請求已接收,繼續(xù)處理 2xx 成功 — 表示請求已被接收痪欲,理解悦穿,接受 3xx 重定向 — 要完成請求必須進行進一步的操作 4xx 客戶端錯誤 — 請求有語法錯誤或請求無法實現(xiàn) 5xx 服務端錯誤 — 服務器未能實現(xiàn)合法的請求 HTTP/1.1 202 Accepted 接受 HTTP/1.1 400 Bad Request 錯誤請求 HTTP/1.1 404 Not Found 找不到 //若請求網(wǎng)頁轉移到新地址,狀態(tài)行和首部行為 HTTP/1.1 301 Moved Permsnently 永久地轉移了 Location: http://www.xyz.edu.cn/ee.index.html 新的URL
首部行
響應實體
在服務器上存放用戶信息
由于HTTP是無狀態(tài)的业踢,而當同一個用戶想要保存其用戶信息栗柒,就需要服務器記住該用戶的信息泻轰,可以在HTTP中使用Cookie盖桥。Cookie表示在HTTP服務器和客戶之間傳遞的狀態(tài)信息。
Cookie是這樣工作的。當用戶A瀏覽某個使用Cookie的網(wǎng)站時怀挠,該網(wǎng)站的服務器就為A產(chǎn)生一個唯一的識別碼,并以此作為索引在服務器的后端數(shù)據(jù)庫中產(chǎn)生一個項目泞歉,接著在給A的HTTP響應報文中添加一個叫做Set-Cookie的首部行雨女,這里的首部字段名就是 ‘Set-Cookie’,而后面的值就是賦予該用戶的識別碼曙痘。
Set-Cookie:44598a438y43b375
當A收到這個響應時芳悲,其瀏覽器就在它管理的特定Cookie文件中添加一行,其中包括這個服務器的主機名和Set-Cookie后面給出的識別碼边坤。當A繼續(xù)瀏覽這個網(wǎng)站時名扛,每發(fā)送一個HTTP請求報文,其瀏覽器就會從其Cookie文件中取出這個網(wǎng)站的識別碼茧痒,并放到HTTP請求報文的Cookie首部航肮韧。
Cookie:44598a438y43b375
于是,這個網(wǎng)站就能跟蹤用戶 44598a438y43b375 在該網(wǎng)站的活動旺订。需要注意弄企,服務器并不需要知道這個用戶的真實姓名以及其他信息,但服務器能知道用戶44598a438y43b375在什么時候訪問了哪些頁面区拳,以及訪問這些頁面的順序拘领。如果A是在網(wǎng)上購物,那么這個服務器可以為A維護一個所購物品的列表劳闹,使A結束這次購物時可以一起付賬院究。
- Cookie可以收集用戶在互聯(lián)網(wǎng)上的行為。如果A在幾天后再次訪問這個網(wǎng)站本涕,那么瀏覽器就會在其HTTP請求報文中繼續(xù)用首部Cookie:44598a438y43b375业汰,而這個網(wǎng)站服務器根據(jù)A的過去訪問記錄可以給A推薦商品。
- Cookie可以記錄用戶的基本信息菩颖。如果A在該網(wǎng)站上登記過和使用過信用卡消費样漆,這個網(wǎng)站就已經(jīng)保存了A的姓名,電子郵件晦闰,信用卡號碼等信息放祟,當A繼續(xù)購物時,只要還使用同一臺電腦呻右,由于瀏覽器產(chǎn)生的HTTP請求報文中都攜帶了同樣的Cookie首部行跪妥,服務器就可利用Cookie來驗證出這是A,此后A在這個網(wǎng)站購物就不需要鍵入姓名声滥,信用卡等信息眉撵。
- Cookie只是文本文件,并不是計算機可執(zhí)行文件,因此不可能攜帶和傳播計算機病毒纽疟,也不可能來獲取用戶計算機的硬盤中的信息罐韩。
- 可以設置是否使用Cookie,用于保護用戶隱私污朽。關于用戶隱私保護問題散吵,網(wǎng)站上保存的Cookie文件可以在瀏覽器中設置是否關閉。還有很多第三方明確聲明會保護用戶隱私蟆肆,不會把用戶的識別碼或個人信息轉移或出售給其他廠商矾睦。