目錄
??一、應(yīng)用層協(xié)議
??1、XML協(xié)議?
???2、JSON
???3、其他協(xié)議
??二、傳輸層協(xié)議(UDP與TCP重點(diǎn))
??1、UDP協(xié)議格式
???2、TCP協(xié)議格式
??TCP的10條機(jī)制(必會)
1、確認(rèn)應(yīng)答機(jī)制(可靠機(jī)制)
2、超時重傳機(jī)制(可靠機(jī)制)
3、連接管理機(jī)制(三次握手,四次揮手)(可靠機(jī)制)
4、滑動窗口機(jī)制(效率機(jī)制)
5、流量控制(可靠機(jī)制)
6、擁塞控制 (可靠機(jī)制)
7、延遲應(yīng)答(效率機(jī)制)
8、捎帶應(yīng)答(效率機(jī)制)
9、面向字節(jié)流
10、TCP異常情況
??三、網(wǎng)絡(luò)層重點(diǎn)協(xié)議
??1、IP協(xié)議格式?編輯
??2、IP地址:IPv4與IPv6
??3、路由選擇?
??四、數(shù)據(jù)鏈路層重點(diǎn)協(xié)議
??1、以太網(wǎng)格式
??2、MTU(最大傳輸單元)
??一、應(yīng)用層協(xié)議
????????在開發(fā)應(yīng)用程序時,一個很重要的工作就是進(jìn)行協(xié)議的確定。協(xié)議就是組織數(shù)據(jù)的格式。
????????確定應(yīng)用層協(xié)議:在前文中我們實現(xiàn)的TCP服務(wù)器與客戶端,發(fā)送雙方確定的應(yīng)用層協(xié)議就是以換行符作為每條消息的結(jié)尾,雙方在發(fā)送的時候按照換行符進(jìn)行編碼,接收的時候按照換行符再進(jìn)行解碼。
? ? ? ? 實際上,每個程序?qū)f(xié)議的數(shù)據(jù)格式進(jìn)行自定義,但是如果每個程序都定義的不一樣沒那么就不太靈活,雙方都要按照不太的方式去解析和編碼請求和響應(yīng)內(nèi)容,于是大佬們對一些常用的應(yīng)用場景做了一些特殊協(xié)議并確定下來,形成了標(biāo)準(zhǔn)常見的應(yīng)用層協(xié)議,HTTP,F(xiàn)TP,XML,JSON...
??1、XML協(xié)議?
xml主要是一種組織數(shù)據(jù)的格式。
???2、JSON
JSON也是組織數(shù)據(jù)的一種方式。
???3、其他協(xié)議
??二、傳輸層協(xié)議(UDP與TCP重點(diǎn))
傳輸層的協(xié)議主要有兩個:UDP與TCP
??1、UDP協(xié)議格式
在解析UDP數(shù)據(jù)報文件的時候,先截取16位表示源端口,再截取16位表示目標(biāo)端口號,再截取16位表示UDP長度...
???2、TCP協(xié)議格式
?TCP對數(shù)據(jù)傳輸提供的管控機(jī)制,主要體現(xiàn)在兩個方面:安全和效率。
??TCP的10條機(jī)制(必會)
1、確認(rèn)應(yīng)答機(jī)制(可靠機(jī)制)
(1)分析現(xiàn)象:由于網(wǎng)絡(luò)錯亂導(dǎo)致消息到達(dá)的時間不同,會造成消息的亂序。
(2)解決辦法:
TCP為了解決收發(fā)亂序的問題,對每個字節(jié)進(jìn)行編號。
?
?2、超時重傳機(jī)制(可靠機(jī)制)
原因:消息在網(wǎng)絡(luò)傳輸?shù)倪^程中:操作系統(tǒng)->網(wǎng)卡->交換機(jī)->路由器->其他的網(wǎng)絡(luò)設(shè)備,每個設(shè)置都有自己的負(fù)載能力,如果超出了范圍,當(dāng)前的數(shù)據(jù)包就可能阻塞或者丟棄。
?????????不過在情況2中,主機(jī)其實已經(jīng)接收到了數(shù)據(jù),只是A沒有收到ACK。因此A重發(fā)消息,但是存在B會重復(fù)接收的一個問題。因此B會在自己的緩沖區(qū)中利用32位的序列號過濾到重復(fù)數(shù)據(jù)。?
了解:
?3、連接管理機(jī)制(三次握手,四次揮手)(可靠機(jī)制)
????????主機(jī)之間:發(fā)送方與接收方之間要進(jìn)行網(wǎng)絡(luò)通信,必須要確認(rèn)雙方收發(fā)數(shù)據(jù)的能力。其中涉及到建立連接與斷開連接的協(xié)商過程。
三次握手:正常通信之前確認(rèn)雙方能力
面試題1:?三次握手的過程??三次握手的過程能不能簡化為兩次?四次又是怎么實現(xiàn)的?
?兩次不可以的,因為沒有完整的校驗雙方的收發(fā)能力;四次是可以的,不過三次就足夠了。
參考資料1
參考資料2
三次握手還有一個重要的功能就是協(xié)商序列號是從哪里開始。![]()
?四次揮手:斷開連接的過程
4、滑動窗口機(jī)制(效率機(jī)制)
? ? ? ? (1)針對的問題:之前說到確認(rèn)應(yīng)答機(jī)制,對于每一發(fā)送的數(shù)據(jù)段,都要給一個ACK應(yīng)答,接收到ACK應(yīng)答之后再發(fā)送下一個數(shù)據(jù)段。這種數(shù)據(jù)一發(fā)一收的過程雖然可以保證正常通信,但是效率并不高。
? ? ? ? (2)滑動窗口:既然一發(fā)一收的性能比較低,那么我們一次發(fā)送多條數(shù)據(jù),就可以大大提高性能。
?(3)預(yù)見可能會遇見的丟包問題
情況1:ACK丟了
情況2:發(fā)送的請求包丟包?
問題:滑動窗口與效率大???
(1)效率的高低與窗口大小有關(guān);
(2)窗口越大效率越高;
(3)窗口越小,效率越低;
(4)假設(shè)窗口無窮大,此時發(fā)送方就完全不需要等待ACK,此時的效率就和UDP一樣,不需要響應(yīng)就可以直接發(fā)送。?
新的問題:滑動窗口的大小到底取多少合適呢?——>因此提出了接下來的?流量控制機(jī)制。
5、流量控制(可靠機(jī)制)
主要目標(biāo):流量控制機(jī)制主要是用來確定滑動窗口的大小,通過發(fā)送方與接收方動態(tài)協(xié)商來確認(rèn)的。
6、擁塞控制 (可靠機(jī)制)
解決的問題:
????????雖然TCP有了滑動窗口這個大殺器,能夠高效可靠的發(fā)送大量的數(shù)據(jù)。但是如果在剛開始階段就發(fā)送大量的數(shù)據(jù),仍然可能引發(fā)問題。
????????因為網(wǎng)絡(luò)上有很多的計算機(jī),可能當(dāng)前的網(wǎng)絡(luò)狀態(tài)就已經(jīng)比較擁堵。在不清楚當(dāng)前網(wǎng)絡(luò)狀態(tài)下,貿(mào)然發(fā)送大量的數(shù)據(jù),是很有可能引起雪上加霜的。
????????TCP引入 慢啟動 機(jī)制,先發(fā)少量的數(shù)據(jù),探探路,摸清當(dāng)前的網(wǎng)絡(luò)擁堵狀態(tài),再決定按照多大的速度傳輸數(shù)據(jù);
實際上就是在每次通信過程中試探網(wǎng)絡(luò)的擁堵狀態(tài),從而調(diào)整窗口大小。
因此動態(tài)調(diào)整窗口大小,與接收方的緩沖區(qū)大小有關(guān),也與網(wǎng)絡(luò)大小有關(guān)。
問題:窗口大小的取值,以哪個值為準(zhǔn)?
(1)接收方緩沖區(qū)大小
(2)擁塞控制中跟開網(wǎng)絡(luò)的狀態(tài)確定下來的窗口大小
以這兩個值中較小的那個為準(zhǔn)。
7、延遲應(yīng)答(效率機(jī)制)
8、捎帶應(yīng)答(效率機(jī)制)
9、面向字節(jié)流
(1)存在的問題:粘包問題
?(2)解決粘包問題
- 來回往復(fù)的讀?。洪L度+消息體
- 在消息末尾加特殊字符表示消息結(jié)束。
10、TCP異常情況
問題1
?問題2
??三、網(wǎng)絡(luò)層重點(diǎn)協(xié)議
??1、IP協(xié)議格式
理解16位標(biāo)識,3位標(biāo)志字段與13位分片偏移。? ? ? ? ?
????????對于較長的消息,TCP報文中可能無法承載。就將過長的消息分割成很多小消息體。這一整個大的消息用16位標(biāo)識表示,三位標(biāo)志字段如果表示的是“更多分片”,就表示若干個小的消息體。假設(shè)TCP報文中一次只能承載10M,分成10份,每個小的消息分片只是1M,13位偏移表示小的消息體從哪個位置開始。
??
???2、IP地址:IPv4與IPv6
1、IPv4
總長是32位,最多可以表示42億個地址。
問題1:怎么分配這些IP地址讓計算機(jī)之間可以相互訪問呢?
(1)動態(tài)分配
設(shè)置上網(wǎng)的時候才獲取一個IP(一個IP只能同時表示一臺主機(jī)),下線的時候就會被收回。
(2)NET機(jī)制
一個子網(wǎng)中的所有機(jī)器,共用一個公網(wǎng)IP地址(不能重復(fù)),子網(wǎng)中的機(jī)器分配內(nèi)網(wǎng)IP(不同子網(wǎng)中是可以重復(fù)的)。
?
2、IPv6
IPv6的范圍?可以為地球上的每一粒沙子分配一個IP。
??3、路由選擇?
?舉個例子
??四、數(shù)據(jù)鏈路層重點(diǎn)協(xié)議
??1、以太網(wǎng)格式
??2、MTU(最大傳輸單元)
面試題
文章來源:http://www.zghlxwxcb.cn/news/detail-765872.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-765872.html
到了這里,關(guān)于【網(wǎng)絡(luò)原理】TCP/IP四層模型中的重點(diǎn)網(wǎng)絡(luò)協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!