各種面試最基本網絡問題

1.TCP/IP是什麼?

TCP/IP是一組協議的代名詞,該協議簇分爲四層:應用層  、  傳輸層  、  互聯網絡層  、  網絡接口層。

每層的網絡協議內容:

應用層:電子郵件傳輸(smtp)文件傳輸協議(FTP)網絡遠程訪問協議(Telnet)

傳輸層:傳輸控制協議(TCP)用戶數據報協議(udp)

互聯網絡層:網際協議(IP)

網絡接口層:

(TCP位於協議簇的第3層,OSI的第4層,IP位於協議簇的第2層,OSI的第3層)

2.OSI是什麼?

 開放式系統互聯參考模型,爲了解決異種網絡互聯時所遇到的兼容性問題。

7層內容:應用層  、  表示層  、  會話層  、  傳輸層  、  網絡層  、  數據鏈路層  、  物理層

3.url完成加載經歷了什麼?

●DNS Lookup 先獲得URL對應的IP地址(DNS服務器就像一個電話號碼薄,根據你說的人名找到對應的號碼)

●Socket Connect 瀏覽器和服務器建立TCP鏈接建立(socket鏈接是ip和端口的建立)

●Send Request 發送HTTP請求

●Content Download 服務器發送響應

經過DNS域名解析後獲得url對應的IP地址,然後通過獲取的的ip和端口建立一個socket鏈接,此時開始向服務器發送一個get和post請求

在tcp協議提供可靠的鏈接,,tcp經過三次握手建立一個鏈接

第一次握手:客戶端發送一個syn包到服務器,並進入syn_send狀態,等待服務器的確認。

第二次握手:服務器收到syn包,必須確認客戶的syn包,同時給自己發送一個syn包,此時服務器進入syn_recv狀態

第三次握手:客戶端與服務器開始傳送數據

web服務器傳送一些http頭信息,然後傳送具體信息。

4.如何將數據庫的數據顯示在網頁上?又如何將前臺的數據(加以驗證後) 存儲到數據庫中?

通過js獲取DOM(文檔對象模型)獲取頁面控件上的內容:例如getElementById,getElementByName...

通過ajax選擇請求的方式,回掉函數判斷傳輸的內容是否正確,通過json對象的形式傳送給後臺。

同理 後臺獲取的json數據,進行解析,通過截取字符串顯示在前臺的控件上。

5.url的請求方式(向服務器發送請求的方式get/set)

url請求過程中,經過DNS域名解析後,獲得域名對應的ip地址,在建立ip和端口之間的socket鏈接,經過tcp的三次握手,建立了瀏覽器和服務器之間的鏈接,鏈接建立後,開始向web服務器發送請求,請求一般get或post方式。(http定義了與服務器交互的不同方式:get,post,put,delete)

HTTP GET 

發送
GET /DEMOWebServices2.8/Service.asmx/CancelOrder?UserID=string&PWD=string&OrderConfirmation=string HTTP/1.1
Host: api.efxnow.com
回覆
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length


<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>
HTTP POST 發送
POST /DEMOWebServices2.8/Service.asmx/CancelOrder HTTP/1.1
Host: api.efxnow.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

UserID=string&PWD=string&OrderConfirmation=string
回覆
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>

通過上面的例子,我們可以看出

1.數據包含的方式:get請求將數據 作爲一個key/value對的序列附在url之後,post提交的數據放在http的包體中

2.傳輸數據的大小:get請求url有限(2083字節),post不通過url傳值,所以理論上不受限制。

3.安全性:post請求方式比get請求方式更安全。

6.請求後常出現的狀態碼

200 (ok)找到資源,一切正常。

304(not modified)該資源在上次請求後沒有任何修改,這通常用於瀏覽器得 緩存機制。

401(unauthorized)客戶端無權訪問該資源,這通常會使得瀏覽器要求用戶輸入用戶名和密碼,以登錄到服務器。

403(forbidden)客戶端未能獲得授權,這通常在401之後輸入了不正確的用戶名和密碼

404(not found)在制定的位置不存在所申請的資源

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