程序員必備的網絡基礎

1. 請介紹一下OSI,TCP/IP,五層協議?

OSI七層模型:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層。

TCP/IP網絡四層協議:應用層、傳輸層、網絡層、網絡接口層。

五層協議:應用層、傳輸層、網絡層、數據鏈路層、物理層。


2.OSI七層模型的作用分別是?

1.應用層:OSI參考模型中最靠近用戶的一層,是爲計算機用戶提供應用接口,也爲用戶直接提供各種網絡服務。我們常見應用層的網絡服務協議有HTTP,HTTPS,FTP,POP3、SMTP等;

2.表示層:提供各種用於應用層數據的編碼和轉換功能,確保一個系統的應用層發送的數據能被另一個系統的應用層識別。如果必要,該層可提供一種標準表示形式,用於將計算機內部的多種數據格式轉換成通信中採用的標準表示形式;

3.會話層:負責建立、管理和終止表示層實體之間的通信會話。該層的通信由不同設備中的應用程序之間的服務請求和響應組成;

4.傳輸層:建立了主機端到端的鏈接,傳輸層的作用是爲上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。我們通常說的,TCP/ UDP就是在這一層。端口號既是這裏的“端”;

5.網絡層:通過IP尋址來建立兩個節點之間的連接,爲源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層;

6.數據鏈路層:將比特組合成字節,再將字節組合成幀,使用鏈路層地址 (以太網使用MAC地址)來訪問介質,並進行差錯檢測。數據鏈路層又分爲2個子層:邏輯鏈路控制子層(LLC)和媒體訪問控制子層(MAC)。MAC子層處理CSMA/CD算法、數據出錯校驗、成幀等;LLC子層定義了一些字段使上次協議能共享數據鏈路層。在實際使用中,LLC子層並非必需;

7.物理層:實際最終信號的傳輸是通過物理層實現的,通過物理介質傳輸比特流。規定了電平、速度和電纜針腳。常用設備有(各種物理設備)集線器、中繼器、調制解調器、網線、雙絞線、同軸電纜,這些都是物理層的傳輸介質。

3. 請介紹一下你瞭解的網絡協議?

TCP協議傳輸控制協議Transmission Control Protocol),是一種面向連接(連接導向)的、可靠的基於字節流的傳輸層通信協議。TCP將用戶數據打包成報文段,它發送後啓動一個定時器,另一端收到的數據進行確認、對失序的數據重新排序、丟棄重複數據。

HTTP協議超文本傳輸協議,是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分佈式超媒體信息系統。

OSICMP協議因特網控制報文協議,它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。

TFTP協議:是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。

DHCP協議:一個局域網的網絡協議,使用UDP協議工作,用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作爲對所有計算機作中央管理的手段。

4.請簡述ping一下的原理?

ping是利用網絡上機器IP地址的唯一性,給目標IP地址發送一個 ICMP 回顯請求,並要求對方返回一個 ICMP 回顯應答來確定兩臺網絡機器是否連接相通,時延是多少。一般用於檢測網絡通與不通 ,時延值越大,速度越慢。

5.什麼是DNS解析?

域名解析系統(Domain Name System)是一個全球性的分佈式的數據庫,由許多域名服務器組成,這些域名服務器相互連接,組成了一個分佈式系統,主要完成將域名解析成IP地址的工作。如將http://www.cnblogs.com/主機名轉換爲IP地址:211.137.51.78。首先,網關路由器接收到包含 DNS 查詢報文的以太網幀後,抽取出 IP 數據報,並根據轉發表決定該 IP 數據報應該轉發的路由器。因爲路由器具有內部網關協議(RIP、OSPF)和外部網關協議(BGP)這兩種路由選擇協議,因此路由表中已經配置了網關路由器到達 DNS 服務器的路由表項。到達 DNS 服務器之後,DNS 服務器抽取出 DNS 查詢報文,並在 DNS 數據庫中查找待解析的域名。找到 DNS 記錄之後,發送 DNS 回答報文,將該回答報文放入 UDP 報文段中,然後放入 IP 數據報中,通過路由器反向轉發回網關路由器,並經過以太網交換機到達主機。

6.請簡述TCP三次握手和四次揮手?

三次握手是指的是創建連接的過程:首先客戶端向服務器端發送一個請求,詢問是否可以發送數據;服務器收到請求之後,如果同意會響應一個確認報文;客戶端收到確認報文之後,就開始發送數據。

第一次握手:建立連接時,客戶端向服務器發送請求報文(SYN),"我想建立連接”;

第二次握手:服務器收到請求報文後,如同意連接,則向客戶端發送確認報文(SYN/ACK),“同意建立”;

第三次握手:客戶端收到服務器的確認後,再次向服務器發送確認報文,完成連接(ACK);

四次揮手指的是斷開連接的過程:客戶端向服務器發送一個請求,詢問是否可以斷開連接;服務器端會響應自己當前的狀態;如果服務器端準備好了,會向客戶端發送一個斷開連接的請求;如果沒有準備好,還有數據沒響應完,會等響應完再給客戶端發送請求;最後服務器端和客戶端斷開連接。

第一次揮手:客戶端想分手,發送消息(FIN)給服務器;

第二次揮手:服務器通知客戶端已經接受的揮手請求,返回確認消息(ACK),但還沒做好分手準備;

第三次揮手:服務端已經做好分手準備,通知客戶端(FIN);

第四次揮手:客戶端發送消息給服務器(ACK),確認分手,服務器關閉連接。

7.簡述TCP與UDP的區別?

1.連接方面:TCP面向連接、可靠的數據流傳輸(如打電話要先撥號建立連接);UDP是在發送數據之前不需要建立連接,是非面向連接的、不可靠的數據流傳輸;

2.安全方面:TCP連接傳送的數據,無差錯,不丟失,不重複,按序到達;UDP盡最大努力交付,數據傳輸快,不需要連接等待,少了許多操作,安全性一般,不能保證可靠的交付;

3.傳輸效率:UDP比TCP傳輸效率高;

4.連接對象數量:TCP連接只能是點到點、一對一的,面向字節流。UDP支持一對一,一對多,多對一和多對多的交互通信,面向報文

8.從瀏覽器輸入URL到將頁面渲染出來,發生了什麼?

1.首先,在瀏覽器地址欄中輸入URL,先解析URL,檢測URL地址是否合法;

2.瀏覽器先查看瀏覽器緩存-系統緩存-路由器緩存,如果緩存中有,會直接在屏幕中顯示頁面內容。若沒有,則跳到第3步操作。

瀏覽器緩存:瀏覽器會記錄DNS一段時間,因此,只是第一個地方解析DNS請求;操作系統緩存:如果在瀏覽器緩存中不包含這個記錄,則會使系統調用操作系統,獲取操作系統的記錄(保存最近的DNS查詢緩存);

路由器緩存:如果上述兩個步驟均不能成功獲取DNS記錄,繼續搜索路由器緩存;

ISP緩存:若上述均失敗,繼續向ISP搜索。

3.在發送http請求前,需要域名解析(DNS解析),解析獲取相應的IP地址。

4.瀏覽器向服務器發起TCP連接,與瀏覽器建立TCP三次握手

5.握手成功後,瀏覽器向服務器發送HTTP請求,請求數據包。

6.服務器處理收到的請求,將數據返回至瀏覽器

7.瀏覽器收到HTTP響應

8.瀏覽器解碼響應,如果響應可以緩存,則存入緩存

9.瀏覽器發送請求獲取嵌入在HTML中的資源(HTML,CSS,JavaScript,圖片,音樂······),對於未知類型,會彈出對話框。

10.瀏覽器發送異步請求

11.頁面全部渲染結束

9.網頁突然加載不出來,可能導致的原因有哪些?

1.網絡斷開了;

2.後端頁面無法加載;

3.網頁被劫持了;

4.DNS無法解析網址;

5.服務器負載過大;

6.代理設置問題;

7.電腦配置太低;

9.CPU,內存被佔滿;

10.SQL查詢數據太多,加載不出來;

10.請簡單說一下你瞭解的端口及對應的服務?

  • 21 :FTP(文件傳輸協議)

  • 22:SSH

  • 23 :Talnet(遠程)服務

  • 25 :SMTP(簡單郵件傳輸協議)

  • 53 :DNS域名服務器

  • 80 :HTTP超文本傳輸協議

  • 110 :POP3郵件協議3

  • 443:HTTPS

  • 1080:Sockets

  • 1521:Oracle數據庫默認端口

  • 3306 :Mysql服務


點亮一下在看,你更好看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章