計(jì)算機(jī)網(wǎng)絡(luò)
基礎(chǔ)概念
實(shí)現(xiàn)多個(gè)計(jì)算機(jī)系統(tǒng)的資源共享和信息傳遞
通信子網(wǎng):介質(zhì),設(shè)備,協(xié)議,對(duì)應(yīng)物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層
資源子網(wǎng):主機(jī),終端,軟件對(duì)應(yīng)應(yīng)用層,表示層,會(huì)話層
帶寬:在通信領(lǐng)域表示通信線路允許通過(guò)的信號(hào)頻帶范圍,單位Hz,在計(jì)算機(jī)網(wǎng)絡(luò)中,表示通信線路每秒的傳送數(shù)據(jù)量,單位bit/s
時(shí)延:報(bào)文(分組)從網(wǎng)絡(luò)(鏈路)一端傳送到另外一端需要的時(shí)間,有四個(gè)部分組成
發(fā)送時(shí)延:數(shù)據(jù)塊長(zhǎng)度/帶寬
傳播時(shí)延:信道長(zhǎng)度/傳播速率
處理時(shí)延:對(duì)數(shù)據(jù)快的進(jìn)行存儲(chǔ)轉(zhuǎn)發(fā)處理所需的時(shí)間
排隊(duì)時(shí)延:分組等待路由器確定端口,等到輸出隊(duì)列轉(zhuǎn)發(fā)
吞吐量:單位時(shí)間通過(guò)某個(gè)網(wǎng)絡(luò)(信道/接口)的數(shù)據(jù)量
速率:計(jì)算機(jī)網(wǎng)絡(luò)上的主機(jī)在數(shù)字信道上傳送數(shù)據(jù)的速率,單位b/s
接口:同一結(jié)點(diǎn)內(nèi)相鄰兩層交換信息的連接點(diǎn),即服務(wù)訪問(wèn)點(diǎn)
服務(wù):由下層向上層通過(guò)層間接口提供的功能調(diào)用
協(xié)議:協(xié)議的實(shí)現(xiàn)(同一層兩個(gè)對(duì)等實(shí)體間的通信)保證了能夠向上一層提供服務(wù),協(xié)議控制對(duì)等實(shí)體之間的通信規(guī)則,要實(shí)現(xiàn)本層協(xié)議需要使用下層提供的服務(wù)
網(wǎng)絡(luò)協(xié)議主要包含三個(gè)要素:
語(yǔ)法(數(shù)據(jù)與控制信息的結(jié)構(gòu)或格式)
語(yǔ)義(控制信息對(duì)應(yīng)的動(dòng)作和應(yīng)答)
同步(事件的實(shí)現(xiàn)順序)
局域網(wǎng)和廣域網(wǎng):在網(wǎng)內(nèi)通訊只需要物理地址髓需,局域網(wǎng)使用的協(xié)議主要在數(shù)據(jù)鏈路層和物理層,廣域網(wǎng)使用的協(xié)議主要在網(wǎng)絡(luò)層,以及數(shù)據(jù)鏈路層和物理層
以太網(wǎng):以太網(wǎng)是局域網(wǎng)的一種實(shí)現(xiàn)形式译红,以太網(wǎng)邏輯上采用總線型拓?fù)浣Y(jié)構(gòu)拇泛,所有計(jì)算機(jī)共享同一條總線,信息以廣播方式發(fā)送球订,采用了無(wú)連接的工作方式轧钓,不對(duì)發(fā)送的數(shù)據(jù)幀編號(hào)洼裤,也不要求接收發(fā)送確認(rèn)邻辉。以太網(wǎng)盡最大努力交付數(shù)據(jù),提供的是不可靠服務(wù)腮鞍,對(duì)于差錯(cuò)的糾正由高層協(xié)議完成值骇。
萬(wàn)維網(wǎng)的組成
(1)統(tǒng)一資源定位符URL,每個(gè)資源在萬(wàn)維網(wǎng)范圍內(nèi)具有唯一的標(biāo)識(shí)符
<協(xié)議>://<主機(jī)>:<端口>/<路徑>
(2)超文本傳輸協(xié)議HTTP移国,使用TCP連接進(jìn)行可靠傳輸?shù)膽?yīng)用層協(xié)議
(3)超文本標(biāo)記語(yǔ)言HTML吱瘩,文檔結(jié)構(gòu)的標(biāo)記語(yǔ)言,使用一些約定的標(biāo)記對(duì)頁(yè)面上的各種信息迹缀、格式進(jìn)行描述
互聯(lián)網(wǎng)泛指多個(gè)計(jì)算機(jī)網(wǎng)絡(luò)按照一定的通信協(xié)議相互連接成一個(gè)大型的計(jì)算機(jī)網(wǎng)絡(luò)使碾。
因特網(wǎng)是指在ARPA網(wǎng)基礎(chǔ)上發(fā)展而來(lái)的世界上最大的全球性互聯(lián)網(wǎng)絡(luò),因特網(wǎng)和其他類似的由計(jì)算機(jī)相互連接而成的大型網(wǎng)絡(luò)系統(tǒng)祝懂,都可以算互聯(lián)網(wǎng)票摇,因特網(wǎng)只是互聯(lián)網(wǎng)中最大的一個(gè)。
萬(wàn)維網(wǎng)是無(wú)數(shù)個(gè)網(wǎng)絡(luò)站點(diǎn)和網(wǎng)頁(yè)的集合砚蓬,他們?cè)谝黄饦?gòu)成了因特網(wǎng)最主要的部分矢门,因特網(wǎng)還包括了電子郵件等。
網(wǎng)絡(luò)模型的層次結(jié)構(gòu)
物理層
基本數(shù)據(jù)單元:比特
基本功能:實(shí)現(xiàn)比特流的傳輸和接收,物理媒體不屬于物理層協(xié)議,位于物理層協(xié)議下方
基本協(xié)議:IEEE802
數(shù)據(jù)鏈路層
基本數(shù)據(jù)單元:幀
基本功能
加強(qiáng)物理層傳輸原始比特流的功能,將物理層提供的可能出錯(cuò)的物理連接改造為邏輯上無(wú)差錯(cuò)的數(shù)據(jù)鏈路祟剔,使之對(duì)網(wǎng)絡(luò)層表現(xiàn)為一條無(wú)差錯(cuò)的的鏈路隔躲,在概念上分為兩個(gè)子層:LLC和MAC,提供三種服務(wù):無(wú)確認(rèn)的無(wú)連接服務(wù)物延,又確認(rèn)的無(wú)連接服務(wù)宣旱,有確認(rèn)的有連接服務(wù)
鏈路管理:鏈路連接的建立,維持教届,釋放以及對(duì)異常情況的處理
幀定界和幀同步:鏈路層傳輸?shù)臄?shù)據(jù)單元是幀响鹃,協(xié)議不同,幀的長(zhǎng)短和定界方法也有差別案训,但無(wú)論如何必須對(duì)幀進(jìn)行定界买置,即添加必要的首部和尾部
流量控制:控制發(fā)送方數(shù)據(jù)的發(fā)送速率,使接收方能夠完全接收强霎,從而防止由于發(fā)送方數(shù)據(jù)發(fā)送過(guò)快而接收方接受過(guò)慢導(dǎo)致數(shù)據(jù)丟失
差錯(cuò)控制:對(duì)數(shù)據(jù)傳輸中的差錯(cuò)進(jìn)行檢測(cè)和糾正忿项,提供“無(wú)比特差錯(cuò)” 的傳輸
實(shí)現(xiàn)數(shù)據(jù)的透明傳輸并使用MAC地址提供對(duì)介質(zhì)的訪問(wèn),保證每一幀都能正確到達(dá)目的站(為了防止幀在傳輸過(guò)程中丟失城舞,在可靠的數(shù)據(jù)鏈路層協(xié)議中轩触,發(fā)送方緩存發(fā)送的每個(gè)幀,并為它設(shè)定一個(gè)計(jì)時(shí)器家夺,當(dāng)計(jì)時(shí)器到期而該幀的確認(rèn)幀仍然沒(méi)有到時(shí)脱柱,發(fā)送方將重發(fā)該幀)
將數(shù)據(jù)和控制信息區(qū)分開(kāi):通過(guò)一定措施區(qū)分開(kāi)幀的數(shù)據(jù)和控制信息
邏輯鏈路控制LLC子層:該層集中了與媒體接入無(wú)關(guān)的功能。建立和釋放數(shù)據(jù)鏈路層的邏輯連接拉馋;提供與上層的接口(即服務(wù)訪問(wèn)點(diǎn))榨为;給LLC幀加上序號(hào);差錯(cuò)控制煌茴。
介質(zhì)訪問(wèn)控制MAC子層:負(fù)責(zé)解決與媒體接入有關(guān)的問(wèn)題和在物理層的基礎(chǔ)上進(jìn)行無(wú)差錯(cuò)的通信随闺。發(fā)送時(shí)將上層交下來(lái)的數(shù)據(jù)封裝成幀進(jìn)行發(fā)送,接收時(shí)對(duì)幀進(jìn)行拆卸蔓腐,將數(shù)據(jù)交給上層矩乐;實(shí)現(xiàn)和維護(hù)MAC協(xié)議;進(jìn)行比特差錯(cuò)檢查與尋址回论。
基本協(xié)議:Ethernet協(xié)議
工作設(shè)備:網(wǎng)卡(物理層散罕,數(shù)據(jù)鏈路層),網(wǎng)橋傀蓉,交換機(jī)(多端口網(wǎng)橋)
網(wǎng)橋:將兩個(gè)相似的網(wǎng)絡(luò)連接起來(lái)欧漱,并對(duì)網(wǎng)絡(luò)數(shù)據(jù)的流通進(jìn)行管理,不但能擴(kuò)展網(wǎng)絡(luò)的距離或范圍僚害,還能提高網(wǎng)絡(luò)的性能硫椰。(網(wǎng)絡(luò)1和網(wǎng)絡(luò)2通過(guò)網(wǎng)橋連接繁调,網(wǎng)橋接收到網(wǎng)絡(luò)1發(fā)送的數(shù)據(jù)包,檢查數(shù)據(jù)包中的地址靶草,如果地址屬于網(wǎng)絡(luò)1 蹄胰,他就將其放棄,相反奕翔,如果是網(wǎng)絡(luò)2 的地址裕寨,就繼續(xù)發(fā)送給網(wǎng)絡(luò)2,這樣可以利用網(wǎng)橋隔離網(wǎng)段)
網(wǎng)橋的基本特點(diǎn)
網(wǎng)橋必須具備尋址和路徑的選擇能力派继,已確定幀的傳輸方向
從源網(wǎng)絡(luò)接收幀宾袜,以目的網(wǎng)絡(luò)的介質(zhì)訪問(wèn)控制協(xié)議向目的網(wǎng)絡(luò)轉(zhuǎn)發(fā)該幀
網(wǎng)橋在不同或者相同類型的LAN之間存儲(chǔ)并轉(zhuǎn)發(fā)幀,必要時(shí)還進(jìn)行鏈路層上的協(xié)議轉(zhuǎn)換
網(wǎng)橋?qū)λ邮盏降膸蛔鋈魏涡薷募菘撸蛑粚?duì)幀的封裝格式做很小的修改
網(wǎng)橋可以通過(guò)執(zhí)行幀翻譯互連不同類型的局域網(wǎng)庆猫,即把原協(xié)議的信息段的內(nèi)容作為另一種協(xié)議的信息部分封裝在幀中
網(wǎng)橋應(yīng)該有足夠大的緩存空間,因?yàn)槎虝r(shí)間內(nèi)幀的到達(dá)速度可能高于轉(zhuǎn)發(fā)速度
網(wǎng)橋的優(yōu)點(diǎn):過(guò)濾通信量,擴(kuò)大物理范圍,可使用不同的物理層椎眯,可互連不同類型的局域網(wǎng),提高了網(wǎng)絡(luò)的可靠性
網(wǎng)橋的缺點(diǎn):增加時(shí)延,MAC子層沒(méi)有流量控制功能驼修,不同MAC子層的網(wǎng)段橋接在一起需要幀格式的轉(zhuǎn)換,只適合用戶數(shù)不多通信量不大的局域網(wǎng),否則可能因傳播過(guò)多廣播信息而產(chǎn)生網(wǎng)絡(luò)擁塞(廣播風(fēng)暴)
鏈路層提供的MAC尋址與ARP,RARP協(xié)議尋址的區(qū)別:ARP此叠,RARP協(xié)議工作在網(wǎng)絡(luò)層,負(fù)責(zé)IP地址與MAC地址的轉(zhuǎn)換随珠,而轉(zhuǎn)換后則由鏈路層僅靠MAC地址尋址灭袁。
網(wǎng)絡(luò)層
基本數(shù)據(jù)單元:分組
基本功能:異構(gòu)網(wǎng)路互連,路由選擇和分組轉(zhuǎn)發(fā)牙丽,擁塞控制
基本協(xié)議:網(wǎng)際協(xié)議(IP),互聯(lián)網(wǎng)組管理協(xié)議(IGMP)和網(wǎng)際控制報(bào)文協(xié)議(ICMP)
工作設(shè)備:網(wǎng)關(guān)
地址解析協(xié)議ARP(Address Resolution Protocol)
維護(hù)IP地址到MAC主機(jī)地址動(dòng)態(tài)表的協(xié)議简卧,將IP地址解析為鏈路層需要的硬件地址兔魂。主機(jī)A向本局域網(wǎng)的主機(jī)B發(fā)送IP數(shù)據(jù)報(bào)時(shí)烤芦,先查看ARP高速緩存中是否有主機(jī)B的地址,如果有就將其硬件地址寫(xiě)入MAC幀析校,然后通過(guò)局域網(wǎng)將該MAC幀發(fā)往此硬件地址构罗,如果沒(méi)有,就先廣播ARP請(qǐng)求分組(MAC幀的目的地址為FF-FF-FF-FF-FF-FF)智玻,在獲得目標(biāo)主機(jī)的ARP相應(yīng)分組后遂唧,將目標(biāo)主機(jī)的硬件地址與IP映射關(guān)系寫(xiě)入ARP緩存中,然后按照此硬件地址發(fā)送MAC幀吊奢。
網(wǎng)際控制報(bào)文協(xié)議協(xié)議ICMP (Internet Control Message Protocol)
使主機(jī)或者路由器可以報(bào)告差錯(cuò)和異常情況嘛盖彭,有差錯(cuò)報(bào)文和詢問(wèn)報(bào)文。ICMP差錯(cuò)報(bào)文用于目標(biāo)主機(jī)或到目標(biāo)主機(jī)路徑上的路由器向源主機(jī)報(bào)告差錯(cuò)和異常情況,包括
(1)終點(diǎn)不可到達(dá)
(2)源點(diǎn)抑制
(3)時(shí)間超過(guò)
(4)參數(shù)問(wèn)題
(5)改變路由召边,重定向铺呵。
ICMP詢問(wèn)報(bào)文包括
(1)回送請(qǐng)求和回答報(bào)文
(2)時(shí)間戳請(qǐng)求和回答報(bào)文
(3)掩碼地址請(qǐng)求和回答報(bào)文
(4)路由器詢問(wèn)和通告報(bào)文
PING工作在應(yīng)用層,直接使用網(wǎng)絡(luò)層的ICMP協(xié)議的回送請(qǐng)求和回答報(bào)文隧熙,而沒(méi)有使用傳輸層的TCP或UDP協(xié)議
路由信息協(xié)議RIP(Routing Information Protocol)
分布式的基于距離-向量的路由選擇協(xié)議片挂,最大優(yōu)點(diǎn)實(shí)現(xiàn)簡(jiǎn)單、開(kāi)銷較小贞盯,只能適用于小型的互聯(lián)網(wǎng)絡(luò)
RIP規(guī)定
網(wǎng)絡(luò)中的每臺(tái)路由器都要維護(hù)從它自己到網(wǎng)絡(luò)中其他每個(gè)目標(biāo)網(wǎng)絡(luò)的距離紀(jì)錄
距離也稱為跳數(shù)音念,直接連接的網(wǎng)絡(luò)的跳數(shù)為0,每經(jīng)過(guò)一個(gè)路由器躏敢,跳數(shù)加1
一個(gè)好的路由就是通過(guò)的路由器的個(gè)數(shù)最小
一條從源主機(jī)到目的主機(jī)的路由最多只能包括15個(gè)路由器闷愤,因此跳數(shù)最大為16,表示網(wǎng)絡(luò)不可到達(dá)
默認(rèn)在任意兩臺(tái)使用RIP協(xié)議的路由器之間每隔30s廣播一次RIP的路由更新信息件余,以便自動(dòng)建立并維護(hù)路由表
RIP的特點(diǎn)
每個(gè)路由器僅和相鄰路由器交換信息
交換的信息是當(dāng)前路由器的路由表
按固定的時(shí)間間隔交換路由信息
路由器的組成和功能
路由器是一種具有多個(gè)輸入輸出接口的專用計(jì)算機(jī)肝谭,其任務(wù)是連接不同的網(wǎng)絡(luò)并完成路由轉(zhuǎn)發(fā),在多個(gè)邏輯網(wǎng)絡(luò)互聯(lián)時(shí)必須使用路由器蛾扇,路由器也作為最基礎(chǔ)的包過(guò)濾防火墻使用
當(dāng)源路由器要像目的主機(jī)發(fā)送數(shù)據(jù)報(bào)時(shí)攘烛,路由器先檢查目的主機(jī)是否和源主機(jī)在同一個(gè)網(wǎng)絡(luò)中。如果目的主機(jī)和源主機(jī)在同一個(gè)網(wǎng)絡(luò)上镀首,則直接交付而不同通過(guò)路由器坟漱,但如果目的主機(jī)和源主機(jī)不在同一個(gè)網(wǎng)絡(luò)上,則路由器按照路由表指出的路由將數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給下一個(gè)路由器更哄,稱為間接交付芋齿。
路由器在結(jié)構(gòu)上分為路由選擇和分組轉(zhuǎn)發(fā)兩個(gè)部分,從模型的角度看成翩,路由器是網(wǎng)絡(luò)層的設(shè)備觅捆,實(shí)現(xiàn)了網(wǎng)絡(luò)模型的下三層,即物理層麻敌,數(shù)據(jù)鏈路層栅炒,網(wǎng)絡(luò)層。
傳輸層
基本數(shù)據(jù)單元:報(bào)文
基本功能:
端到端的通信术羔,為運(yùn)行在不同主機(jī)上的進(jìn)程之間提供了邏輯通信赢赊,網(wǎng)絡(luò)層提供了主機(jī)之間的邏輯通信
復(fù)用和分用,發(fā)送方的不同應(yīng)用進(jìn)程都可以使用同一個(gè)傳輸層協(xié)議傳送數(shù)據(jù):分用指接收方的傳輸層在剝?nèi)?bào)文的首部后能夠把這些數(shù)據(jù)正確的交付給應(yīng)用進(jìn)程级历,與網(wǎng)絡(luò)層的復(fù)用分用不同释移,網(wǎng)絡(luò)層的復(fù)用是指發(fā)送方能夠?qū)⒉煌瑓f(xié)議的數(shù)據(jù)封裝為IP數(shù)據(jù)包發(fā)送出去,分用是指接收方的網(wǎng)絡(luò)層在剝?nèi)ナ撞亢蟀褦?shù)據(jù)交付給相應(yīng)的協(xié)議
對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)(網(wǎng)絡(luò)層只檢查IP數(shù)據(jù)報(bào)的首部寥殖,不檢驗(yàn)數(shù)據(jù)部分是否出錯(cuò))
提供兩種不同的傳輸協(xié)議玩讳,即面向連接的TCP和無(wú)連接的UDP(網(wǎng)絡(luò)層無(wú)法同時(shí)實(shí)現(xiàn)兩種協(xié)議)
傳輸層的尋址和端口:
端口號(hào)能夠讓?xiě)?yīng)用層的各種應(yīng)用進(jìn)程將其數(shù)據(jù)通過(guò)端口向下交付給傳輸層涩蜘,以及讓傳輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過(guò)端口交付給應(yīng)用層的相應(yīng)進(jìn)程,端口號(hào)并不是一一對(duì)應(yīng)的熏纯,只有通過(guò)IP地址和端口號(hào)才能唯一確定一個(gè)主機(jī)的一個(gè)應(yīng)用皱坛,稱為套接字(IP地址+端口號(hào))
基本協(xié)議:TCP/UDP協(xié)議
IP數(shù)據(jù)報(bào)和UDP數(shù)據(jù)報(bào)的區(qū)別是IP數(shù)據(jù)報(bào)在網(wǎng)絡(luò)層要經(jīng)過(guò)路由器的存儲(chǔ)轉(zhuǎn)發(fā),而UDP數(shù)據(jù)報(bào)是在傳輸層的端到端的邏輯信道中傳輸豆巨,在封裝成IP數(shù)據(jù)報(bào)在網(wǎng)絡(luò)層傳輸時(shí)剩辟,UDP數(shù)據(jù)報(bào)對(duì)路由器是不可見(jiàn)的
用戶數(shù)據(jù)報(bào)協(xié)議UDP(User Datagram Protocol)
只提供了兩個(gè)最基礎(chǔ)的功能,復(fù)用分用和差錯(cuò)檢測(cè)
無(wú)需建立連接往扔,也不會(huì)引入建立連接的時(shí)延(DNS追求速度使用UDP贩猎,HTTP追求可靠性使用TCP)
無(wú)連接狀態(tài),TCP需要在端系統(tǒng)中維護(hù)連接狀態(tài)萍膛,此鏈接狀態(tài)包括接收和發(fā)送緩存吭服,擁塞控制參數(shù)和序號(hào)和,確認(rèn)號(hào)的參數(shù)蝗罗,UDP不需要維護(hù)連接狀態(tài)艇棕,也不跟蹤這些參數(shù),因此某些專用應(yīng)用服務(wù)使用UDP時(shí)一般都能支持更多的活動(dòng)客戶機(jī)
分組首部開(kāi)銷小串塑,TCP需要20B沼琉,UDP需要8B
應(yīng)用層能更好的控制要發(fā)送的數(shù)據(jù)和發(fā)送時(shí)間,UDP沒(méi)有擁塞控制桩匪,因此網(wǎng)絡(luò)中擁塞不會(huì)影響主機(jī)的發(fā)送效率打瘪,流媒體、視頻會(huì)議等應(yīng)用要求穩(wěn)定的發(fā)送速度能容扔一定的數(shù)據(jù)丟失傻昙,但不容許有較大的時(shí)延闺骚,UDP正好滿足要求
UDP盡最大努力交付,不保證可靠交付妆档,不代表應(yīng)用對(duì)數(shù)據(jù)的要求是不可靠的僻爽,維護(hù)傳輸可靠性的工作需要用戶在應(yīng)用層完成
UDP是面向報(bào)文的,發(fā)送方對(duì)應(yīng)用層交下來(lái)的報(bào)文贾惦,在添加首部后就向下傳遞給IP層胸梆,既不合并也不拆分,而是保留這些報(bào)文的邊界纤虽,接收方對(duì)IP層傳遞的報(bào)文乳绕,在去除首部后就原封不動(dòng)的上傳給應(yīng)用進(jìn)程绞惦,一次交付一個(gè)完整的報(bào)文
傳輸控制協(xié)議TCP(Transmission Control Protocol )
TCP是在不可靠的IP層上實(shí)現(xiàn)可靠的數(shù)據(jù)傳輸協(xié)議逼纸,主要解決傳輸?shù)目煽俊⒂行蚣貌酢o(wú)丟失和不重復(fù)的問(wèn)題
TCP是面向連接的傳輸層協(xié)議
每條TCP連接只能有兩個(gè)端點(diǎn)杰刽,每條TCP連接只能是點(diǎn)對(duì)點(diǎn)的
TCP提供可靠的交付服務(wù)菠发,保證傳輸?shù)臒o(wú)差錯(cuò)、不丟失贺嫂、不重復(fù)且有序
TCP提供全雙工通信滓鸠,允許通信雙方的應(yīng)用進(jìn)程在任何時(shí)候都能發(fā)送數(shù)據(jù),因此TCP連接的兩端都設(shè)有發(fā)送緩存和接收緩存
TCP是面向字節(jié)流的第喳,雖然應(yīng)用程序和TCP的交互是一次一個(gè)數(shù)據(jù)塊糜俗,但TCP把應(yīng)用程序傳遞下來(lái)的數(shù)據(jù)看作一連串的無(wú)結(jié)構(gòu)字節(jié)流
Source Port和Destination Port代表目的和源端口。
Sequence Number代表報(bào)文段的序號(hào)來(lái)表示順序曲饱。Acknowledgment Number代表發(fā)送方作為接收方已接收的報(bào)文段悠抹,并且期望收到下個(gè)報(bào)文段的開(kāi)始序列號(hào)。TCP實(shí)際上將傳送數(shù)據(jù)看做成數(shù)據(jù)的字節(jié)流扩淀,而不是一個(gè)個(gè)單獨(dú)的報(bào)文段楔敌。這點(diǎn)從Sequence Number就可以看出,Sequence Number以傳送的字節(jié)數(shù)作為單位驻谆,而不以報(bào)文段的數(shù)量作為單位卵凑。
Data Offset作為對(duì)齊的空位,Reserved作為保留位胜臊。下面是重點(diǎn)Flag位勺卢。
Flag包括Urgent、Ack象对、Push值漫、Reset、Syn织盼、Fin這6位杨何。Urgent作為報(bào)文段的緊急數(shù)據(jù)標(biāo)識(shí),但具體如何處理交給接收方?jīng)Q定沥邻。Reset作為報(bào)文段的連接異常結(jié)束或端口號(hào)錯(cuò)誤的標(biāo)識(shí)危虱。而Ack確認(rèn)、Syn同步唐全、Fin結(jié)束在三次握手和四次揮手中作為關(guān)鍵標(biāo)識(shí)位埃跷。Push代表TCP不再等待是否還有其他報(bào)文段到達(dá),馬上交給上層應(yīng)用層邮利。
Window位作為流量控制的基礎(chǔ)弥雹,后面會(huì)更具體的聊。
Check Sum作為校驗(yàn)位延届,校驗(yàn)報(bào)文段是否在傳輸過(guò)程中受損剪勿。Urgent Pointer在Urgent位為1時(shí),才會(huì)出現(xiàn)方庭,指向緊急數(shù)據(jù)的最后一個(gè)字節(jié)厕吉。
Options常見(jiàn)的標(biāo)識(shí)有nop酱固、TS val(time stamp)、ecr(echo reply)头朱、mss运悲。nop標(biāo)識(shí)就和氣泡指令一個(gè)意思,就是占位的项钮。而TS val和ecr分別代表發(fā)送方的時(shí)間戳和接收方的時(shí)間戳班眯,基于這兩個(gè)時(shí)間戳來(lái)計(jì)算出RTT往返時(shí)間 (round-trip time) ,當(dāng)然還要加權(quán)平均烁巫,具體計(jì)算就不多說(shuō)了鳖敷,RTT會(huì)被用來(lái)衡量重傳計(jì)時(shí)器的超時(shí)時(shí)長(zhǎng)。mss(Maximum Segment Size)指的是程拭,連接層每次傳輸?shù)臄?shù)據(jù)有個(gè)最大限制MTU(Maximum Transmission Unit)定踱,一般是1500比特,超過(guò)這個(gè)量要分成多個(gè)報(bào)文段恃鞋,mss則是這個(gè)最大限制減去TCP的header崖媚,光是要傳輸?shù)臄?shù)據(jù)的大小,一般為1460比特恤浪。
TCP連接的建立采用客戶/服務(wù)器的方式畅哑,有三個(gè)階段:連接建立、數(shù)據(jù)傳送和連接釋放水由,TCP傳輸連接的建立采用“三次握手”的方法
TCP協(xié)議三次握手的描述如下:
第一次握手:客戶端發(fā)送帶有SYN標(biāo)志的連接請(qǐng)求報(bào)文段荠呐,然后進(jìn)入SYN_SEND狀態(tài),等待服務(wù)端的確認(rèn)砂客。
第二次握手:服務(wù)端接收到客戶端的SYN報(bào)文段后泥张,需要發(fā)送ACK信息對(duì)這個(gè)SYN報(bào)文段進(jìn)行確認(rèn)。同時(shí)鞠值,還要發(fā)送自己的SYN請(qǐng)求信息媚创。服務(wù)端會(huì)將上述的信息放到一個(gè)報(bào)文段(SYN+ACK報(bào)文段)中,一并發(fā)送給客戶端彤恶,此時(shí)服務(wù)端將會(huì)進(jìn)入SYN_RECV狀態(tài)钞钙。
第三次握手:客戶端接收到服務(wù)端的SYN+ACK報(bào)文段后,會(huì)向服務(wù)端發(fā)送ACK確認(rèn)報(bào)文段声离,這個(gè)報(bào)文段發(fā)送完畢后芒炼,客戶端和服務(wù)端都進(jìn)入ESTABLISHED狀態(tài),完成TCP三次握手术徊。
當(dāng)三次握手完成后本刽,TCP協(xié)議會(huì)為連接雙方維持連接狀態(tài)。為了保證數(shù)據(jù)傳輸成功,接收端在接收到數(shù)據(jù)包后必須發(fā)送ACK報(bào)文作為確認(rèn)盅安。如果在指定的時(shí)間內(nèi)(這個(gè)時(shí)間稱為重新發(fā)送超時(shí)時(shí)間)唤锉,發(fā)送端沒(méi)有接收到接收端的ACK報(bào)文世囊,那么就會(huì)重發(fā)超時(shí)的數(shù)據(jù)别瞭。
服務(wù)器端的資源是在完成第二次握手時(shí)分配的,而客戶端的資源是在完成第三次握手時(shí)分配的株憾,三次握手主要是為了防止2次握手的情況下蝙寨,已失效的連接請(qǐng)求報(bào)文突然又傳送到服務(wù)端,使服務(wù)端認(rèn)為傳輸鏈接已經(jīng)建立嗤瞎,并一直等待客戶端傳送數(shù)據(jù)墙歪,造成服務(wù)器端的資源浪費(fèi)
TCP連接的釋放采用“4次握手”方法
四次揮手,客戶端和服務(wù)端都可以發(fā)起贝奇。第一次發(fā)送方發(fā)送FIN為1虹菲、ACK為1,序列號(hào)為某序列號(hào)掉瞳,表示發(fā)送方想結(jié)束連接毕源。第二次接收方發(fā)送ACK為1,確認(rèn)號(hào)為接收序列號(hào)加1陕习,表示我還沒(méi)有準(zhǔn)備好結(jié)束連接霎褐。第三次接收方發(fā)送FIN為1、ACK為1该镣,序列號(hào)為某序列號(hào)冻璃,表示我已經(jīng)準(zhǔn)備好結(jié)束連接了。第四次發(fā)送方损合,發(fā)送ACK為1省艳,確認(rèn)號(hào)為所接收序列號(hào)加1,表示確認(rèn)嫁审,結(jié)束連接拍埠。
半關(guān)閉
在四次揮手的基礎(chǔ)上,發(fā)送方可以在接收第二次接收方發(fā)送ACK后土居,可以形成發(fā)送方不再發(fā)送報(bào)文段枣购,但仍然接收接收方發(fā)送的報(bào)文段的這種現(xiàn)象。這就形成了半關(guān)閉擦耀。
使用4次握手的方法
(1)保證了客戶端發(fā)送的最后一個(gè)確認(rèn)報(bào)文能夠到達(dá)服務(wù)器棉圈,如果客戶端不等待,而確認(rèn)報(bào)文丟失眷蜓,則服務(wù)器不能進(jìn)入正常的關(guān)閉狀態(tài)分瘾,而客戶端此時(shí)已經(jīng)關(guān)閉,不可能重傳確認(rèn)報(bào)文
(2)防止出現(xiàn)“已經(jīng)失效的連接請(qǐng)求報(bào)文段”吁系,客戶端在發(fā)送完最后一個(gè)確認(rèn)報(bào)文后德召,經(jīng)過(guò)時(shí)間等待白魂,可保證本連接持續(xù)的時(shí)間內(nèi)所產(chǎn)生的所有報(bào)文段從網(wǎng)絡(luò)消失
會(huì)話層
主機(jī)間會(huì)話的建立,管理以及終止,使用校驗(yàn)點(diǎn)可使通信會(huì)話在通信失效時(shí)從校驗(yàn)點(diǎn)恢復(fù)繼續(xù)通信,實(shí)現(xiàn)數(shù)據(jù)同步
表示層
管理數(shù)據(jù)的壓縮,加密與解密,格式轉(zhuǎn)換
應(yīng)用層
規(guī)定應(yīng)用進(jìn)程在通信時(shí)遵守的協(xié)議,有客戶/服務(wù)器模型和P2P模型
基本功能:為操作系統(tǒng)或者網(wǎng)絡(luò)應(yīng)用程序提供網(wǎng)絡(luò)服務(wù)的接口
基本協(xié)議:虛擬終端協(xié)議Telnet,文件傳輸協(xié)議FTP,域名解析服務(wù)DNS,簡(jiǎn)單郵件傳送協(xié)議SMTP(發(fā)送)上岗,郵局協(xié)議POP(接收),HTTP
常見(jiàn)的使用UDP的應(yīng)用層協(xié)議有:DNS福荸,TFTP,RIP肴掷,BOOTP敬锐,DHCP,SNMP呆瞻,NFS等台夺,使用TCP的應(yīng)用層協(xié)議有:SMTP,TELNET痴脾,HTTP颤介,F(xiàn)TP等
動(dòng)態(tài)主機(jī)配置協(xié)議DHCP(Dynamic Host Configuration Protocol)
基于UDP,使用客戶端/服務(wù)器方式赞赖,需要IP地址的主機(jī)在啟動(dòng)時(shí)向DHCP服務(wù)器廣播發(fā)送發(fā)現(xiàn)報(bào)文滚朵,該主機(jī)成為DHCP的客戶,本地網(wǎng)絡(luò)上的所有主機(jī)都能收到此廣播報(bào)文薯定,但只有DHCP服務(wù)器才能回答此廣播報(bào)文始绍。DHCP服務(wù)器首先在數(shù)據(jù)庫(kù)中查找該計(jì)算機(jī)的配置信息,若找到直接返回該信息话侄,若找不到則從服務(wù)器的IP地址池中取出一個(gè)IP地址分配該計(jì)算機(jī)亏推,DHCP服務(wù)器的回答報(bào)文稱為提供報(bào)文。
文件傳輸協(xié)議FTP(File Transfer Protocol)
使用兩個(gè)并行的TCP連接年堆,一個(gè)是控制連接(端口21)吞杭,一個(gè)是數(shù)據(jù)連接(端口20),控制連接用來(lái)傳輸控制信息变丧,在傳輸文件的同時(shí)可以控制連接芽狗,在整個(gè)會(huì)話期間一直保持打開(kāi),服務(wù)器端的控制進(jìn)程在接收到FTP客戶端發(fā)送來(lái)的文件傳輸請(qǐng)求后就創(chuàng)建數(shù)據(jù)傳送進(jìn)程和數(shù)據(jù)連接痒蓬,數(shù)據(jù)連接用來(lái)連接客戶端和服務(wù)器的數(shù)據(jù)傳輸進(jìn)程童擎,數(shù)據(jù)傳送進(jìn)程實(shí)際完成文件的傳送,傳輸完畢后關(guān)閉數(shù)據(jù)傳送連接
HTTP協(xié)議
HTTP的訪問(wèn)過(guò)程
瀏覽器分析超鏈接指向頁(yè)面的URL http://www.baidu.com
瀏覽器向DNS服務(wù)器請(qǐng)求解析www.baidu.com的IP地址
域名系統(tǒng)DNS解析出IP地址發(fā)送給瀏覽器
瀏覽器使用IP地址與服務(wù)器建立TCP連接
瀏覽器發(fā)出HTTP請(qǐng)求:GET/chinese/index.htm
服務(wù)器通過(guò)HTTP響應(yīng)把文件index.htm返回給瀏覽器
TCP連接釋放
瀏覽器將文件index.htm進(jìn)行解釋攻晒,并將web頁(yè)面顯示給用戶
HTTP協(xié)議有兩類報(bào)文顾复,請(qǐng)求報(bào)文和響應(yīng)報(bào)文,HTTP協(xié)議是無(wú)狀態(tài)的鲁捏,服務(wù)器不會(huì)存儲(chǔ)任何客戶機(jī)的狀態(tài)信息芯砸,實(shí)際應(yīng)用中經(jīng)常使用Cookies來(lái)跟蹤用戶的活動(dòng),Cookies是一個(gè)存儲(chǔ)在用戶主機(jī)上的文本文件,假丧,里面含有一串識(shí)別碼用于識(shí)別用戶双揪,Web服務(wù)器根據(jù)Cookies就可以從數(shù)據(jù)庫(kù)中查詢到該用戶的活動(dòng)記錄。
HTTP既可以使用非持久連接包帚,也可以使用持久連接渔期。
對(duì)于非持久連接,每個(gè)網(wǎng)頁(yè)元素(JFPG圖片婴噩,F(xiàn)LASH等)的傳輸都需要單獨(dú)建立一個(gè)TCP連接擎场,而持久連接之需要建立一個(gè)TCP連接就可以傳送整個(gè)網(wǎng)頁(yè)羽德。
持久連接分為不帶流水線和帶流水線的版本几莽,不帶流水線的版本,瀏覽器只能在接收到前一個(gè)請(qǐng)求的響應(yīng)后才會(huì)發(fā)送新的請(qǐng)求宅静,HTTP/1.1的默認(rèn)模式使用帶流水線的持久連接章蚣,這種情況下,HTTP客戶端每遇到一個(gè)引用對(duì)象就立即發(fā)出一個(gè)請(qǐng)求姨夹,因而HTTP客戶端可以一個(gè)接一個(gè)連續(xù)發(fā)出各個(gè)引用對(duì)象的請(qǐng)求纤垂。如果所有的請(qǐng)求和響應(yīng)都是連續(xù)發(fā)送的,那么所有引用到的對(duì)象共計(jì)經(jīng)歷一個(gè)RTT延遲磷账,而不帶流水線的持久連接的每個(gè)引用都必須有一個(gè)RTT延遲峭沦。
HTTP的報(bào)文
請(qǐng)求行/狀態(tài)行
請(qǐng)求報(bào)文的開(kāi)始行稱為請(qǐng)求行(方法,URL逃糟,HTTP的版本)
GET 請(qǐng)求讀取由URL所標(biāo)志的信息
POST 給服務(wù)器添加信息
HEAD 請(qǐng)求讀取由URL所標(biāo)志的信息的首部
CONNECT 用于代理服務(wù)器
響應(yīng)報(bào)文的開(kāi)始行稱為狀態(tài)行
首部行
用來(lái)說(shuō)明瀏覽器吼鱼、服務(wù)器或者報(bào)文主體的一些信息,可以有幾行绰咽,也可以沒(méi)有菇肃,每個(gè)首部行都有首部字段名和它的值,每一行結(jié)束的地方都有回車和換行取募,整個(gè)首部結(jié)束時(shí)琐谤,還有一空行將首部和后面的實(shí)體主體分開(kāi)
實(shí)體主體
請(qǐng)求報(bào)文一般為空,響應(yīng)報(bào)文也可以為空