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)在制定的位置不存在所申請的資源