(1)OSI七層模型和TCP/IP四層模型

OSI
-
應用層 :為特定應用程式提供資料傳輸服務,例如 HTTP、DNS 等協議,資料單位為報文,
-
傳輸層 :為行程提供通用資料傳輸服務,運輸層包括兩種協議:TCP,提供面向連接、可靠的資料傳輸服務,資料單位為報文段;用戶資料報協議 UDP,提供無連接、盡最大努力的資料傳輸服務,資料單位為用戶資料報,
-
網路層 :為主機提供資料傳輸服務,網路層把傳輸層傳遞下來的報文段或者用戶資料報封裝成分組,IP協議,ICMP協議,ARP等
-
資料鏈路層 :資料鏈路層把網路層傳下來的分組封裝成MAX幀,點到點的傳遞,傳輸單位為幀,主要包括的協議為MAC VLAN PPP
-
物理層 :物理層的作用是盡可能屏蔽傳輸媒體和通信手段的差異,使資料鏈路層感覺不到這些差異,
-
表示層 :資料壓縮、加密以及資料描述
-
會話層 :建立及管理會話,
TCP/IP
它只有四層,相當于五層協議中資料鏈路層和物理層合并為網路介面層,
網路介面層:MAC VLAN
網路層:IP ARP ICMP
傳輸層:TCP UDP
應用層:HTTP DNS SMTP
(2)計算機網路 - 鏈路層
1. 封裝成幀
將網路層傳下來的分組添加首部和尾部,
2. 透明傳輸
幀使用首部和尾部進行定界,如果幀的資料部分含有和首部尾部相同的內容,那么幀的開始和結束位置就會被錯誤的判定,零位元插入洗掉法
3. 差錯檢測
資料鏈路層廣泛使用了回圈冗余檢驗(CRC)來檢查位元差錯,
PPP 協議
互聯網用戶通常需要連接到某個 ISP 之后才能接入到互聯網,PPP 協議是用戶計算機和 ISP 進行通信時所使用的資料鏈路層協議,
(3)計算機網路 - 網路層
網路層向上只提供簡單靈活的、無連接的、盡最大努力互動的資料報服務,使用 IP 協議,可以把異構的物理網路連接起來,使得在網路層看起來好像是一個統一的網路,
與 IP 協議配套使用的還有三個協議:
- 地址決議協議 ARP(Address Resolution Protocol)
- 網際控制報文協議 ICMP(Internet Control Message Protocol)
- 網際組管理協議 IGMP(Internet Group Management Protocol)
子網劃分:IP 地址 ::= {< 網路號 >, < 子網號 >, < 主機號 >}
無分類:使用網路前綴和主機號來對 IP 地址進行編碼,網路前綴的長度可以根據需要變化,
IP 地址 ::= {< 網路前綴號 >, < 主機號 >}
地址決議協議 ARP
通信程序中,IP 資料報的源地址和目的地址始終不變,而 MAC 地址隨著鏈路的改變而改變,ARP 實作由 IP 地址得到 MAC 地址,
網路層等到資料鏈層用mac地址作為通信目標,資料包到達網路等準備往資料鏈層發送的時候,首先會去自己的arp快取表(存著ip-mac對應關系)去查找改目標ip的mac地址,如果查到了,就講目標ip的mac地址封裝到鏈路層資料包的包頭,如果快取中沒有找到,會發起一個廣播:who is ip XXX tell ip XXX,所有收到的廣播的機器看這個ip是不是自己的,如果是自己的,則以單撥的形式將自己的mac地址回復給請求的機器
如果主機 A 知道主機 B 的 IP 地址,但是 ARP 高速快取中沒有該 IP 地址到 MAC 地址的映射,此時主機 A 通過廣播的方式發送 ARP 請求分組,主機 B 收到該請求后會發送 ARP 回應分組給主機 A 告知其 MAC 地址,隨后主機 A 向其高速快取中寫入主機 B 的 IP 地址到 MAC 地址的映射,
虛擬專用網 VPN
下圖中,場所 A 和 B 的通信經過互聯網,如果場所 A 的主機 X 要和另一個場所 B 的主機 Y 通信,IP 資料報的源地址是 10.1.0.1,目的地址是 10.2.0.3,資料報先發送到與互聯網相連的路由器 R1,R1 對內部資料進行加密,然后重新加上資料報的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6,路由器 R2 收到資料報后將資料部分進行解密,恢復原來的資料報,此時目的地址為 10.2.0.3,就交付給 Y,
網路地址轉換 NAT
專用網內部的主機使用本地 IP 地址又想和互聯網上的主機通信時,可以使用 NAT 來將本地 IP 轉換為全球 IP,
(4)計算機網路 - 傳輸層
TCP和UDP的區別和各自適用的場景
參考回答:
1)TCP和UDP區別
1) 連接
TCP是面向連接的傳輸層協議,即傳輸資料之前必須先建立好連接,
UDP無連接,
2) 服務物件
TCP是點對點的兩點間服務,即一條TCP連接只能有兩個端點;
UDP支持一對一,一對多,多對一,多對多的互動通信,
3) 可靠性
TCP是可靠交付:無差錯,不丟失,不重復,按序到達,
UDP是盡最大努力交付,不保證可靠交付,
4)擁塞控制,流量控制
TCP有擁塞控制和流量控制保證資料傳輸的安全性,
UDP沒有擁塞控制,網路擁塞不會影響源主機的發送效率,
5) 報文長度
TCP是動態報文長度,即TCP報文長度是根據接收方的視窗大小和當前網路擁塞情況決定的,
UDP面向報文,不合并,不拆分,保留上面傳下來報文的邊界,
6) 首部開銷
TCP首部開銷大,首部20個位元組,
UDP首部開銷小,8位元組,(源埠,目的埠,資料長度,校驗和)
2)TCP和UDP適用場景
從特點上我們已經知道,TCP 是可靠的但傳輸速度慢,UDP 是不可靠的但傳輸速度快,因此在選用具體協議通信時,應該根據通信資料的要求而決定,
若通信資料完整性需讓位與通信實時性,則應該選用TCP 協議(如檔案傳輸、重要狀態的更新等);反之,則使用 UDP 協議(如視頻傳輸、實時通信等),
請你說說傳遞到IP層怎么知道報文該給哪個應用程式,它怎么區分UDP報文還是TCP報文
參考回答:
根據埠區分;
看ip頭中的協議標識欄位,17是udp,6是tcp
TCP怎么保證可靠性,并且簡述一下TCP建立連接和斷開連接的程序
(1)序列號、確認應答、超時重傳
資料到達接收方,接收方需要發出一個確認應答,表示已經收到該資料段,并且確認序號會說明了它下一次需要接收的資料序列號,
(2)視窗控制與高速重發控制/快速重傳(重復確認應答)
(3)擁塞控制
如果把視窗定的很大,發送端連續發送大量的資料,可能會造成網路的擁堵(大家都在用網,你在這狂發,吞吐量就那么大,當然會堵),甚至造成網路的癱瘓,
TCP 的三次握手

三次握手的原因:三次握手可以防止已經失效的連接請求報文突然又傳輸到服務器端導致的服務器資源浪費,例如,客戶端先發送了一個SYN,但是由于網路阻塞,該SYN資料包在某個節點長期滯留,然后客戶端又重傳SYN資料包并正確建立TCP連接,然后傳輸完資料后關閉該連接,該連接釋放后失效的SYN資料包才到達服務器端,在二次握手的前提下,服務器端會認為這是客戶端發起的又一次請求,然后發送SYN ,并且在服務器端創建socket套接字,一直等待客戶端發送資料,但是由于客戶端并沒有發起新的請求,所以會丟棄服務端的SYN ,此時服務器會一直等待客戶端發送資料從而造成資源浪費,
TCP 的四次揮手

四次揮手的原因
客戶端發送了 FIN 連接釋放報文之后,服務器收到了這個報文,就進入了 CLOSE-WAIT 狀態,這個狀態是為了讓服務器端發送還未傳送完畢的資料,傳送完畢之后,服務器會發送 FIN 連接釋放報文,
TCP 流量控制
流量控制是為了控制發送方發送速率,保證接收方來得及接收,
TCP 擁塞控制
如果網路出現擁塞,分組將會丟失,此時發送方會繼續重傳,從而導致網路擁塞程度更高,因此當出現擁塞時,應當控制發送方的速率,這一點和流量控制很像,但是出發點不同,
流量控制是為了讓接收方能來得及接收,而擁塞控制是為了降低整個網路的擁塞程度,

1. 慢開始與擁塞避免
發送的最初執行慢開始,令 cwnd = 1,發送方只能發送 1 個報文段;當收到確認后,將 cwnd 加倍,因此之后發送方能夠發送的報文段數量為:2、4、8 ...
注意到慢開始每個輪次都將 cwnd 加倍,這樣會讓 cwnd 增長速度非常快,從而使得發送方發送的速度增長速度過快,網路擁塞的可能性也就更高,設定一個慢開始門限 ssthresh,當 cwnd >= ssthresh 時,進入擁塞避免,每個輪次只將 cwnd 加 1,
如果出現了超時,則令 ssthresh = cwnd / 2,視窗為1,然后重新執行慢開始,
2. 快重傳
在接收方,要求每次接收到報文段都應該對最后一個已收到的有序報文段進行確認,例如已經接收到 M1 和 M2,此時收到 M4,應當發送對 M2 的確認,
在發送方,如果收到三個重復確認,那么可以知道下一個報文段丟失,此時執行快重傳,立即重傳下一個報文段,例如收到三個 M2,則 M3 丟失,立即重傳 M3,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此時直接進入擁塞避免,
(5)計算機網路 - 應用層
請你來說一說http協議
1)無連接:(也有有連接的)
無連接的含義是限制每次連接只處理一個請求,服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接,采用這種方式可以節省傳輸時間,
2)無狀態:
HTTP協議是無狀態協議,無狀態是指協議對于事務處理沒有記憶能力,缺少狀態意味著如果后續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連接傳送的資料量增大,另一方面,在服務器不需要先前資訊時它的應答就較快,
3)默認埠80
4)基于TCP協議
HTTP 請求/回應的步驟如下:
1、客戶端連接到Web服務器
一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP埠(默認為80)建立一個TCP套接字連接,例如,http://www.baidu.com,
2、發送HTTP請求
通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求資料4部分組成,
3、服務器接受請求并回傳HTTP回應
Web服務器決議請求,定位請求資源,服務器將資源復本寫到TCP套接字,由客戶端讀取,一個回應由狀態行、回應頭部、空行和回應資料4部分組成,
4、釋放連接TCP連接
若connection 模式為close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection 模式為keepalive,則該連接會保持一段時間,在該時間內可以繼續接收請求;
5、客戶端瀏覽器決議HTML內容
客戶端瀏覽器首先決議狀態行,查看表明請求是否成功的狀態代碼,然后決議每一個回應頭,回應頭告知以下為若干位元組的HTML檔案和檔案的字符集,客戶端瀏覽器讀取回應資料HTML,根據HTML的語法對其進行格式化,并在瀏覽器視窗中顯示,
舉例:
在瀏覽器地址欄鍵入URL,按下回車之后會經歷以下流程:
1、瀏覽器向 DNS 服務器請求決議該 URL 中的域名所對應的 IP 地址;
2、決議出 IP 地址后,根據該 IP 地址和默認埠80,和服務器建立TCP連接;
3、瀏覽器發出讀取檔案(URL中域名后面部分對應的檔案)的HTTP 請求,該請求報文作為 TCP 三次握手的第三個報文的資料發送給服務器;
4、服務器對瀏覽器請求作出回應,并把對應的 html 文本發送給瀏覽器;
5、釋放 TCP連接;
6、瀏覽器將該 html 文本并顯示內容;
請回答一下HTTP和HTTPS的區別,以及HTTPS有什么缺點?
參考回答:
HTTP協議和HTTPS協議區別如下:
1)HTTP協議是以明文的方式在網路中傳輸資料,而HTTPS協議傳輸的資料則是經過TLS加密后的,HTTPS具有更高的安全性
2)HTTPS在TCP三次握手階段之后,還需要進行SSL 的handshake,協商加密使用的對稱加密密鑰
3)HTTPS協議需要服務端申請證書,瀏覽器端安裝對應的根證書
4)HTTP協議埠是80,HTTPS協議埠是443
HTTPS優點:
HTTPS傳輸資料程序中使用密鑰進行加密,所以安全性更高
HTTPS協議可以認證用戶和服務器,確保資料發送到正確的用戶和服務器
HTTPS缺點:
HTTPS握手階段延時較高:由于在進行HTTP會話之前還需要進行SSL握手,因此HTTPS協議握手階段延時增加
HTTPS部署成本高:一方面HTTPS協議需要使用證書來驗證自身的安全性,所以需要購買CA證書;另一方面由于采用HTTPS協議需要進行加解密的計算,占用CPU資源較多,需要的服務器配置或數目高
域名系統
DNS 是一個分布式資料庫,提供了主機名和 IP 地址之間相互轉換的服務,
DNS 可以使用 UDP 或者 TCP 進行傳輸,使用的埠號都為 53,大多數情況下 DNS 使用 UDP 進行傳輸
Web 頁面請求程序
1. DHCP 配置主機資訊
-
假設主機最開始沒有 IP 地址以及其它資訊,那么就需要先使用 DHCP 來獲取,
-
主機生成一個 DHCP 請求報文,并將這個報文放入具有目的埠 67 和源埠 68 的 UDP 報文段中,
-
該報文段則被放入在一個具有廣播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 資料報中,
-
該資料報則被放置在 MAC 幀中,該幀具有目的地址 FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:FF,將廣播到與交換機連接的所有設備,
-
連接在交換機的 DHCP 服務器收到廣播幀之后,不斷地向上分解得到 IP 資料報、UDP 報文段、DHCP 請求報文,之后生成 DHCP ACK 報文,該報文包含以下資訊:IP 地址、DNS 服務器的 IP 地址、默認網關路由器的 IP 地址和子網掩碼,該報文被放入 UDP 報文段中,UDP 報文段有被放入 IP 資料報中,最后放入 MAC 幀中,
-
該幀的目的地址是請求主機的 MAC 地址,因為交換機具有自學習能力,之前主機發送了廣播幀之后就記錄了 MAC 地址到其轉發介面的交換表項,因此現在交換機就可以直接知道應該向哪個介面發送該幀,
-
主機收到該幀后,不斷分解得到 DHCP 報文,之后就配置它的 IP 地址、子網掩碼和 DNS 服務器的 IP 地址,并在其 IP 轉發表中安裝默認網關,
2. ARP 決議 MAC 地址
-
主機通過瀏覽器生成一個 TCP 套接字,套接字向 HTTP 服務器發送 HTTP 請求,為了生成該套接字,主機需要知道網站的域名對應的 IP 地址,
-
主機生成一個 DNS 查詢報文,該報文具有 53 號埠,因為 DNS 服務器的埠號是 53,DNS查詢分為兩種方式,一種是遞回查詢,一種是迭代查詢,如果是迭代查詢,本地的DNS服務器,向根域名服務器發送查詢請求,根域名服務器告知該域名的一級域名服務器,然后本地服務器給該一級域名服務器發送查詢請求,然后依次類推直到查詢到該域名的IP地址,DNS服務器是基于UDP的,因此會用到UDP協議,
-
該 DNS 查詢報文被放入目的地址為 DNS 服務器 IP 地址的 IP 資料報中,
-
該 IP 資料報被放入一個以太網幀中,該幀將發送到網關路由器,
-
DHCP 程序只知道網關路由器的 IP 地址,為了獲取網關路由器的 MAC 地址,需要使用 ARP 協議,
-
主機生成一個包含目的地址為網關路由器 IP 地址的 ARP 查詢報文,將該 ARP 查詢報文放入一個具有廣播目的地址(FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:FF)的以太網幀中,并向交換機發送該以太網幀,交換機將該幀轉發給所有的連接設備,包括網關路由器,
-
網關路由器接收到該幀后,不斷向上分解得到 ARP 報文,發現其中的 IP 地址與其介面的 IP 地址匹配,因此就發送一個 ARP 回答報文,包含了它的 MAC 地址,發回給主機,
3. DNS 決議域名
-
知道了網關路由器的 MAC 地址之后,就可以繼續 DNS 的決議程序了,
-
網關路由器接收到包含 DNS 查詢報文的以太網幀后,抽取出 IP 資料報,并根據轉發表決定該 IP 資料報應該轉發的路由器,
-
因為路由器具有內部網關協議(RIP、OSPF)和外部網關協議(BGP)這兩種路由選擇協議,因此路由表中已經配置了網關路由器到達 DNS 服務器的路由表項,
-
到達 DNS 服務器之后,DNS 服務器抽取出 DNS 查詢報文,并在 DNS 資料庫中查找待決議的域名,
-
找到 DNS 記錄之后,發送 DNS 回答報文,將該回答報文放入 UDP 報文段中,然后放入 IP 資料報中,通過路由器反向轉發回網關路由器,并經過以太網交換機到達主機,
4. HTTP 請求頁面
-
有了 HTTP 服務器的 IP 地址之后,主機就能夠生成 TCP 套接字,該套接字將用于向 Web 服務器發送 HTTP GET 報文,
-
在生成 TCP 套接字之前,必須先與 HTTP 服務器進行三次握手來建立連接,生成一個具有目的埠 80 的 TCP SYN 報文段,并向 HTTP 服務器發送該報文段,
-
HTTP 服務器收到該報文段之后,生成 TCP SYN ACK 報文段,發回給主機,
-
連接建立之后,瀏覽器生成 HTTP GET 報文,并交付給 HTTP 服務器,
-
HTTP 服務器從 TCP 套接字讀取 HTTP GET 報文,生成一個 HTTP 回應報文,將 Web 頁面內容放入報文主體中,發回給主機,
-
瀏覽器收到 HTTP 回應報文后,抽取出 Web 頁面內容,之后進行渲染,顯示 Web 頁面,
參考文獻:
文獻
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/297799.html
標籤:其他
