歡迎關(guān)注我的微信公眾號:CurryCoder的程序人生
0.互聯(lián)網(wǎng)的組成
- 邊緣部分:所有連接在互聯(lián)網(wǎng)上的主機(主機指的是所有與網(wǎng)絡(luò)直接相連的計算機)組成屏富,用戶可以直接使用,用來進行主機之間的通信和資源共享政基。
- 核心部分:大量的網(wǎng)絡(luò)與連接這些網(wǎng)絡(luò)所使用的路由器構(gòu)成示辈,為邊緣部分提供服務(wù)凑兰。
- 邊緣部分總結(jié)
- 邊緣部分主要使用核心部分所提供的服務(wù)掌桩,使得許多主機之間能夠互相通信并進行交換或共享信息。計算機之間的通信指的是主機A上的一個進程與主機B上的另一個進程之間進行通信姑食。通信的方式主要有兩種:
- 客戶-服務(wù)器方式:即C /S方式波岛。客戶端發(fā)送服務(wù)的請求音半,服務(wù)器是服務(wù)的提供方则拷。
- P2P:對等連接方式。兩臺通信的主機之間不區(qū)分哪個是客戶曹鸠,哪個是服務(wù)端煌茬,只要兩臺主機都運行了對等連接軟件就可以進行平等、對等的連接通信彻桃。
- 邊緣部分主要使用核心部分所提供的服務(wù)掌桩,使得許多主機之間能夠互相通信并進行交換或共享信息。計算機之間的通信指的是主機A上的一個進程與主機B上的另一個進程之間進行通信姑食。通信的方式主要有兩種:
- 核心部分總結(jié)
- 核心部分起到特殊作用的是路由器坛善,它是一個專用的計算機,主要作用是分組交換和存儲轉(zhuǎn)發(fā)的功能。
- 電路交換:使用在電話機之間的通信眠屎,使用電話交換機解決了多個電話機之間通信需要大量的電線的問題剔交。電路交換的過程是:建立連接(開始占用通信資源)---通話(一直占用通信資源)----釋放連接(歸還通信資源)。電路交換的特點是:通話期間改衩,通話的兩個用戶會始終占用通信資源岖常。使用電路交換傳輸計算機數(shù)據(jù)時,傳輸效率往往會很低燎字。因為計算機數(shù)據(jù)具有突變式的特點,線路上真正用來傳輸數(shù)據(jù)的時間往往不到10%,大部分通信線路資源絕大部分時間都被浪費了阿宅。整個報文的比特流連續(xù)的從源點直達終點
- 分組交換:采用存儲轉(zhuǎn)發(fā)的技術(shù)候衍,把一個報文(需要發(fā)生出去的整塊數(shù)據(jù))劃分成幾組分組后再進行傳輸。將報文劃分成更小的等長數(shù)據(jù)段洒放,然后加上首部(包含一些控制信息)蛉鹿,構(gòu)成了一個分組,分組的首部稱為一個包頭往湿。單個分組(只是整個報文的一部分)傳送到相鄰結(jié)點妖异,存儲下來后查找轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)到下一個結(jié)點领追。
- 報文交換:整個報文先傳送到相鄰結(jié)點他膳,全部存儲下來后查找轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)到下一個結(jié)點绒窑。
- 路由器的工作流程:路由器接收到一個分組后棕孙,暫存數(shù)據(jù)到路由器自己的緩存中即自身的存儲器中,然后檢查其首部些膨,查找轉(zhuǎn)發(fā)表蟀俊。按照首部中的目的地址,找到合適的接口轉(zhuǎn)發(fā)除去订雾,把分組交給下一個路由器肢预。這樣一步一步以存儲轉(zhuǎn)發(fā)的方式,把分組交給最終的目的主機洼哎。路由器只是暫存一個分組烫映,不是整個報文。分組在哪段鏈路上傳送時才會占用此段鏈路上的通信資源噩峦,在各分組傳輸之間的空閑時間窑邦,此鏈路也是可以被其他主機發(fā)送的分組使用。
- 核心部分起到特殊作用的是路由器坛善,它是一個專用的計算機,主要作用是分組交換和存儲轉(zhuǎn)發(fā)的功能。
計算機網(wǎng)絡(luò)中的常見硬件設(shè)備介紹:
- 物理層:實現(xiàn)網(wǎng)絡(luò)互連的主要設(shè)備有中繼器和HUB(集線器)壕探。中繼器的主要功能是對接收到的信號進行再生整形放大以擴大網(wǎng)絡(luò)的傳輸距離冈钦;集線器在此基礎(chǔ)上將所有的節(jié)點集中在以它為中心的節(jié)點中,可組成星型拓撲結(jié)構(gòu)李请。
- 數(shù)據(jù)鏈路層:實現(xiàn)網(wǎng)絡(luò)互聯(lián)的主要設(shè)備有二層交換機和網(wǎng)橋瞧筛。交換機是一種基于MAC識別厉熟,能完成封裝轉(zhuǎn)發(fā)數(shù)據(jù)包功能的網(wǎng)絡(luò)設(shè)備。它可以“學(xué)習(xí)”MAC地址较幌,并把其存放在內(nèi)部地址表中揍瑟,當(dāng)一個數(shù)據(jù)幀的目的地址在MAC地址表中有映射時,它被轉(zhuǎn)發(fā)到連接目的節(jié)點的端口而不是所有端口乍炉。 交換機將局域網(wǎng)分為多個沖突域绢片,每個沖突域都是有獨立的寬帶,因此大大提高了局域網(wǎng)的帶寬岛琼。網(wǎng)橋是數(shù)據(jù)鏈路層互聯(lián)的設(shè)備底循,在網(wǎng)絡(luò)互聯(lián)中可起到數(shù)據(jù)接收、地址過濾與數(shù)據(jù)轉(zhuǎn)發(fā)的作用槐瑞,可用來實現(xiàn)多個不同網(wǎng)絡(luò)系統(tǒng)之間的數(shù)據(jù)交換熙涤。
- 網(wǎng)絡(luò)層:實現(xiàn)網(wǎng)絡(luò)互連的主要設(shè)備有三層交換機和路由器。路由器用于連接多個邏輯上分開的網(wǎng)絡(luò)困檩,具有判斷網(wǎng)絡(luò)地址和選擇IP路徑的功能祠挫,它能在多網(wǎng)絡(luò)互聯(lián)環(huán)境中,建立靈活的連接悼沿,可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問方法連接各種子網(wǎng)等舔。
- 傳輸層(包括傳輸層)以上:實現(xiàn)網(wǎng)絡(luò)互連的設(shè)備有網(wǎng)關(guān)。網(wǎng)關(guān)在網(wǎng)絡(luò)層以上實現(xiàn)網(wǎng)絡(luò)互連糟趾,用于兩個高層協(xié)議不同的網(wǎng)絡(luò)互連软瞎。與網(wǎng)橋只是簡單地傳達信息不同,網(wǎng)關(guān)對收到的信息要重新打包拉讯,以適應(yīng)目的系統(tǒng)的需求涤浇。
1.計算機網(wǎng)絡(luò)體系結(jié)構(gòu)
- 應(yīng)用層:應(yīng)用層是體系結(jié)構(gòu)中的最高層。應(yīng)用層直接為用戶的應(yīng)用進程程序提供服務(wù)魔慷。這里的進程就是指正在運行的程序只锭。在因特網(wǎng)中的應(yīng)用層協(xié)議很多,如支持萬維網(wǎng)應(yīng)用的http協(xié)議支持電子郵件的SMTP協(xié)議院尔,支持文件傳送的FTP協(xié)議等蜻展。
-
運輸層:運輸層的任務(wù)就是負責(zé)向兩個主機中進程之間的通信提供服務(wù)。由于一個主機可以同時運行多個進程邀摆,因此運輸層有復(fù)用和分用的功能纵顾。復(fù)用就是多個應(yīng)用層進程可以同時使用下面運輸層的服務(wù),分用就是運輸層把收到的信息分別交付給上面應(yīng)用層中的相應(yīng)進程栋盹。
- 運輸層主要使用下面兩個協(xié)議:
- 傳輸控制協(xié)議TCP:面向連接的施逾,數(shù)據(jù)傳輸?shù)幕締挝皇菆笪亩危軌蛱峁┛煽康慕桓?/li>
- 用戶數(shù)據(jù)包協(xié)議UDP:無連接的,數(shù)據(jù)傳輸?shù)幕締挝皇怯脩魯?shù)據(jù)報汉额,不能保證提供可靠的交付曹仗,只能提供盡最大努力交付。
- 運輸層主要使用下面兩個協(xié)議:
- 網(wǎng)絡(luò)層: 負責(zé)為分組交換網(wǎng)上的不同主機提供通信服務(wù)蠕搜。在發(fā)送數(shù)據(jù)時怎茫,網(wǎng)絡(luò)層把運輸層產(chǎn)生的報文段或用戶數(shù)據(jù)報封裝成分組或包進行傳送。在TCP/IP體系中妓灌,由于網(wǎng)絡(luò)層使用IP協(xié)議轨蛤,因此分組也叫作IP數(shù)據(jù)報。
- 數(shù)據(jù)鏈路層:兩個主機之間的數(shù)據(jù)傳輸虫埂,總是在一段一段的鏈路上傳送的祥山。在兩個相鄰結(jié)點之間傳送數(shù)據(jù)時,數(shù)據(jù)鏈路層將網(wǎng)絡(luò)層交下來的IP數(shù)據(jù)報組裝成幀告丢,在兩個相鄰結(jié)點間的鏈路上透明地傳送幀中的數(shù)據(jù)枪蘑,每一幀包括數(shù)據(jù)和必要的控制信息损谦。
- 物理層:在物理層上傳送的數(shù)據(jù)單位是比特岖免。物理層的任務(wù)就是透明地傳送比特流。
2.各層的作用和支持的協(xié)議
3.物理層
- 傳輸數(shù)據(jù)的基本單位:比特流0和1
- 數(shù)據(jù)傳輸系統(tǒng):源系統(tǒng)(源點照捡、發(fā)送器) --> 傳輸系統(tǒng) --> 目的系統(tǒng)(接收器颅湘、終點)
- 通道:
- 單向通道(單工通道):只有一個方向通信,沒有反方向交互栗精,如廣播
- 雙向交替通信(半雙工通信):通信雙方都可發(fā)消息闯参,但不能同時發(fā)送或接收
- 雙向同時通信(全雙工通信):通信雙方可以同時發(fā)送和接收信息
- 通道復(fù)用技術(shù):
- 頻分復(fù)用(FDM,F(xiàn)requency Division Multiplexing):不同用戶在不同頻帶悲立,所用用戶在同樣時間占用不同帶寬資源
- 時分復(fù)用(TDM鹿寨,Time Division Multiplexing):不同用戶在同一時間段的不同時間片,所有用戶在不同時間占用同樣的頻帶寬度
- 波分復(fù)用(WDM薪夕,Wavelength Division Multiplexing):光的頻分復(fù)用
- 碼分復(fù)用(CDM脚草,Code Division Multiplexing):不同用戶使用不同的碼,可以在同樣時間使用同樣頻帶通信
4.數(shù)據(jù)鏈路層
- 主要信道:
- 點對點信道
- 廣播信道
- 點對點信道:
- 數(shù)據(jù)單元:幀
- 三個基本問題:
- 封裝成幀:把網(wǎng)絡(luò)層的 IP 數(shù)據(jù)報封裝成幀原献,SOH - 數(shù)據(jù)部分 - EOT
- 透明傳輸:不管數(shù)據(jù)部分什么字符馏慨,都能傳輸出去;可以通過字節(jié)填充方法解決(沖突字符前加轉(zhuǎn)義字符)
- 差錯檢測:降低誤碼率(BER姑隅,Bit Error Rate)写隶,廣泛使用循環(huán)冗余檢測(CRC,Cyclic Redundancy Check)
- 點對點協(xié)議(Point-to-Point Protocol):用戶計算機和 ISP 通信時所使用的協(xié)議
- 廣播信道:
- 硬件地址(物理地址讲仰、MAC 地址)
- 單播(unicast)幀(一對一):收到的幀的 MAC 地址與本站的硬件地址相同
- 廣播(broadcast)幀(一對全體):發(fā)送給本局域網(wǎng)上所有站點的幀
- 多播(multicast)幀(一對多):發(fā)送給本局域網(wǎng)上一部分站點的幀
5.網(wǎng)絡(luò)層
- IP(Internet Protocol慕趴,網(wǎng)際協(xié)議)是為計算機網(wǎng)絡(luò)相互連接進行通信而設(shè)計的協(xié)議。
- ARP(Address Resolution Protocol,地址解析協(xié)議)
- ICMP(Internet Control Message Protocol秩贰,網(wǎng)際控制報文協(xié)議)
- IGMP(Internet Group Management Protocol霹俺,網(wǎng)際組管理協(xié)議)
5.1 IP網(wǎng)際協(xié)議
- IP地址({<網(wǎng)絡(luò)號>,<主機號>})分類:
-
IP數(shù)據(jù)報格式:
5.2 ICMP網(wǎng)際控制報文協(xié)議
-
ICMP報文格式:
- 應(yīng)用:
- PING(Packet InterNet Groper,分組網(wǎng)間探測)測試兩個主機之間的連通性
- TTL(Time To Live毒费,生存時間)該字段指定 IP 包被路由器丟棄之前允許通過的最大網(wǎng)段數(shù)量
5.3 內(nèi)部網(wǎng)關(guān)協(xié)議
- RIP(Routing Information Protocol丙唧,路由信息協(xié)議)
- OSPF(Open Sortest Path First,開放最短路徑優(yōu)先)
5.4 外部網(wǎng)關(guān)協(xié)議
- BGP(Border Gateway Protocol觅玻,邊界網(wǎng)關(guān)協(xié)議)
5.5 IP多播
- IGMP(Internet Group Management Protocol想际,網(wǎng)際組管理協(xié)議)
- 多播路由選擇協(xié)議
5.6 VPN和NAT
- VPN(Virtual Private Network,虛擬專用網(wǎng))
- NAT(Network Address Translation溪厘,網(wǎng)絡(luò)地址轉(zhuǎn)換)
5.7 路由表包含什么胡本?
- 網(wǎng)絡(luò) ID(Network ID, Network number):就是目標(biāo)地址的網(wǎng)絡(luò) ID。
- 子網(wǎng)掩碼(subnet mask):用來判斷 IP 所屬哪個子網(wǎng)絡(luò)
- 下一跳地址/接口(Next hop / interface):就是數(shù)據(jù)在發(fā)送到目標(biāo)地址的旅途中下一站的地址畸悬。其中 interface 指向 next hop(即為下一個 route)侧甫。一個自治系統(tǒng)(AS, Autonomous system)中的 route 應(yīng)該包含區(qū)域內(nèi)所有的子網(wǎng)絡(luò)移剪,而默認網(wǎng)關(guān)(Network id: 0.0.0.0, Netmask: 0.0.0.0)指向自治系統(tǒng)的出口诺核。
- 根據(jù)應(yīng)用和執(zhí)行的不同,路由表可能含有如下附加信息:
- 花費(Cost):就是數(shù)據(jù)發(fā)送過程中通過路徑所需要的花費
- 路由的服務(wù)質(zhì)量
- 路由中需要過濾的出/入連接列表
6.傳輸層
- 支持的協(xié)議:
- TCP(Transmission Control Protocol从藤,傳輸控制協(xié)議)
- UDP(User Datagram Protocol冷冗,用戶數(shù)據(jù)報協(xié)議)
-
端口號:
6.1 TCP(Transmission Control Protocol守屉,傳輸控制協(xié)議)
- TCP是一種面向連接的、可靠的蒿辙、基于字節(jié)流的傳輸層通信協(xié)議拇泛,其傳輸?shù)膯挝皇菆笪亩巍?/li>
- 特征:
- 面向連接
- 只能點對點(一對一)通信
- 可靠交互
- 全雙工通信
- 面向字節(jié)流
- TCP如何保證可靠傳輸?
- 確認和超時重傳
- 數(shù)據(jù)合理分片和排序
- 流量控制
- 擁塞控制
- 數(shù)據(jù)校驗
-
TCP報文結(jié)構(gòu)
-
TCP首部
- TCP:狀態(tài)控制碼(Code思灌,Control Flag)俺叭,占 6 比特,含義如下:
- URG:緊急比特(urgent)泰偿,當(dāng) URG=1 時熄守,表明緊急指針字段有效,代表該封包為緊急封包甜奄。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù)柠横,應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級的數(shù)據(jù)), 且上圖中的 Urgent Pointer 字段也會被啟用课兄。
- ACK:確認比特(Acknowledge)牍氛。只有當(dāng) ACK=1 時確認號字段才有效,代表這個封包為確認封包烟阐。當(dāng) ACK=0 時搬俊,確認號無效紊扬。
- PSH:(Push function)若為 1 時,代表要求對方立即傳送緩沖區(qū)內(nèi)的其他對應(yīng)封包唉擂,而無需等緩沖滿了才送餐屎。
- RST:復(fù)位比特(Reset),當(dāng) RST=1 時玩祟,表明 TCP 連接中出現(xiàn)嚴重差錯(如由于主機崩潰或其他原因)腹缩,必須釋放連接,然后再重新建立運輸連接空扎。
- SYN:同步比特(Synchronous)藏鹊,SYN 置為 1,就表示這是一個連接請求或連接接受報文转锈,通常帶有 SYN 標(biāo)志的封包表示『主動』要連接到對方的意思盘寡。
- FIN:終止比特(Final),用來釋放一個連接撮慨。當(dāng) FIN=1 時竿痰,表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放傳輸連接砌溺。
6. 2 UDP(User Datagram Protocol影涉,用戶數(shù)據(jù)報協(xié)議)
- UDP是 OSI(Open System Interconnection 開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)抚吠,其傳輸?shù)膯挝皇怯脩魯?shù)據(jù)報常潮。
- 特征:
- 無連接
- 盡最大努力交付
- 面向報文
- 沒有擁塞控制
- 支持一對一弟胀、一對多楷力、多對多的交互通信
- 首部開銷小
-
UDP報文結(jié)構(gòu)
-
UDP首部
6.3 TCP與UDP的區(qū)別
- TCP面向連接、UDP是無連接的孵户;
- TCP提供可靠的服務(wù)萧朝、也就是說,通過TCP連接傳輸?shù)臄?shù)據(jù)是無差錯夏哭、不丟失检柬、不重復(fù)且按序到達;UDP盡最大努力交付竖配,即不保證可靠交付
- TCP的邏輯通信信息是全雙工的可靠信息何址;UDP則是不可靠信息
- 每一條TCP連接只能是點對點的;UDP支持一對多进胯、多對一用爪、多對多的交互通信
- TCP面向字節(jié)流(可能會出現(xiàn)黏包問題),實際上是TCP白數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流胁镐;UDP是面向報文的(不會出現(xiàn)黏包問題)
- UDP沒有擁塞控制偎血,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應(yīng)用很有用诸衔,如IP電話,實時視頻會議等)
- TCP首部開銷20字節(jié)颇玷;UDP的首部開銷小笨农,只有8字節(jié)
6.4 TCP的黏包問題
- 出現(xiàn)黏包問題的原因:TCP 是一個基于字節(jié)流的傳輸服務(wù)(UDP 基于報文的),“流” 意味著 TCP 所傳輸?shù)臄?shù)據(jù)是沒有邊界的帖渠,所以可能會出現(xiàn)兩個數(shù)據(jù)包黏在一起的情況谒亦。
- 解決方法:
- 發(fā)送定長包。如果每個消息的大小都是一樣的空郊,那么在接收對等方只要累計接收數(shù)據(jù)诊霹,直到數(shù)據(jù)等于一個定長的數(shù)值就將它作為一個消息。
- 包頭加上包體長度渣淳。包頭是定長的 4 個字節(jié)脾还,說明了包體的長度。接收對等方先接收包頭長度入愧,依據(jù)包頭長度來接收包體鄙漏。
- 在數(shù)據(jù)包之間設(shè)置邊界,如添加特殊符號 \r\n 標(biāo)記棺蛛。FTP 協(xié)議正是這么做的怔蚌。但問題在于如果數(shù)據(jù)正文中也含有 \r\n,則會誤判為消息的邊界旁赊。
- 使用更加復(fù)雜的應(yīng)用層協(xié)議
6.5 TCP流量控制
- 概念:流量控制(flow control)就是讓發(fā)送方的發(fā)送速率不要太快桦踊,要讓接收方來得及接收。
-
方法:利用可變窗口進行流量控制
6.6 TCP擁塞控制
- 概念:擁塞控制就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中终畅,可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載籍胯。
- 解決方法:
- 慢啟動( slow-start )
- 擁塞避免( congestion avoidance )
- 快重傳( fast retransmit )
-
快恢復(fù)( fast recovery )
6.7 TCP傳輸連接管理(重點)
-
一.TCP建立連接:三次握手
- TCP 建立連接全過程解釋:
- 1.客戶端發(fā)生SYN給服務(wù)器,表示客戶端向服務(wù)器請求建立連接离福;
- 2.服務(wù)端收到客戶端的SYN杖狼,并回復(fù)SYN+ACK給客戶端(同意建立連接);
- 3.客戶端收到來自服務(wù)器的SYN+ACK后妖爷,回復(fù)ACK給服務(wù)端(表示客戶端收到了服務(wù)端發(fā)的同意報文)蝶涩;
- 4.服務(wù)端收到客戶端的ACK,連接已建立絮识,可以進行數(shù)據(jù)傳輸绿聘。
- 建立連接的詳細過程:
- a.B的TCP服務(wù)器進程首先創(chuàng)建傳輸控制塊TCB,準(zhǔn)備接受客戶進程的連接請求。然后服務(wù)器進程就處于LISTEN(收聽)狀態(tài)次舌,等待客戶的連接請求熄攘。如有,就做出響應(yīng)垃它。
- b.A的TCP客戶進程也是首先創(chuàng)建傳輸控制模塊TCB鲜屏,然后向B發(fā)出連接請求報文段烹看,這時首部中的同步位SYN=1,同時選擇一個初始序號seq=x洛史。TCP規(guī)定惯殊,SYN報文段(即SYN=1的報文段)不能攜帶數(shù)據(jù),但是要消耗一個序號也殖。這時土思,TCP客戶進程進入SYN-SENT(同步已發(fā)送)狀態(tài)。
- c.B收到連接請求報文段后忆嗜,如同意建立連接己儒,則向A發(fā)送確認。在確認報文段中應(yīng)把SYN和ACK位都置1捆毫,確認號是ack=x+1,同時也為自己選擇一個初始序號seq=y闪湾。注意:這個報文段也不能攜帶數(shù)據(jù),但同樣要消耗一個序號绩卤。這時TCP服務(wù)器進程進入SYN-RECV(同步收到)狀態(tài)途样。
- d.TCP客戶進程收到B的確認后,還要向B給出確認濒憋。確認報文段的ACK置1何暇,確認號ack=y+1,而自己的序號seq=x+1凛驮。TCP標(biāo)準(zhǔn)規(guī)定裆站,ACK報文段可以攜帶數(shù)據(jù)。但如果不攜帶數(shù)據(jù)則不消耗序號黔夭。在這種情況下宏胯,下一個數(shù)據(jù)報文段的序號仍然是seq=x+1。這時纠修,TCP的連接已經(jīng)建立胳嘲,A進入ESTABLISHED(已建立連接)狀態(tài)厂僧。當(dāng)B接收到A的確認后扣草,B也進入ESTABLISHED(已建立連接)狀態(tài)。
- Q1:TCP為什么要進行三次握手颜屠?
- 因為信道不可靠辰妙,而 TCP 想在不可靠信道上建立可靠地傳輸,那么三次通信是理論上的最小值甫窟。(而 UDP 則不需建立可靠傳輸密浑,因此 UDP 不需要三次握手)
- 因為雙方都需要確認對方收到了自己發(fā)送的序列號,確認過程最少要進行三次通信
- 為了防止已失效的連接請求報文段突然又傳送到了服務(wù)端粗井,因而產(chǎn)生錯誤
-
二.TCP斷開連接:四次揮手
- TCP 斷開連接全過程解釋:
- 1.客戶端發(fā)送 FIN 給服務(wù)器尔破,說明客戶端不必發(fā)送數(shù)據(jù)給服務(wù)器了(請求釋放從客戶端到服務(wù)器的連接)街图;
- 2.服務(wù)器接收到客戶端發(fā)的 FIN,并回復(fù) ACK 給客戶端(同意釋放從客戶端到服務(wù)器的連接)懒构;
- 3.客戶端收到服務(wù)端回復(fù)的 ACK餐济,此時從客戶端到服務(wù)器的連接已釋放(但服務(wù)端到客戶端的連接還未釋放,并且客戶端還可以接收數(shù)據(jù))胆剧;
- 4.服務(wù)端繼續(xù)發(fā)送之前沒發(fā)完的數(shù)據(jù)給客戶端絮姆;
- 5.服務(wù)端發(fā)送 FIN+ACK 給客戶端,說明服務(wù)端發(fā)送完了數(shù)據(jù)(請求釋放從服務(wù)端到客戶端的連接秩霍,就算沒收到客戶端的回復(fù)篙悯,過段時間也會自動釋放);
- 6.服務(wù)端發(fā)送 FIN+ACK 給客戶端铃绒,說明服務(wù)端發(fā)送完了數(shù)據(jù)(請求釋放從服務(wù)端到客戶端的連接鸽照,就算沒收到客戶端的回復(fù),過段時間也會自動釋放)颠悬;
- 7.服務(wù)端收到客戶端的 ACK 后移宅,斷開從服務(wù)端到客戶端的連接
- 釋放連接的詳細過程:
- a.A和B都處于ESTABLISHED狀態(tài),A的應(yīng)用進程首先向其TCP發(fā)出連接釋放報文段椿疗,并停止再發(fā)送數(shù)據(jù)漏峰,主動關(guān)閉TCP連接。A把連接釋放報文段首部的FIN置1届榄,其序列號seq=u浅乔,它等于前面已經(jīng)傳送過的數(shù)據(jù)的最后一個字節(jié)的序號加1。這時铝条,A進入FIN-WAIT-1(終止等待1)狀態(tài)靖苇,等待B的確認。注意:TCP規(guī)定:FIN報文段即使不攜帶數(shù)據(jù)班缰,它也會消耗一個序號贤壁。
- b.B收到連接釋放報文段后即發(fā)出確認,確認號是ack=u+1埠忘,而這個報文段自己的序號是v脾拆,等待B前面已經(jīng)傳送過的數(shù)據(jù)的最后一個字節(jié)的序號加1。然后B就進入CLOSE-WAIT(關(guān)閉等待)狀態(tài)莹妒。TCP服務(wù)器進程這時應(yīng)通知高層應(yīng)用進程名船,因而從A到B這個方向的連接就釋放了,這時的TCP連接處于半關(guān)閉狀態(tài)旨怠,即A已經(jīng)沒有數(shù)據(jù)要發(fā)送了渠驼,但B若發(fā)送數(shù)據(jù),A仍要接收鉴腻。也就是說迷扇,從B到A這個方向的連接并沒有關(guān)閉百揭,這個連接可能會持續(xù)一段時間。
- c.A收到來自B的確認后蜓席,就進入FIN-WAIT-2(終止等待2)狀態(tài)信峻,等待B發(fā)出的連接釋放報文段。如果B已經(jīng)沒有要向A發(fā)送的數(shù)據(jù)瓮床,其應(yīng)用進程就會通知TCP釋放連接盹舞。這時B發(fā)出的連接釋放報文段必須使FIN=1。現(xiàn)假定B的序號為w(在半關(guān)閉狀態(tài)B可能又發(fā)送了一些數(shù)據(jù))隘庄。B還必須重復(fù)上次已經(jīng)發(fā)送過的確認號ack=u+1踢步。這時,B就進入LAST-ACK(最后確認狀態(tài))丑掺,等待A的確認获印。
- d.A在收到B的釋放連接報文段后,必須對此發(fā)出一個確認街州。在確認報文段中把ACK置1兼丰,確認號ack=w+1,而自己的序號是seq=u+1(根據(jù)TCP標(biāo)準(zhǔn)唆缴,前面發(fā)送過的FIN報文段要消耗一個序號)鳍征。然后經(jīng)過時間等待計時器(TIME-WAIT)設(shè)置的時間2MSL后,A才進入到CLOSED狀態(tài)面徽。時間MSL叫做最長報文段壽命
- Q2:TCP 為什么要進行四次揮手艳丛?
- 因為 TCP 是全雙工模式,客戶端請求關(guān)閉連接后趟紊,客戶端向服務(wù)端的連接關(guān)閉(一二次揮手)氮双,服務(wù)端繼續(xù)傳輸之前沒傳完的數(shù)據(jù)給客戶端(數(shù)據(jù)傳輸),服務(wù)端向客戶端的連接關(guān)閉(三四次揮手)霎匈。所以 TCP 釋放連接時服務(wù)器的 ACK 和 FIN 是分開發(fā)送的(中間隔著數(shù)據(jù)傳輸)戴差,而 TCP 建立連接時服務(wù)器的 ACK 和 SYN 是一起發(fā)送的(第二次握手),所以 TCP 建立連接需要三次铛嘱,而釋放連接則需要四次暖释。
- Q3:為什么 TCP 建立連接時可以 ACK 和 SYN 一起發(fā)送,而斷開連接時則 ACK 和 FIN 分開發(fā)送呢弄痹?(ACK 和 FIN 分開是指第二次和第三次揮手)
- 因為客戶端請求釋放時饭入,服務(wù)器可能還有數(shù)據(jù)需要傳輸給客戶端,因此服務(wù)端要先響應(yīng)客戶端 FIN 請求(服務(wù)端發(fā)送 ACK)肛真,然后數(shù)據(jù)傳輸,傳輸完成后爽航,服務(wù)端再提出 FIN 請求(服務(wù)端發(fā)送 FIN)蚓让;而連接時則沒有中間的數(shù)據(jù)傳輸乾忱,因此連接時可以 ACK 和 SYN 一起發(fā)送。
- Q4:為什么客戶端斷開連接時历极,最后需要 TIME-WAIT 等待 2MSL 呢窄瘟?
- 1.為了保證客戶端發(fā)送的最后一個 ACK 報文能夠到達服務(wù)端。若未成功到達趟卸,則服務(wù)端超時重傳 FIN+ACK 報文段蹄葱,客戶端再重傳 ACK,并重新計時锄列。
- 2.防止已失效的連接請求報文段出現(xiàn)在本連接中图云。TIME-WAIT 持續(xù) 2MSL 可使本連接持續(xù)的時間內(nèi)所產(chǎn)生的所有報文段都從網(wǎng)絡(luò)中消失,這樣可使下次連接中不會出現(xiàn)舊的連接報文段邻邮。
6.8 TCP有限狀態(tài)機
7.應(yīng)用層
7.1 DNS(Domain Name System竣况,域名系統(tǒng))
- DNS是互聯(lián)網(wǎng)的一項服務(wù)。它作為將域名和 IP 地址相互映射的一個分布式數(shù)據(jù)庫筒严,能夠使人更方便地訪問互聯(lián)網(wǎng)丹泉。DNS 使用 TCP 和 UDP 端口 53。當(dāng)前鸭蛙,對于每一級域名長度的限制是 63 個字符摹恨,域名總長度則不能超過 253 個字符。
- 域名 ::= {<三級域名>.<二級域名>.<頂級域名>}娶视,如:blog.huihut.com
7.2 FTP(File Transfer Protocol睬塌,文件傳輸協(xié)議)
- FTP是用于在網(wǎng)絡(luò)上進行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,使用客戶/服務(wù)器模式歇万,使用 TCP 數(shù)據(jù)報揩晴,提供交互式訪問,雙向傳輸贪磺。
- TFTP(Trivial File Transfer Protocol硫兰,簡單文件傳輸協(xié)議)一個小且易實現(xiàn)的文件傳輸協(xié)議,也使用客戶-服務(wù)器方式寒锚,使用UDP數(shù)據(jù)報劫映,只支持文件傳輸而不支持交互,沒有列目錄刹前,不能對用戶進行身份鑒定
7.3 TELNET
- TELNET 協(xié)議是 TCP/IP 協(xié)議族中的一員泳赋,是 Internet 遠程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力喇喉。
7.4 HTTP(HyperText Transfer Protocol祖今,超文本傳輸協(xié)議)
- HTTP是用于從 WWW(World Wide Web,萬維網(wǎng))服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
7.5 SMTP(Simple Mail Transfer Protocol千诬,簡單郵件傳輸協(xié)議)
- SMTP是一組用于由源地址到目的地址傳送郵件的規(guī)則耍目,由它來控制信件的中轉(zhuǎn)方式。SMTP 協(xié)議屬于 TCP/IP 協(xié)議簇徐绑,它幫助每臺計算機在發(fā)送或中轉(zhuǎn)信件時找到下一個目的地邪驮。它是在 Internet 傳輸 Email 的標(biāo)準(zhǔn),是一個相對簡單的基于文本的協(xié)議傲茄。在其之上指定了一條消息的一個或多個接收者(在大多數(shù)情況下被確認是存在的)毅访,然后消息文本會被傳輸∨陶ィ可以很簡單地通過 Telnet 程序來測試一個 SMTP 服務(wù)器喻粹,SMTP 使用 TCP 端口 25。
7.6 DHCP(Dynamic Host Configuration Protocol较曼,動態(tài)主機設(shè)置協(xié)議)
- DHCP是一個局域網(wǎng)的網(wǎng)絡(luò)協(xié)議磷斧,使用 UDP 協(xié)議工作,主要有兩個用途:
- 用于內(nèi)部網(wǎng)絡(luò)或網(wǎng)絡(luò)服務(wù)供應(yīng)商自動分配 IP 地址給用戶
- 用于內(nèi)部網(wǎng)絡(luò)管理員作為對所有電腦作中央管理的手段
7.7 SNMP(Simple Network Management Protocol捷犹,簡單網(wǎng)絡(luò)管理協(xié)議)
- SNMP構(gòu)成了互聯(lián)網(wǎng)工程工作小組(IETF弛饭,Internet Engineering Task Force)定義的 Internet 協(xié)議族的一部分。該協(xié)議能夠支持網(wǎng)絡(luò)管理系統(tǒng)萍歉,用以監(jiān)測連接到網(wǎng)絡(luò)上的設(shè)備是否有任何引起管理上關(guān)注的情況侣颂。
8.相關(guān)概念
8.1 Socket(套接字)
- Socket 建立網(wǎng)絡(luò)通信連接至少要一對端口號(Socket)。Socket 本質(zhì)是編程接口(API)枪孩,對 TCP/IP 的封裝憔晒,TCP/IP 也要提供可供程序員做網(wǎng)絡(luò)開發(fā)所用的接口,這就是 Socket 編程接口蔑舞。
8.2 WWW(World Wide Web拒担,環(huán)球信息網(wǎng),萬維網(wǎng))
- WWW是一個由許多互相鏈接的超文本組成的系統(tǒng)攻询,通過互聯(lián)網(wǎng)訪問
8.3 URL(Uniform Resource Locator从撼,統(tǒng)一資源定位符)
- 概念:URL是因特網(wǎng)上標(biāo)準(zhǔn)的資源的地址(Address)
- 標(biāo)準(zhǔn)格式:協(xié)議類型:[//服務(wù)器地址[:端口號]][/資源層級UNIX文件路徑]文件名[?查詢][#片段ID]
- 完整格式:協(xié)議類型:[//[訪問資源需要的憑證信息@]服務(wù)器地址[:端口號]][/資源層級UNIX文件路徑]文件名[?查詢][#片段ID] 注意:其中[訪問憑證信息@;:端口號钧栖;?查詢低零;#片段ID]都屬于選填項,可以省略,如:https://github.com/cdlwhm1217096231
9.HTTP詳解
- 概念:HTTP(HyperText Transfer Protocol拯杠,超文本傳輸協(xié)議)是一種用于分布式赞咙、協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議材诽。HTTP 是萬維網(wǎng)的數(shù)據(jù)通信的基礎(chǔ)。
-
請求方法:
- 狀態(tài)碼:
- 1xx:表示通知信息械姻,如請求收到了或正在進行處理
- 100 Continue:繼續(xù)排惨,客戶端應(yīng)繼續(xù)其請求
- 101 Switching Protocols 切換協(xié)議。服務(wù)器根據(jù)客戶端的請求切換協(xié)議。只能切換到更高級的協(xié)議,例如揖膜,切換到 HTTP 的新版本協(xié)議
- 2xx:表示成功誓沸,如接收或知道了
- 200 OK: 請求成功
- 3xx:表示重定向梅桩,如要完成請求還必須采取進一步的行動
- 301 Moved Permanently: 永久移動。請求的資源已被永久的移動到新 URL拜隧,返回信息會包括新的 URL宿百,瀏覽器會自動定向到新 URL。今后任何新的請求都應(yīng)使用新的 URL 代替
- 4xx:表示客戶的差錯洪添,如請求中有錯誤的語法或不能完成
- 400 Bad Request: 客戶端請求的語法錯誤垦页,服務(wù)器無法理解
- 401 Unauthorized: 請求要求用戶的身份認證
- 403 Forbidden: 服務(wù)器理解請求客戶端的請求,但是拒絕執(zhí)行此請求(權(quán)限不夠)
- 404 Not Found: 服務(wù)器無法根據(jù)客戶端的請求找到資源(網(wǎng)頁)干奢。通過此代碼痊焊,網(wǎng)站設(shè)計人員可設(shè)置 “您所請求的資源無法找到” 的個性頁面
- 408 Request Timeout: 服務(wù)器等待客戶端發(fā)送的請求時間過長,超時
- 5xx:表示服務(wù)器的差錯忿峻,如服務(wù)器失效無法完成請求
- 500 Internal Server Error: 服務(wù)器內(nèi)部錯誤薄啥,無法完成請求
- 503 Service Unavailable: 由于超載或系統(tǒng)維護,服務(wù)器暫時的無法處理客戶端的請求逛尚。延時的長度可包含在服務(wù)器的 Retry-After 頭信息中
- 504 Gateway Timeout: 充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器垄惧,未及時從遠端服務(wù)器獲取請求
- 1xx:表示通知信息械姻,如請求收到了或正在進行處理
10.DNS(域名解析協(xié)議)
- 域名的來由:我們可以通過IP地址去訪問網(wǎng)站,但是對大多數(shù)用戶來說绰寞,訪問每個網(wǎng)站都需要記住一串?dāng)?shù)字是不現(xiàn)實的到逊,所以用戶可以通過域名來訪問網(wǎng)站。域名滤钱,其實是具有一定含義的字符組合觉壶。域名系統(tǒng)是因特網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能讓用戶更方便使用互聯(lián)網(wǎng)件缸。
- DNS劫持:指用戶訪問一個被標(biāo)記的地址時铜靶,DNS服務(wù)器故意將此地址指向一個錯誤的IP地址的行為。范例:收到各種推送廣告等網(wǎng)站
- DNS污染:指的是用戶訪問一個地址停团,國內(nèi)的服務(wù)器(非DNS)監(jiān)控到用戶訪問的已經(jīng)被標(biāo)記地址時旷坦,服務(wù)器偽裝成DNS服務(wù)器向用戶發(fā)回錯誤的地址的行為。比如不能訪問Google佑稠、YouTube等秒梅。
- 域名表達式為,在地址表達式中舌胶,最右邊的是最高層次的域名捆蜀,最左邊的是主機名,域與域之間用圓點隔開;
- 域名解析:通過主機最終得到該主機名對應(yīng)的IP地址辆它;
11.Http協(xié)議格式
- HTTP請求報文與響應(yīng)報文格式
- 請求報文包含三部分:
- 請求行:包含請求方法誊薄、URI、HTTP版本信息
- 請求首部字段
- 請求內(nèi)容實體
- 響應(yīng)報文包含三部分:
- 狀態(tài)行:包含HTTP版本锰茉、狀態(tài)碼呢蔫、狀態(tài)碼的原因短語
- 響應(yīng)首部字段
- 響應(yīng)內(nèi)容實體
- 請求報文包含三部分:
- HTTP(超文本傳輸協(xié)議)是一個基于請求與響應(yīng)模式的、無狀態(tài)的飒筑、應(yīng)用層的協(xié)議片吊,常基于TCP的連接方式协屡,HTTP1.1版本中給出一種持續(xù)連接的機制俏脊,絕大多數(shù)的Web開發(fā),都是構(gòu)建在HTTP協(xié)議之上的Web應(yīng)用肤晓。
- 常用的HTTP方法有哪些爷贫?
- GET:用于請求訪問已經(jīng)被URI(統(tǒng)一資源標(biāo)識符)識別的資源,可以通過URL傳參給服務(wù)器补憾。
- POST:用于傳輸信息給服務(wù)器漫萄,主要功能與GET方法類似,但一般推薦使用POST方式余蟹。
- PUT:傳輸文件卷胯,報文主體中包含文件內(nèi)容,保存到對應(yīng)URI位置威酒。
- HEAD:獲得報文首部窑睁,與GET方法類似,只是不返回報文主體葵孤,一般用于驗證URI是否有效担钮。
- DELETE:刪除文件,與PUT方法相反尤仍,刪除對應(yīng)URI位置的文件箫津。
- OPTIONS:查詢相應(yīng)URI支持的HTTP方法。
- GET方法與POST方法的區(qū)別
- get重點在從服務(wù)器上獲取資源宰啦,post重點在向服務(wù)器發(fā)送數(shù)據(jù)苏遥;
- get傳輸數(shù)據(jù)是通過URL請求,以field(字段)= value的形式赡模,置于URL后田炭,并用"?"連接,多個請求數(shù)據(jù)間用"&"連接漓柑,如http://127.0.0.1/Test/login.action?name=admin&password=admin教硫,這個過程用戶是可見的叨吮;post傳輸數(shù)據(jù)通過Http的post機制,將字段與對應(yīng)值封存在請求實體中發(fā)送給服務(wù)器瞬矩,這個過程對用戶是不可見的茶鉴;
- get傳輸?shù)臄?shù)據(jù)量小,因為受URL長度限制景用,但效率較高涵叮;Post可以傳輸大量數(shù)據(jù),所以上傳文件時只能用Post方式丛肢;
- get是不安全的围肥,因為URL是可見的剿干,可能會泄露私密信息蜂怎,如密碼等;post較get安全性較高置尔;
- get方式只能支持ASCII字符杠步,向服務(wù)器傳的中文字符可能會亂碼。post支持標(biāo)準(zhǔn)字符集榜轿,可以正確傳遞中文字符幽歼。
- HTTP1.1版本新特性
- 默認持久連接節(jié)省通信量,只要客戶端服務(wù)端任意一端沒有明確提出斷開TCP連接谬盐,就一直保持連接甸私,可以發(fā)送多次HTTP請求
- 管線化,客戶端可以同時發(fā)出多個HTTP請求飞傀,而不用一個個等待響應(yīng)
- 斷點續(xù)傳原理
- 常見HTTP首部字段
- 通用首部字段(請求報文與響應(yīng)報文都會使用的首部字段)
- Date:創(chuàng)建報文時間
- Connection:連接的管理
- Cache-Control:緩存的控制
- Transfer-Encoding:報文主體的傳輸編碼方式
- 請求首部字段(請求報文會使用的首部字段)
- Host:請求資源所在服務(wù)器
- Accept:可處理的媒體類型
- Accept-Charset:可接收的字符集
- Accept-Encoding:可接受的內(nèi)容編碼
- Accept-Language:可接受的自然語言
- 響應(yīng)首部字段(響應(yīng)報文會使用的首部字段)
- Accept-Ranges:可接受的字節(jié)范圍
- Location:令客戶端重新定向到的
- URI Server:HTTP服務(wù)器的安裝信息
- 實體首部字段(請求報文與響應(yīng)報文的的實體部分使用的首部字段)
- Allow:資源可支持的HTTP方法
- Content-Type:實體主類的類型
- Content-Encoding:實體主體適用的編碼方式
- Content-Language:實體主體的自然語言
- Content-Length:實體主體的的字節(jié)數(shù)
- Content-Range:實體主體的位置范圍皇型,一般用于發(fā)出部分請求時使用
- 通用首部字段(請求報文與響應(yīng)報文都會使用的首部字段)
- HTTP的缺點與HTTPS
- 通信使用明文不加密,內(nèi)容可能被竊聽
- 不驗證通信方身份砸烦,可能遭到偽裝
- 無法驗證報文完整性弃鸦,可能被篡改
- HTTPS就是HTTP加上加密處理(一般是SSL安全通信線路)+認證+完整性保護
12.當(dāng)你輸入一個網(wǎng)址/點擊一個鏈接,發(fā)生了什么幢痘?(以www.baidu.com為例)
- 1.點擊網(wǎng)址后唬格,應(yīng)用層的DNS協(xié)議會將網(wǎng)址解析為IP地址;
- DNS查找過程:瀏覽器會檢查緩存中有沒有這個域名對應(yīng)的解析過的IP地址颜说,如果緩存中有购岗,這個解析過程就將結(jié)束。如果用戶的瀏覽器緩存中沒有门粪,瀏覽器會查找操作系統(tǒng)緩存(hosts文件)中是否有這個域名對應(yīng)的DNS解析結(jié)果喊积。若還沒有,此時會發(fā)送一個數(shù)據(jù)包給DNS服務(wù)器庄拇,DNS服務(wù)器找到后將解析所得IP地址返回給用戶注服。
- 2.在應(yīng)用層韭邓,瀏覽器會給web服務(wù)器發(fā)送一個HTTP請求;
- 請求頭為:GET http://www.baidu.com/HTTP/1.1
- 3.在傳輸層溶弟,(上層的傳輸數(shù)據(jù)流分段)HTTP數(shù)據(jù)包會嵌入在TCP報文段中女淑;
- TCP報文段需要設(shè)置端口,接收方(百度)的HTTP端口默認是80辜御,本機的端口是一個1024-65535之間的隨機整數(shù)鸭你,這里假設(shè)為1025,這樣TCP報文段由TCP首部(包含發(fā)送方和接收方的端口信息)+ HTTP數(shù)據(jù)包組擒权。
- 4.在網(wǎng)絡(luò)層中袱巨,TCP報文段再嵌入IP數(shù)據(jù)包中;
- IP數(shù)據(jù)包需要知道雙方的IP地址碳抄,本機IP地址假定為192.168.1.5愉老,接受方IP地址為220.181.111.147(百度),這樣IP數(shù)據(jù)包由IP頭部(IP地址信息)+TCP報文段組成剖效。
- 5.在網(wǎng)絡(luò)接口層嫉入,IP數(shù)據(jù)包嵌入到數(shù)據(jù)幀(以太網(wǎng)數(shù)據(jù)包)中在網(wǎng)絡(luò)上傳送;
- 數(shù)據(jù)幀中包含源MAC地址和目的MAC地址(通過ARP地址解析協(xié)議得到的)璧尸。這樣數(shù)據(jù)幀由頭部(MAC地址)+IP數(shù)據(jù)包組成咒林。
- 6.數(shù)據(jù)包經(jīng)過多個網(wǎng)關(guān)的轉(zhuǎn)發(fā)到達百度服務(wù)器,請求對應(yīng)端口的服務(wù)爷光;
- 服務(wù)接收到發(fā)送過來的以太網(wǎng)數(shù)據(jù)包開始解析請求信息垫竞,從以太網(wǎng)數(shù)據(jù)包中提取IP數(shù)據(jù)包—>TCP報文段—>HTTP數(shù)據(jù)包,并組裝為有效數(shù)據(jù)交與對應(yīng)線程池中分配的線程進行處理蛀序,在這個過程中欢瞪,生成相應(yīng)request、response哼拔。
- 7.請求處理完成之后引有,服務(wù)器發(fā)回一個HTTP響應(yīng);
- 請求處理程序會閱讀請求及它的參數(shù)和cookies倦逐。它會讀取也可能更新一些數(shù)據(jù)譬正,并將數(shù)據(jù)存儲在服務(wù)器上。處理完畢后檬姥,數(shù)據(jù)通過response對象給客戶輸出信息曾我,輸出信息也需要拼接HTTP協(xié)議頭部分,關(guān)閉后斷開連接健民。斷開后抒巢,服務(wù)器端自動注銷request、response對象秉犹,并將釋放對應(yīng)線程的使用標(biāo)識(一般一個請求單獨由一個線程處理蛉谜,部分特殊情況有一個線程處理多個請求的情況)稚晚。響應(yīng)頭為:HTTP/1.1200 OK
- 8.瀏覽器以同樣的過程讀取到HTTP響應(yīng)的內(nèi)容(HTTP響應(yīng)數(shù)據(jù)包),然后瀏覽器對接收到的HTML頁面進行解析型诚,把網(wǎng)頁顯示出來呈現(xiàn)給用戶客燕。
- 客戶端接收到返回數(shù)據(jù),去掉對應(yīng)頭信息狰贯,形成也可以被瀏覽器認識的頁面HTML字符串信息也搓,交與瀏覽器翻譯為對應(yīng)頁面規(guī)則信息展示為頁面內(nèi)容。
13.計算機的OSI和TCP/IP網(wǎng)絡(luò)模型
-
1.計算機的網(wǎng)絡(luò)模型分為兩種OSI模型和TCP/IP模型涵紊,它們的對應(yīng)關(guān)系如下:
- 2.針對OSI模型傍妒,每一層都有各自的功能。
-
應(yīng)用層
- 應(yīng)用層是OSI模型中最靠近用戶的一層摸柄,負責(zé)為用戶的應(yīng)用程序提供網(wǎng)絡(luò)服務(wù) 颤练。包括為相互通信的應(yīng)用程序或進程之間建立連接,進行同步建立關(guān)于錯誤糾正和控制同時還包含大量的應(yīng)用協(xié)議塘幅,例如遠程登錄(talent)昔案、簡單的郵件傳輸協(xié)議(SMTP)、簡單的網(wǎng)絡(luò)管理協(xié)議(SNMP)电媳,超文本傳輸協(xié)議(HTTP)。所有能超聲網(wǎng)絡(luò)流量的程序都在應(yīng)用層庆亡。
-
表示層
- 表示層負責(zé)在不同的數(shù)據(jù)格式之間進行轉(zhuǎn)換操作匾乓,以實現(xiàn)不同的計算機系統(tǒng)間的信息交換。還負責(zé)數(shù)據(jù)的加密又谋,在傳輸?shù)倪^程中進行保護拼缝,在發(fā)送端加密,在接收端解密彰亥,使用加密秘鑰來對數(shù)據(jù)進行加密和解密咧七。
-
會話層
- 會話層的主要功能是在兩個節(jié)點間建立連接、維護任斋、釋放面向用戶的連接继阻,并對會話進行管理和控制,保證會話數(shù)據(jù)可靠傳輸废酷,在會話的過程中決定到底使用全雙工還是使用半雙工模式傳輸瘟檩。
-
傳輸層
- 傳輸層是OSI模型中唯一負責(zé)端到端節(jié)點數(shù)據(jù)傳輸和控制的層,傳輸層是在OSI模型中起承上啟下的作用澈蟆,它下面的三層主要主要面向網(wǎng)絡(luò)通信墨辛,以確保信息準(zhǔn)確有效的傳輸,上面的三層樹妖面向主機用戶趴俘,為用戶提供各種服務(wù)睹簇。 傳輸層為了向會話層提供可靠的端到端傳輸服務(wù)奏赘,也使用差錯控制和流量控制等機制。4層的協(xié)議有傳輸控制協(xié)議(TCP)太惠,用戶數(shù)據(jù)報協(xié)議(UDP)志珍,順序包交換協(xié)議(SPX)。
-
網(wǎng)絡(luò)層
- 負責(zé)選擇最佳的路徑垛叨,規(guī)劃IP(Internet Protocol)地址伦糯。
-
數(shù)據(jù)鏈路層
- 數(shù)據(jù)幀的開始和結(jié)束,同時提供透明傳輸嗽元,差錯校驗敛纲。
-
物理層
- 是OSI模型的最底層,它面向原始的比特流的傳輸剂癌,同時規(guī)范了接口標(biāo)準(zhǔn)淤翔。
-
- 3.針對TCP/IP模型,每一層都有各自的功能佩谷。
- 物理層:對應(yīng)OSI模型的低兩層旁壮,物理層和數(shù)據(jù)鏈路層;常用協(xié)議:Ethernet谐檀、FDDI抡谐、令牌環(huán)
- 網(wǎng)絡(luò)層:對應(yīng)OSI模型的網(wǎng)絡(luò)層;常用協(xié)議:IP桐猬、ARP麦撵、RAR、ICMP
- 傳輸層:對應(yīng)OSI模型的傳輸層溃肪;常用協(xié)議:TCP免胃、UDP
- 應(yīng)用層:對應(yīng)OSI模型的高三層,會話層惫撰、表示層羔沙、應(yīng)用層;常用協(xié)議:DNS厨钻、HTTP扼雏、SMTP、POP莉撇、TELNET呢蛤、FTP
14.TCP/FTP 簡析
- 1.TCP/FTP簡析
- TCP/IP是個協(xié)議組,可分為三個層次:網(wǎng)絡(luò)層棍郎、傳輸層和應(yīng)用層:
- 網(wǎng)絡(luò)層:IP協(xié)議其障、ICMP協(xié)議、ARP協(xié)議涂佃、RARP協(xié)議和BOOTP協(xié)議
- 傳輸層:TCP協(xié)議與UDP協(xié)議
- 應(yīng)用層:FTP励翼、HTTP蜈敢、TELNET、SMTP汽抚、DNS等協(xié)議
- 2.TCP連接的三次握手
- 第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器抓狭,并進入SYN_SEND狀態(tài),等待服務(wù)器確認造烁;
- 第二次握手:服務(wù)端接收到客戶端的請求后否过,給出一個確認ACK(ack=j+1),同時自己也發(fā)送出一個SYN包(syn=k),此時服務(wù)器進入SYN_RECV狀態(tài)。
- 第三次握手:客戶端接收到服務(wù)端的SYN+ACK包后惭蟋,向服務(wù)器發(fā)出一個確認ACK(ack=k+1)苗桂,此包發(fā)送完畢,客戶端和服務(wù)端進入ESTABLIST狀態(tài)告组,完成三次握手煤伟。
- 3.FTP
- 文件傳輸協(xié)議(File Transfer Protocol, FTP)是TCP/IP網(wǎng)絡(luò)上兩臺計算機傳送文件的協(xié)議,F(xiàn)TP是在TCP/IP網(wǎng)絡(luò)和INTERNET上最早使用的協(xié)議之一木缝,它屬于網(wǎng)絡(luò)協(xié)議組的應(yīng)用層便锨。FTP客戶機可以給服務(wù)器發(fā)出命令來下載文件,上載文件我碟,創(chuàng)建或改變服務(wù)器上的目錄放案。
15.IP地址與子網(wǎng)掩碼
- 1.IP地址:Internet上每臺主機都必須有一個唯一的地址以區(qū)別于其他主機,這個地址就是Internet地址怎囚,也稱作IP地址卿叽;IPv4(第四版本的IP協(xié)議)是構(gòu)成現(xiàn)今互聯(lián)網(wǎng)技術(shù)的基石協(xié)議;
- 2.IP地址的構(gòu)成:IP地址由32位二進制構(gòu)成恳守,共約40億個,由網(wǎng)絡(luò)地址和主機地址構(gòu)成贩虾;一個IP地址分為四段:a.b.c.d 催烘,段與段之間用原點分開。IP地址表示方法:二進制形式和點分十進制形式缎罢;
- 3.IP地址的分類:5類(A類地址伊群,B類地址,C類地址策精,D類地址舰始,E類地址)
- IP地址的分類是根據(jù)第一段(a字段,前8位)的取值范圍來劃分的咽袜;
- A類地址:以0開頭丸卷,前8位為網(wǎng)絡(luò)地址,后24位為主機地址询刹。A類地址第一段a字段的取值范圍1126谜嫉。每一個A類地址中可以容納的主機的數(shù)目約為1600萬萎坷。地址范圍:1.0.0.0126.255.255.255
- B類地址:以10開頭,前16位為網(wǎng)絡(luò)地址沐兰,后16位為主機地址哆档。B類地址第一段a字段取值范圍為128191。每一個B類地址中可以容納主機數(shù)目約為65000住闯。地址范圍:128.0.0.0191.255.255.255
- C類地址:以110開頭瓜浸,前24位為網(wǎng)絡(luò)地址,后8位為主機地址比原。C類地址第一段a字段的取值范圍是192223插佛。每一個C類地址可容納主機的數(shù)目約為254。地址范圍:192.0.0.0223.255.255.255
- 4.IPv6(第六版IP協(xié)議):一個IP地址由128位二進制組成春寿,采用冒分16進制朗涩。
- 5.特殊的IP地址:
- a.專用IP地址:三類網(wǎng)絡(luò)號,這些地址不會被Internet分配因此也不能被路由绑改。
- A類:10.0.0.0~10.255.255.255 (長度相當(dāng)于1個A類IP地址)
- B類:172.16.0.0~172.31.255.255 (長度相當(dāng)于16個連續(xù)的B類IP地址)
- C類:192.168.0.0~192.168.255.255 (長度相當(dāng)于256個連續(xù)的C類IP地址)
- b. 特殊IP地址:
- 0.0.0.0 是全零網(wǎng)絡(luò)代表默認網(wǎng)絡(luò)谢床,幫助路由器發(fā)送路由表中無法查詢的包。如果設(shè)置了全零網(wǎng)絡(luò)路由厘线,路由器中無法查詢的包都會被送到全零網(wǎng)絡(luò)的路由中去识腿;
- 127.0.0.1 稱作回送地址,屬于環(huán)回地址造壮,IP從127.0.0.0到127.255.255.255都將環(huán)回到本地主機中渡讼;
- 255.255.255.255 限制廣播地址,對本機來說耳璧,這個地址指本網(wǎng)段內(nèi)(同一廣播域)所有主機成箫;
- a.專用IP地址:三類網(wǎng)絡(luò)號,這些地址不會被Internet分配因此也不能被路由绑改。
- 6.子網(wǎng)掩碼
- 子網(wǎng)掩碼:是一個32位二進制的值,可以將IP地址分離出網(wǎng)絡(luò)地址和主機地址旨枯,采用點分十進制的形式蹬昌。子網(wǎng)掩碼不能單獨存在它必須結(jié)合IP地址一起使用。
- 子網(wǎng)掩碼由1和0組成攀隔,且1和0分別連續(xù)皂贩。子網(wǎng)掩碼的長度也是32位。左邊是網(wǎng)絡(luò)位昆汹,用二進制數(shù)字1表示明刷,1的數(shù)目等于網(wǎng)絡(luò)位的長度;右邊是主機位用2進制數(shù)字0表示满粗,0的數(shù)目等于主機位的長度辈末;這樣做的目的是為了讓掩碼與IP地址做與運算時用0遮住原主機數(shù),而不改變網(wǎng)絡(luò)段的數(shù)字;而且很容易通過0的位數(shù)確定子網(wǎng)的主機數(shù)本冲;將32位IP地址與32位的子網(wǎng)掩碼各位進制進行 '與' 運算准脂,得到的是該IP地址的網(wǎng)絡(luò)地址;
- 方法:子網(wǎng)掩碼可以判斷兩臺計算機是否屬于同一網(wǎng)段檬洞,將計算機10進制的IP地址和子網(wǎng)掩碼轉(zhuǎn)換為2進制的形式狸膏,然后進行‘與’運算,如果網(wǎng)絡(luò)地址是相同的添怔,那么兩臺計算機就屬于同一網(wǎng)段湾戳;
- 子網(wǎng)掩碼可分為缺省子網(wǎng)掩碼和自定義子網(wǎng)掩碼:
- a.缺省(默認)子網(wǎng)掩碼:即為劃分子網(wǎng)广料,對應(yīng)的網(wǎng)絡(luò)號都是1命辖,主機號位都是0嗅骄;
- A類網(wǎng)絡(luò)缺势喔摇(默認)子網(wǎng)掩碼:255.0.0.0
- B類網(wǎng)絡(luò)缺始恰(默認)子網(wǎng)掩碼:255.255.0.0
- C類網(wǎng)絡(luò)缺省(默認)子網(wǎng)掩碼:255.255.255.0
- b.自定義子網(wǎng)掩碼是將一個網(wǎng)絡(luò)劃分為幾個子網(wǎng)购桑,需要每一段使用不同的網(wǎng)絡(luò)號或者子網(wǎng)號畅铭,實際上我們可以認為是將主機號分為兩個部分:子網(wǎng)號和子網(wǎng)主機號。形式如下:
- 未做子網(wǎng)劃分的IP地址:網(wǎng)絡(luò)號+主機號
- 做子網(wǎng)劃分的IP地址:網(wǎng)絡(luò)號+子網(wǎng)號+子網(wǎng)主機號勃蜘。也就是說硕噩,IP地址在子網(wǎng)劃分后,以前的主機號一部分給了子網(wǎng)號缭贡,剩下的是子網(wǎng)主機號炉擅;
- a.缺省(默認)子網(wǎng)掩碼:即為劃分子網(wǎng)广料,對應(yīng)的網(wǎng)絡(luò)號都是1命辖,主機號位都是0嗅骄;
- 子網(wǎng)掩碼通常有兩種格式的表示方式:
- 點分十進制格式,如:255.255.255.128
- IP地址后面加上‘/’符號以及1-32位的數(shù)字阳惹,其中1-32的數(shù)字表示子網(wǎng)掩碼中網(wǎng)絡(luò)標(biāo)識位的長度谍失;例如:192.168.1.1/24的子網(wǎng)掩碼也可以表示為255.255.255.0
16.路由器
- 路由器:屬于網(wǎng)絡(luò)層,是連接因特網(wǎng)中的各局域網(wǎng)莹汤、廣域網(wǎng)的設(shè)備袱贮,它會根據(jù)信道的情況自動選擇和設(shè)定路由,以最佳路徑体啰,按照前后順序發(fā)送信號。連接不同的網(wǎng)絡(luò)嗽仪,所謂不同的網(wǎng)絡(luò)就是網(wǎng)絡(luò)地址不同荒勇;路由器工作在IP協(xié)議網(wǎng)絡(luò)層,用于實現(xiàn)子網(wǎng)之間轉(zhuǎn)發(fā)數(shù)據(jù)闻坚,路由器一般包含多個網(wǎng)絡(luò)接口沽翔,包括局域網(wǎng)和廣域網(wǎng)接口,每個網(wǎng)絡(luò)接口連接不同的網(wǎng)絡(luò);路由器記錄著每個網(wǎng)絡(luò)端口連接的網(wǎng)絡(luò)信息仅偎;路由器中還包含路由表:記錄了去往不同的網(wǎng)絡(luò)地址應(yīng)該送往的端口號跨蟹;
- 作用:為每個數(shù)據(jù)幀尋找最佳的傳輸路徑,并將其有效的傳送到目的站點橘沥,在路由器中通過路由表保存著各種傳輸路徑的相關(guān)數(shù)據(jù)窗轩,供路由選擇時使用。
- 路由表:保存各種傳輸路徑的相關(guān)數(shù)據(jù)座咆,供路由選擇時使用痢艺;路由表中保存著子網(wǎng)的標(biāo)志信息、網(wǎng)上路由器的個數(shù)和下一個路由器的名字等內(nèi)容介陶;
- 靜態(tài)路由表:由系統(tǒng)管理員事先設(shè)定好的路由表堤舒;
- 動態(tài)路由表:路由器根據(jù)網(wǎng)絡(luò)系統(tǒng)的運行情況動態(tài)調(diào)整的路由表;
- 工作流程:數(shù)據(jù)包送到路由器后哺呜,通過數(shù)據(jù)包首部的目的主機IP地址和子網(wǎng)掩碼計算出網(wǎng)絡(luò)地址舌缤,即目的主機所在的網(wǎng)絡(luò),查找當(dāng)前路由器的路由表某残,選擇端口進行轉(zhuǎn)發(fā);下一臺IP路由器收到數(shù)據(jù)包后繼續(xù)轉(zhuǎn)發(fā)国撵,直到目的地;路由轉(zhuǎn)發(fā)策略稱為路由選擇驾锰;
- 路由器和交換機之間的主要區(qū)別是:交換機發(fā)生在OSI參考模型的第二層(數(shù)據(jù)鏈路層)卸留,而路由器發(fā)生在第三層(網(wǎng)絡(luò)層)。路由器是不同網(wǎng)絡(luò)之間相互連接的樞紐椭豫,路由器構(gòu)成了Internet的骨架耻瑟;路由器具有判斷網(wǎng)路地址,選擇IP路徑的功能赏酥;
17.MAC地址(物理地址喳整、硬件地址)的概念和作用
- 概念:MAC地址就是在媒體接入層上使用的地址,也叫物理地址裸扶、硬件地址或鏈路地址框都,其被固化在適配器的ROM中『浅浚可見魏保,MAC地址實際上就是適配器地址或適配器標(biāo)識符。當(dāng)某臺計算機使用某塊適配器后摸屠,適配器上的標(biāo)識符就成為該計算機的MAC地址谓罗。MAC地址長度為6字節(jié)(48比特),由IEEE的注冊管理結(jié)構(gòu)RA進行管理分配季二。
- 作用:MAC地址是計算機的唯一標(biāo)識檩咱,在數(shù)據(jù)鏈路層中揭措,交換機通過識別MAC地址進行數(shù)據(jù)包的傳輸。
18.路由表中的內(nèi)容
- Network Destination:目標(biāo)網(wǎng)段刻蚯;Netmask:子網(wǎng)掩碼绊含,IP地址與子網(wǎng)掩碼按位與,可以得出該IP地址的網(wǎng)絡(luò)號炊汹,IP地址與子網(wǎng)掩碼取反后按位與躬充,可以得出該IP地址的主機號。Interface:達到該目標(biāo)網(wǎng)段的本地路由器的出口IP兵扬;Gateway:網(wǎng)關(guān)IP麻裳,下一跳路由器的入口IP,通常情況下器钟,interface和gateway是同一網(wǎng)段的津坑。Metric:跳數(shù),該條路由記錄的質(zhì)量傲霸,一般情況下疆瑰,如果有多條到達相同目的地的路由記錄,路由器會采用metric值小的那條路由昙啄。
19.分組轉(zhuǎn)發(fā)算法流程
- 1.從數(shù)據(jù)報的首部提取目的主機的IP地址D穆役,得出目的網(wǎng)絡(luò)地址N(子網(wǎng)掩碼和IP地址做與運算可得出網(wǎng)絡(luò)地址)。
- 2.若N就是于此路由器直接相連的某個網(wǎng)絡(luò)地址梳凛,則進行直接交付耿币,不需要在經(jīng)過其他路由器,直接把數(shù)據(jù)報交付給目的主機(這里包括把目的IP地址D轉(zhuǎn)換為具體的MAC地址(ARP協(xié)議)韧拒,把數(shù)據(jù)報封裝成MAC幀淹接,在發(fā)送此幀);否則就是間接交付叛溢。
- 3.若路由表中有目的地址為D的特定主機路由塑悼,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器。
- 4.若路由表中有達到網(wǎng)絡(luò)N的路由楷掉,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器厢蒜。
- 5.若路由表中有一個默認路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認路由器烹植。
- 6.報告轉(zhuǎn)發(fā)分組出錯斑鸦。
20.TFTP與FTP的區(qū)別
- FTP(File Transfer Protocol,文件傳輸協(xié)議)協(xié)議在TCP/IP協(xié)議族中屬于應(yīng)用層協(xié)議草雕,用于在遠端服務(wù)器和本地客戶端之間傳輸文件鄙才,使用TCP端口20和21進行傳輸。端口20用于傳輸數(shù)據(jù)促绵,端口21用于傳輸控制消息。
- TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)也是用于在遠端服務(wù)器和本地主機之間傳輸文件的败晴,相對于FTP浓冒,TFTP沒有復(fù)雜的交互存取接口和認證控制,適用于客戶端和服務(wù)器之間不需要復(fù)雜交互的環(huán)境尖坤。
- TFTP協(xié)議的運行基于UDP協(xié)議稳懒,使用UDP端口69進行數(shù)據(jù)傳輸。
- 區(qū)別:
- 基于的傳輸協(xié)議不一樣:FTP是基于TCP TFTP是基于UDP
- 端口號不一樣:FTP是用21.20 TFTP是69
- 速度和安全方面:FTP在速度方面沒有TFTP快但是FTP安全好
21.MTU的概念慢味,什么是路徑MTU场梆? MTU發(fā)現(xiàn)機制,TraceRoute
- MTU:即Maximum Transmission Unit 最大傳輸單元纯路。它是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大谢蛴汀(以字節(jié)為單位)。
- 路徑MTU:路徑MTU是指一條因特網(wǎng)傳輸路徑中驰唬,從源地址到目的地址所經(jīng)過的“路徑”上的所有IP跳的最大傳輸單元的最小值顶岸。或者從另外一個角度來看叫编,就是無需進行分片處理就能穿過這條“路徑”的最大傳輸單元的最大值辖佣。
- 路徑MTU的發(fā)現(xiàn)方法:這是確定兩個IP主機之間路徑最大傳輸單元的技術(shù),其目的就是為了避免IP分片搓逾。首先源地址將數(shù)據(jù)報的DF位置位卷谈,在逐漸增大發(fā)送的數(shù)據(jù)報的大小——路徑上任何需要將分組進行分片的設(shè)備都會將這種數(shù)據(jù)報丟棄并返回“數(shù)據(jù)報過大“的ICMP響應(yīng)到源地址——這樣源主機就”學(xué)習(xí)“到了無需分片就能通過這條路徑的最大的最大傳輸單元。
- Traceroute:用來偵測主機到目的主機之間所經(jīng)路由情況的重要工具霞篡。原理如下:它受到目的主機的IP后世蔗,首先給目的主機發(fā)送一個TTL=1的UDP數(shù)據(jù)包(每次送出的為3個40字節(jié)的包,包括源地址寇损,目的地址和包發(fā)出的時間標(biāo)簽)凸郑,而經(jīng)過的第一個路由器收到這個數(shù)據(jù)包以后,就自動把TTL減1矛市,而TTL變?yōu)?以后芙沥,路由器就把這個包給拋棄了,并同時產(chǎn)生 一個主機不可達的ICMP數(shù)據(jù)報給主機浊吏。主機收到這個數(shù)據(jù)報以后再發(fā)一個TTL=2的UDP數(shù)據(jù)報給目的主機而昨,然后刺激第二個路由器給主機發(fā)ICMP數(shù)據(jù)報。如此往復(fù)直到到達目的主機找田。這樣歌憨,traceroute就拿到了所有的路由器ip。Traceroute提取發(fā)送 ICMP TTL到期消息設(shè)備的IP地址并作域名解析墩衙。每次 务嫡,Traceroute都打印出一系列數(shù)據(jù),包括所經(jīng)過的路由設(shè)備的域名及 IP地址,三個包每次來回所花時間甲抖。
22.ICMP協(xié)議
- 概念:ICMP的全稱是 Internet Control Message Protocol ,它是一種“錯誤偵測與回報機制”心铃,不傳輸用戶數(shù)據(jù)准谚,其目的就是讓我們能夠檢測網(wǎng)路的連線狀況。ICMP數(shù)據(jù)包由一個8字節(jié)長的包頭去扣,其中前四個字節(jié)是固定格式柱衔,包括8位類型字段、8位代碼字段個16位校驗和愉棱;后4個字節(jié)根據(jù)ICMP類型的不同而取不同的值唆铐;
- 作用:
- 偵測遠端主機是否存在
- 建立及維護路由資料
- 重導(dǎo)數(shù)據(jù)傳送路徑
- 數(shù)據(jù)流量控制
- Internet 控制報文協(xié)議,負責(zé)發(fā)送消息奔滑,報告錯誤艾岂;屬于TCP/IP協(xié)議族;主要用在主機和路由器之間档押,ICMP提供移動的出錯報告信息澳盐,但是他的功能是報告問題而不是糾正問題,他將出錯的報文返回發(fā)送方令宿,糾正問題的功能由發(fā)送方完成叼耙;發(fā)送方根據(jù)ICMP提供的錯誤類型來確定如何才能更好的重新發(fā)送失敗的數(shù)據(jù)包;
- 應(yīng)用:Ping命令其實就是ICMP協(xié)議的工作過程粒没;Tracert命令筛婉,跟蹤路由的命令也是基于ICMP協(xié)議的;
23.組播和廣播的概念癞松,IGMP的用途
- 組播:主機之間的通訊模式爽撒,也就是加入了同一個組的主機可以接收到此組內(nèi)的所有數(shù)據(jù),網(wǎng)絡(luò)中的交換機和路由器只向有需求者復(fù)制并轉(zhuǎn)發(fā)其所需數(shù)據(jù)响蓉。主機可以向路由器請求加入或退出某個組硕勿,網(wǎng)絡(luò)中的路由器和交換機有選擇的復(fù)制并傳輸數(shù)據(jù),即只將組內(nèi)數(shù)據(jù)傳輸給那些加入組的主機枫甲。這樣既能一次將數(shù)據(jù)傳輸給多個有需要(加入組)的主機源武,又能保證不影響其他不需要(未加入組)的主機的其他通訊。
- 廣播: 是指在IP子網(wǎng)內(nèi)廣播數(shù)據(jù)包想幻,所有在子網(wǎng)內(nèi)部的主機都將收到這些數(shù)據(jù)包粱栖。廣播意味著網(wǎng)絡(luò)向子網(wǎng)每一個主機都投遞一份數(shù)據(jù)包,不論這些主機是否樂于接收該數(shù)據(jù)包脏毯。所以廣播的使用范圍非常小闹究,只在本地子網(wǎng)內(nèi)有效,通過路由器和網(wǎng)絡(luò)設(shè)備控制廣播傳輸食店。組播協(xié)議與現(xiàn)在廣泛使用的單播協(xié)議的不同之處在于渣淤,一個主機用單播協(xié)議向n個主機發(fā)送相同的數(shù)據(jù)時赏寇,發(fā)送主機需要分別向n個主機發(fā)送,共發(fā)送n次砂代。一個主機用組播協(xié)議向n個主機發(fā)送相同的數(shù)據(jù)時蹋订,只要發(fā)送1次,其數(shù)據(jù)由網(wǎng)絡(luò)中的路由器和交換機逐級進行復(fù)制并發(fā)送給各個接收方刻伊,這樣既節(jié)省服務(wù)器資源也節(jié)省網(wǎng)絡(luò)主干的帶寬資源。
- IGMP(Internet Group Management Protocol)的用途
- 它用來在ip主機和與其直接相鄰的組播路由器之間建立椒功、維護組播組成員關(guān)系捶箱。組播路由器不需要保存所有主機的成員關(guān)系,它只是通過IGMP協(xié)議了解每個接口連接的網(wǎng)段上是否存在某個組播組的組成員动漾,而主機只需要保存自己加入了哪些組播組丁屎。簡而言之,IGMP協(xié)議是讓連接在本地局域網(wǎng)上的組播路由器知道本局域網(wǎng)上是否有主機上的某個進程參加或退出了某個組播組旱眯。
- 環(huán)回地址/廣播地址
- 環(huán)回地址:127.0.0.1晨川,通常被稱為本地回環(huán)地址(Loop back address),不屬于任何一個有類別地址類删豺。它代表設(shè)備的本地虛擬接口共虑,所以默認被看作是永遠不會宕掉的接口。
- 作用:
- a.一是測試本機的網(wǎng)絡(luò)配置呀页,能PING通127.0.0.1說明本機的網(wǎng)卡和IP協(xié)議安裝都沒有問題妈拌;
- b.某些SERVER/CLIENT的應(yīng)用程序在運行時需調(diào)用服務(wù)器上的資源,一般要指定SERVER的IP地址蓬蝶,但當(dāng)該程序要在同一臺機器上運行而沒有別的SERVER時就可以把SERVER的資源裝在本機尘分,SERVER的IP地址設(shè)為127.0.0.1同樣也可以運行。
- 廣播地址:是專門用于同時向網(wǎng)絡(luò)中所有工作站進行發(fā)送的一個地址丸氛。在使用TCP/IP協(xié)議的網(wǎng)絡(luò)中培愁,主機標(biāo)識段host ID為全1的IP地址為廣播地址,廣播的分組傳送給host ID段所涉及的所有計算機缓窜。例如定续,對于10.1.1.0 (255.255.255.0 )網(wǎng)段,其廣播地址為10.1.1.255(255 即為2 進制的11111111 )雹洗,當(dāng)發(fā)出一個目的地址為10.1.1.255 的分組(封包)時香罐,它將被分發(fā)給該網(wǎng)段上的所有計算機。
24.DNS的概念时肿,用途庇茫,DNS查詢的實現(xiàn)算法
- DNS用途:DNS是由解析器以及域名服務(wù)器組成的。域名服務(wù)器是指保存有該網(wǎng)絡(luò)中所有主機的域名和對應(yīng)IP地址螃成,并具有將域名轉(zhuǎn)換為IP地址功能的服務(wù)器旦签。DNS使用TCP與UDP端口號都是53查坪,主要使用UDP,服務(wù)器之間備份使用TCP宁炫。
- 域名到IP地址的解析過程的要點如下:
- a.當(dāng)某一個應(yīng)用進程需要主機名解析為IP地址時偿曙,該應(yīng)用進程就調(diào)用解析程序,并成為DNS的一個客戶羔巢,把待解析的域名放在DNS請求報文中望忆,以UDP用戶數(shù)據(jù)報方式發(fā)給本地域名服務(wù)器。
- b.本地域名服務(wù)器在查找域名后竿秆,把對應(yīng)的IP地址放在回答報文中返回启摄。應(yīng)用進程獲得目的主機的IP地址后即可進行通信。
- c.若本地域名服務(wù)器不能回答該請求幽钢,則此域名服務(wù)器就暫時成為DNS中的另一個客戶歉备,并向其他域名服務(wù)器發(fā)出查詢請求。這種過程直至找到能夠回答該請求的域名服務(wù)器為止匪燕。
- DNS查詢算法
- 主機向本地域名服務(wù)器的查詢一般都是采用遞歸查詢蕾羊,即如果主機所詢問的本地域名服務(wù)器不知道被查詢域名的IP地址,那么本地域名服務(wù)器就以DNS客戶的身份帽驯,向其他根域名服務(wù)器繼續(xù)發(fā)出查詢請求報文龟再,而不是讓該主機自己進行下一步的查詢。 因此界拦,遞歸查詢返回的查詢結(jié)果或是所要查詢的IP地址吸申,或是報錯。
- 本地域名服務(wù)器向根服務(wù)器的查詢通常采用迭代查詢享甸,即當(dāng)根域名服務(wù)器收到本地域名服務(wù)器收到本地域名服務(wù)器發(fā)出的迭代查詢請求報文時截碴,要么給出所要查詢的IP地址,要么告訴本地域名服務(wù)器“下一次應(yīng)向哪個域名服務(wù)器進行查詢”蛉威。然后讓本地域名服務(wù)器進行后續(xù)的查詢日丹。根域名服務(wù)器通常把自己知道的頂級域名服務(wù)器的IP地址告訴本地域名服務(wù)器,讓本地域名服務(wù)器再向頂級域名服務(wù)器查詢蚯嫌。頂級域名服務(wù)器在收到本地域名服務(wù)器的查詢請求后哲虾,要么給出所要查詢的IP地址,要么告訴本地域名服務(wù)器下一步應(yīng)當(dāng)向哪一個權(quán)限域名服務(wù)器進行查詢择示。本地域名服務(wù)器就這樣進行迭代查詢束凑。
25.TCP的流量控制
- 1.利用滑動窗口實現(xiàn)流量控制
-
如果發(fā)送方把數(shù)據(jù)發(fā)送得過快,接收方可能會來不及接收栅盲,這就會造成數(shù)據(jù)的丟失汪诉。所謂流量控制就是讓發(fā)送方的發(fā)送速率不要太快,要讓接收方來得及接收。利用滑動窗口機制可以很方便地在TCP連接上實現(xiàn)對發(fā)送方的流量控制扒寄。設(shè)A向B發(fā)送數(shù)據(jù)鱼鼓,在連接建立時,B告訴了A:“我的接收窗口是 rwnd = 400 ”(這里的 rwnd 表示 receiver window) 该编。因此迄本,發(fā)送方的發(fā)送窗口不能超過接收方給出的接收窗口的數(shù)值。請注意课竣,TCP的窗口單位是字節(jié)嘉赎,不是報文段。TCP連接建立時的窗口協(xié)商過程在圖中沒有顯示出來于樟。再設(shè)每一個報文段為100字節(jié)長曹阔,而數(shù)據(jù)報文段序號的初始值設(shè)為1。大寫ACK表示首部中的確認位ACK隔披,小寫ack表示確認字段的值ack。
- 從圖中可以看出寂拆,B進行了三次流量控制奢米。第一次把窗口減少到rwnd=300 ,第二次又減到了rwnd=100 纠永,最后減到rwnd=0 鬓长,即不允許發(fā)送方再發(fā)送數(shù)據(jù)了。這種使發(fā)送方暫停發(fā)送的狀態(tài)將持續(xù)到主機B重新發(fā)出一個新的窗口值為止尝江。B向A發(fā)送的三個報文段都設(shè)置了ACK=1 涉波,只有在ACK=1時確認號字段才有意義。TCP為每一個連接設(shè)有一個持續(xù)計時器(persistence timer)炭序。只要TCP連接的一方收到對方的零窗口通知啤覆,就啟動持續(xù)計時器。若持續(xù)計時器設(shè)置的時間到期惭聂,就發(fā)送一個零窗口控測報文段(攜1字節(jié)的數(shù)據(jù))窗声,那么收到這個報文段的一方就重新設(shè)置持續(xù)計時器。
-
- 2.必須考慮傳輸速率
- 可以用不同的機制來控制TCP報文段的發(fā)送時機辜纲。如:
- a.TCP維持一個變量笨觅,它等于最大報文段長度MSS。只要緩存中存放的數(shù)據(jù)達到MSS字節(jié)時耕腾,就組裝成一個TCP報文段發(fā)送出去见剩。
- b.由發(fā)送方的應(yīng)用進程指明要求發(fā)送報文段,即TCP支持的推送( push )操作扫俺。
- c.發(fā)送方的一個計時器期限到了苍苞,這時就把已有的緩存數(shù)據(jù)裝入報文段(但長度不能超過MSS)發(fā)送出去。
- 3.Nagle算法
- 若發(fā)送應(yīng)用進程把要發(fā)送的數(shù)據(jù)逐個字節(jié)地送到TCP的發(fā)送緩存牵舵,則發(fā)送方就把第一個數(shù)據(jù)字節(jié)先發(fā)送出去柒啤,把后面到達的數(shù)據(jù)字節(jié)都緩存起來倦挂。當(dāng)發(fā)送方接收對第一個數(shù)據(jù)字符的確認后,再把發(fā)送緩存中的所有數(shù)據(jù)組裝成一個報文段再發(fā)送出去担巩,同時繼續(xù)對隨后到達的數(shù)據(jù)進行緩存方援。只有在收到對前一個報文段的確認后才繼續(xù)發(fā)送下一個報文段。當(dāng)數(shù)據(jù)到達較快而網(wǎng)絡(luò)速率較慢時涛癌,用這樣的方法可明顯地減少所用的網(wǎng)絡(luò)帶寬犯戏。Nagle算法還規(guī)定:當(dāng)?shù)竭_的數(shù)據(jù)已達到 發(fā)送窗口大小的一半或已達到報文段的最大長度時,就立即發(fā)送一個報文段拳话。
- 4.糊涂窗口綜合證:TCP接收方的緩存已滿先匪,而交互式的應(yīng)用進程一次只從接收緩存中讀取1字節(jié)(這樣就使接收緩存空間僅騰出1字節(jié)),然后向發(fā)送方發(fā)送確認弃衍,并把窗口設(shè)置為1個字節(jié)(但發(fā)送的數(shù)據(jù)報為40字節(jié)的的話)呀非。接收,發(fā)送方又發(fā)來1個字節(jié)的數(shù)據(jù)(發(fā)送方的IP數(shù)據(jù)報是41字節(jié))镜盯。接收方發(fā)回確認岸裙,仍然將窗口設(shè)置為1個字節(jié)。這樣速缆,網(wǎng)絡(luò)的效率很低降允。要解決這個問題,可讓接收方等待一段時間艺糜,使得或者接收緩存已有足夠空間容納一個最長的報文段剧董,或者等到接收方緩存已有一半空閑的空間。只要出現(xiàn)這兩種情況破停,接收方就發(fā)回確認報文翅楼,并向發(fā)送方通知當(dāng)前的窗口大小。此外辱挥,發(fā)送方也不要發(fā)送太小的報文段犁嗅,而是把數(shù)據(jù)報積累成足夠大的報文段,或達到接收方緩存的空間的一半大小晤碘。
26.TCP擁塞控制
- 1.擁塞:擁塞:即對資源的需求超過了可用的資源褂微。若網(wǎng)絡(luò)中許多資源同時供應(yīng)不足,網(wǎng)絡(luò)的性能就要明顯變壞园爷,整個網(wǎng)絡(luò)的吞吐量隨之負荷的增大而下降宠蚂。擁塞控制:防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載童社。擁塞控制所要做的都有一個前提:網(wǎng)絡(luò)能夠承受現(xiàn)有的網(wǎng)絡(luò)負荷求厕。擁塞控制是一個全局性的過程,涉及到所有的主機、路由器呀癣,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素美浦。流量控制:指點對點通信量的控制,是端到端正的問題项栏。流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率浦辨,以便使接收端來得及接收。擁塞控制代價:需要獲得網(wǎng)絡(luò)內(nèi)部流量分布的信息沼沈。在實施擁塞控制之前流酬,還需要在結(jié)點之間交換信息和各種命令,以便選擇控制的策略和實施控制列另。這樣就產(chǎn)生了額外的開銷芽腾。擁塞控制還需要將一些資源分配給各個用戶單獨使用,使得網(wǎng)絡(luò)資源不能更好地實現(xiàn)共享页衙。
- 2.幾種擁塞控制方法
- 慢開始( slow-start )摊滔、擁塞避免( congestion avoidance )、快重傳( fast retransmit )和快恢復(fù)( fast recovery )店乐。
- 3.慢開始和擁塞避免
- 發(fā)送方維持一個擁塞窗口 cwnd ( congestion window )的狀態(tài)變量惭载。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動態(tài)地在變化响巢。發(fā)送方讓自己的發(fā)送窗口等于擁塞。發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞棒妨,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞矾柜,擁塞窗口就減小一些局扶,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。
-
慢開始算法:當(dāng)主機開始發(fā)送數(shù)據(jù)時纷纫,如果立即所大量數(shù)據(jù)字節(jié)注入到網(wǎng)絡(luò)枕扫,那么就有可能引起網(wǎng)絡(luò)擁塞,因為現(xiàn)在并不清楚網(wǎng)絡(luò)的負荷情況辱魁。因此烟瞧,較好的方法是先探測一下,即由小到大逐漸增大發(fā)送窗口染簇,也就是說参滴,由小到大逐漸增大擁塞窗口數(shù)值。通常在剛剛開始發(fā)送報文段時锻弓,先把擁塞窗口 cwnd 設(shè)置為一個最大報文段MSS的數(shù)值砾赔。而在每收到一個對新的報文段的確認后,把擁塞窗口增加至多一個MSS的數(shù)值。用這樣的方法逐步增大發(fā)送方的擁塞窗口cwnd 暴心,可以使分組注入到網(wǎng)絡(luò)的速率更加合理妓盲。每經(jīng)過一個傳輸輪次,擁塞窗口 cwnd 就加倍专普。一個傳輸輪次所經(jīng)歷的時間其實就是往返時間RTT悯衬。不過“傳輸輪次”更加強調(diào):把擁塞窗口cwnd所允許發(fā)送的報文段都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個字節(jié)的確認脆诉。另外甚亭,慢開始的“慢”并不是指cwnd的增長速率慢,而是指在TCP開始發(fā)送報文段時先設(shè)置cwnd=1击胜,使得發(fā)送方在開始時只發(fā)送一個報文段(目的是試探一下網(wǎng)絡(luò)的擁塞情況)亏狰,然后再逐漸增大cwnd。為了防止擁塞窗口cwnd增長過大引起網(wǎng)絡(luò)擁塞偶摔,還需要設(shè)置一個慢開始門限ssthresh狀態(tài)變量(如何設(shè)置ssthresh)暇唾。慢開始門限ssthresh的用法如下:
- 當(dāng) cwnd < ssthresh 時,使用上述的慢開始算法辰斋。
- 當(dāng) cwnd > ssthresh 時策州,停止使用慢開始算法而改用擁塞避免算法。
- 當(dāng) cwnd = ssthresh 時宫仗,既可使用慢開始算法够挂,也可使用擁塞控制避免算法。
-
擁塞避免算法:讓擁塞窗口cwnd緩慢地增大藕夫,即每經(jīng)過一個往返時間RTT就把發(fā)送方的擁塞窗口cwnd加1孽糖,而不是加倍。這樣擁塞窗口cwnd按線性規(guī)律緩慢增長毅贮,比慢開始算法的擁塞窗口增長速率緩慢得多办悟。無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有收到確認)滩褥,就要把慢開始門限ssthresh設(shè)置為出現(xiàn)擁塞時的發(fā)送方窗口值的一半(但不能小于2)病蛉。然后把擁塞窗口cwnd重新設(shè)置為1,執(zhí)行慢開始算法瑰煎。這樣做的目的就是要迅速減少主機發(fā)送到網(wǎng)絡(luò)中的分組數(shù)铺然,使得發(fā)生擁塞的路由器有足夠時間把隊列中積壓的分組處理完畢。如下圖酒甸,用具體數(shù)值說明了上述擁塞控制的過程√饺郏現(xiàn)在發(fā)送窗口的大小和擁塞窗口一樣大。
- a.當(dāng)TCP連接進行初始化時烘挫,把擁塞窗口cwnd置為1诀艰。前面已說過柬甥,為了便于理解,圖中的窗口單位不使用字節(jié)而使用報文段的個數(shù)其垄。慢開始門限的初始值設(shè)置為16個報文段苛蒲,即 cwnd = 16 。
- b.在執(zhí)行慢開始算法時绿满,擁塞窗口 cwnd 的初始值為1臂外。以后發(fā)送方每收到一個對新報文段的確認ACK,就把擁塞窗口值另1喇颁,然后開始下一輪的傳輸(圖中橫坐標(biāo)為傳輸輪次)漏健。因此擁塞窗口cwnd隨著傳輸輪次按指數(shù)規(guī)律增長。 當(dāng)擁塞窗口cwnd增長到慢開始門限值ssthresh時(即當(dāng)cwnd=16時)橘霎,就改為執(zhí)行擁塞控制算法蔫浆,擁塞窗口按線性規(guī)律增長。
- c.假定擁塞窗口的數(shù)值增長到24時姐叁,網(wǎng)絡(luò)出現(xiàn)超時(這很可能就是網(wǎng)絡(luò)發(fā)生擁塞了)瓦盛。更新后的ssthresh值變?yōu)?2(即變?yōu)槌霈F(xiàn)超時時的擁塞窗口數(shù)值24的一半),擁塞窗口再重新設(shè)置為1外潜,并執(zhí)行慢開始算法原环。 當(dāng)cwnd=ssthresh=12時改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長处窥,每經(jīng)過一個往返時間增加一個MSS的大小嘱吗。強調(diào):“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的滔驾」裼耄“擁塞避免”是說在擁塞避免階段將擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞嵌灰。
- 4.快重傳和快恢復(fù)
- 快重傳:如果發(fā)送方設(shè)置的超時計時器時限已到但還沒有收到確認,那么很可能是網(wǎng)絡(luò)出現(xiàn)了擁塞颅悉,致使報文段在網(wǎng)絡(luò)中的某處被丟棄沽瞭。這時,TCP馬上把擁塞窗口 cwnd 減小到1剩瓶,并執(zhí)行慢開始算法驹溃,同時把慢開始門限值ssthresh減半。這是不使用快重傳的情況延曙⊥愫祝快重傳算法首先要求接收方每收到一個失序的報文段后就立即發(fā)出重復(fù)確認(為的是使發(fā)送方及早知道有報文段沒有到達對方)而不要等到自己發(fā)送數(shù)據(jù)時才進行捎帶確認。接收方收到了M1和M2后都分別發(fā)出了確認≈Φ蓿現(xiàn)在假定接收方?jīng)]有收到M3但接著收到了M4布疙。顯然蚊惯,接收方不能確認M4,因為M4是收到的失序報文段灵临。根據(jù)可靠傳輸原理截型,接收方可以什么都不做,也可以在適當(dāng)時機發(fā)送一次對M2的確認儒溉。但按照快重傳算法的規(guī)定宦焦,接收方應(yīng)及時發(fā)送對M2的重復(fù)確認,這樣做可以讓發(fā)送方及早知道報文段M3沒有到達接收方顿涣。發(fā)送方接著發(fā)送了M5和M6波闹。接收方收到這兩個報文后,也還要再次發(fā)出對M2的重復(fù)確認涛碑。這樣精堕,發(fā)送方共收到了接收方的四個對M2的確認,其中后三個都是重復(fù)確認锌唾〕耄快重傳算法還規(guī)定,發(fā)送方只要一連收到三個重復(fù)確認就應(yīng)當(dāng)立即重傳對方尚未收到的報文段M3晌涕,而不必繼續(xù)等待M3設(shè)置的重傳計時器到期滋捶。由于發(fā)送方盡早重傳未被確認的報文段,因此采用快重傳后可以使整個網(wǎng)絡(luò)吞吐量提高約20%余黎。
-
快恢復(fù):
- a.當(dāng)發(fā)送方連續(xù)收到三個重復(fù)確認重窟,就執(zhí)行“乘法減小”算法,把慢開始門限ssthresh減半惧财。這是為了預(yù)防網(wǎng)絡(luò)發(fā)生擁塞巡扇。請注意:接下去不執(zhí)行慢開始算法。
- b.由于發(fā)送方現(xiàn)在認為網(wǎng)絡(luò)很可能沒有發(fā)生擁塞垮衷,因此與慢開始不同之處是現(xiàn)在不執(zhí)行慢開始算法(即擁塞窗口cwnd現(xiàn)在不設(shè)置為1)厅翔,而是把cwnd值設(shè)置為慢開始門限ssthresh減半后的數(shù)值,然后開始執(zhí)行擁塞避免算法(“加法增大”)搀突,使擁塞窗口緩慢地線性增大刀闷。
- 5.停止等待協(xié)議和滑動窗口協(xié)議
- 停止等待協(xié)議:是tcp保證傳輸可靠的重要途徑,”停止等待”就是指發(fā)送完一個分組就停止發(fā)送仰迁,等待對方的確認甸昏,只有對方確認過,才發(fā)送下一個分組.
- 滑動窗口協(xié)議:之所以叫滑動窗口協(xié)議徐许,是因為窗口是不斷向前走的施蜜,該協(xié)議允許發(fā)送方在停止并等待確認前發(fā)送多個數(shù)據(jù)分組。由于發(fā)送方不必每發(fā)一個分組就停下來等待確認雌隅,因此該協(xié)議可以加速數(shù)據(jù)的傳輸翻默,還可以控制流量的問題缸沃。滑動窗口協(xié)議中冰蘑,允許發(fā)送方發(fā)送多個分組(當(dāng)有多個分組可用時)而不需等待確認和泌,但它受限于在流水線 中為未確認的分組數(shù)不能超過某個最大允許數(shù)N§舴剩滑動窗口協(xié)議是TCP使用的一種流量控制方法武氓,此協(xié)議能夠加速數(shù)據(jù)的傳輸。 只有在接收窗口向前滑動時(與此同時也發(fā)送了確認)仇箱,發(fā)送窗口才有可能向前滑動县恕。收發(fā)兩端的窗口按照以上規(guī)律不斷地向前滑動,因此這種協(xié)議稱為滑動窗口協(xié)議剂桥。當(dāng)發(fā)送窗口和接收窗口的大小都等于1時忠烛,就是停止等待協(xié)議。
27.TIME_WAIT狀態(tài)及存在原因
- 客戶端與服務(wù)器端建立TCP/IP連接后關(guān)閉SOCKET后权逗,服務(wù)器端連接的端口狀態(tài)為TIME_WAIT美尸;
- 主動關(guān)閉的Socket端會進入TIME_WAIT狀態(tài),并且持續(xù)2MSL時間長度斟薇,MSL就是maximum segment lifetime(最大分節(jié)生命期)师坎;這是一個IP數(shù)據(jù)包能在互聯(lián)網(wǎng)上生存的最長時間,超過這個時間將在網(wǎng)絡(luò)中消失堪滨。MSL在RFC 1122上建議是2分鐘胯陋,而源自berkeley的TCP實現(xiàn)傳統(tǒng)上使用30秒,因而袱箱,TIME_WAIT狀態(tài)一般維持在1-4分鐘遏乔。
- 主動關(guān)閉的一方在發(fā)送最后一個ack后就會進入TIME_WAIT狀態(tài)停留2MSL(max segment lifetime)時間這個是TCP/IP必不可少的,也就是“解決”不了的发笔。
- TIME_WAIT狀態(tài)存在的理由:
- a.防止上一次連接中的包盟萨,迷路后重新出現(xiàn),影響新連接(經(jīng)過2MSL了讨,上一次連接中所有的重復(fù)包都會消失)
- b.可靠的關(guān)閉TCP連接:在進行關(guān)閉連接四路握手協(xié)議時捻激,最后的ACK是由主動關(guān)閉端發(fā)出的,如果這個最終的ACK丟失量蕊,服務(wù)器將重發(fā)最終的FIN,因此客戶端必須維護狀態(tài)信息允 許它重發(fā)最終的ACK艇挨。
如果不維持這個狀態(tài)信息残炮,那么客戶端將響應(yīng)RST分節(jié),服務(wù)器將此分節(jié)解釋成一個錯誤缩滨。因而势就,要實現(xiàn)TCP全雙工連接的正常終止泉瞻,必須處理終止序列四個分節(jié)中任何一個分節(jié)的丟失情況,主動關(guān)閉 的客戶端必須維持狀態(tài)信息進入TIME_WAIT狀態(tài)苞冯。
28.Http2.0和Http1.0區(qū)別
- Http2.0采用二進制格式非文本格式袖牙;
- Http2.0是完全多路復(fù)用的,非有序并阻塞的只需要一個連接即可實現(xiàn)并行舅锄;
- 使用報頭壓縮鞭达,降低了開銷;
- Http2.0讓服務(wù)器可以將響應(yīng)主動推送到客戶端緩存中皇忿。
29.SMTP和POP3協(xié)議的區(qū)別
- SMTP用來發(fā)生郵件的畴蹭,端口號25;POP3用來接收郵件的鳍烁,端口號110叨襟,使用TCP協(xié)議。