傳輸層及以下的層提供了完整的通信服務
DNS協(xié)議
DNS域名系統(tǒng)
不區(qū)分大小寫
頂級域:國家(cn、us)、通用(com、org)

查詢過程??
DHCP協(xié)議
HTTP協(xié)議
HTTP超文本傳輸協(xié)議
http(s)://<主機>:<端口>/<路徑>
可靠的數(shù)據(jù)傳輸協(xié)議(它的傳輸層是通過TCP實現(xiàn)的)
服務器步驟
接受客戶端連接:ip+端口(默認80)
接收請求報文
處理請求
訪問web資源
構(gòu)造應答
發(fā)送應答
請求方法??
- OPTIONS
返回服務器針對特定資源所支持的HTTP請求方法 - HEAD
向服務器索與GET請求相一致的響應,只不過響應體將不會被返回 - GET
向特定的資源發(fā)出請求 - POST
向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)
數(shù)據(jù)被包含在請求體中
POST請求可能會導致新的資源的建立和/或已有資源的修改 - PUT
向指定資源位置上傳其最新內(nèi)容 - DELETE
請求服務器刪除資源 - TRACE
回顯服務器收到的請求,主要用于測試或診斷 - CONNECT
將服務器作為代理,讓服務器代替用戶訪問其他網(wǎng)頁
注意:
- 方法名稱是區(qū)分大小寫的,當某個請求所針對的資源不支持對應的請求方法的時候,服務器應當返回狀態(tài)碼405(Mothod Not Allowed);當服務器不認識或者不支持對應的請求方法時,應返回狀態(tài)碼501(Not Implemented)
- HTTP服務器至少應該實現(xiàn)GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP服務器支持擴展自定義的方法
指定的資源(GET和POST區(qū)別)??
- 在地址中指定
https://coding.imooc.com/class/355.html
https://coding.imooc.com/?sort=0&unlearn=0&page=2 - 在請求內(nèi)容中指定
POST https://coding.imooc.com HTTP/1.1
Accept-Encoding: gzip
Accept-Language: zh-CN
{
"sort": 0,
"unlearn": 0,
"page": 2
}
- GET提交的數(shù)據(jù)會直接填充在請求報文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ” “?”問號劃分域名和get提交的參數(shù),A=B中的A是參數(shù)名,B是參數(shù)值,多個參數(shù)之間用&進行分割;POST的數(shù)據(jù)在請求報文的請求正文中
- URL的長度有限,所以GET方法提交的數(shù)據(jù)有限;請求正文沒有長度限制,所以POST方法提交的數(shù)據(jù)無限
- GET方法的參數(shù)直接在URL中,POST方法在請求正文中,可以使用HTTPS進行加密,因此POST方法更加安全隱秘
報文結(jié)構(gòu)??
- 請求結(jié)構(gòu)
請求行、請求頭部、空行、請求正文
請求方法、URL、協(xié)議版本、頭部字段名和值、請求正文(只在POST用到) -
響應結(jié)構(gòu)
響應行、響應頭部、空行、響應正文
協(xié)議版本、狀態(tài)碼、狀態(tài)碼描述、頭部字段名和值、響應正文
POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive
name=Professional%20Ajax&publisher=Wiley
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
狀態(tài)碼??
200-299:成功狀態(tài)碼
300-399:重定向狀態(tài)碼。訪問的資源可能在另外的服務器,告知另外的服務器地址,讓用戶繼續(xù)訪問另外的服務器
400-499:客戶端錯誤狀態(tài)碼。404訪問的資源不存在
500-599:服務端錯誤狀態(tài)碼。服務端bug、沒有處理的異常
200 OK 當您的操作將在響應正文中返回數(shù)據(jù)時,出現(xiàn)此結(jié)果
204 No Content 當您的操作成功,但不在響應正文中返回數(shù)據(jù)時,出現(xiàn)此結(jié)果
304 Not Modified(重定向) 當測試實體自上次檢索以來是否被修改時,出現(xiàn)此結(jié)果
403 Forbidden 客戶端錯誤
401 Unauthorized 客戶端錯誤
413 Payload Too Large(客戶端錯誤) 當請求長度過長時,出現(xiàn)此結(jié)果
400 BadRequest(客戶端錯誤) 當參數(shù)無效時,出現(xiàn)此結(jié)果
404 Not Found(客戶端錯誤) 當資源不存在時,出現(xiàn)此結(jié)果
405 Method Not Allowed(客戶端錯誤)由于方法和資源組合不正確而出現(xiàn)此錯誤
412 Precondition Failed 客戶端錯誤
501 Not Implemented(服務器錯誤) 當未實施某個請求的操作時,出現(xiàn)此結(jié)果
503 Service Unavailable(服務器錯誤) 當 Web API 服務不可用時,出現(xiàn)此結(jié)果
輸入一個url的過程??
HTTP版本??
- 支持的請求方法有區(qū)別:HTTP1.0支持GET、POST、HEAD;HTTP1.1還支持另外五種請求方法
- HTTP1.1支持長連接,即服務器返回響應報文后,TCP連接還會繼續(xù)維持一段時間再釋放,這段時間內(nèi),客戶端還能發(fā)起新的請求,并且不需要重新建立TCP連接;HTTP1.0在服務器返回響應報文后就立即釋放連接,如果客戶端有新的請求,需要重新建立TCP連接
- HTTP1.1可以請求資源的某一個部分,HTTP1.0不能,只能請求整個資源,比較浪費帶寬
- HTTP1.1增加了一些相應碼,比如410Gone表示資源被永久刪除
HTTPS協(xié)議
HTTP是明文傳輸?shù)?/p>
加密模型??
- 對稱加密

- 非對稱加密:A和B是有一定數(shù)學關(guān)系的一組密鑰
私鑰:自己使用,不對外公開
公鑰:給大家使用,對外公開

數(shù)字證書:可信任組織頒發(fā)給特定對象(人、服務器、組織)的認證,相當于國家和人民與身份證的關(guān)系

對象名稱:域名
安全套接層SSL??
位于傳輸層和應用層之間,提供數(shù)據(jù)安全(數(shù)據(jù)不會被泄漏)與數(shù)據(jù)完整(數(shù)據(jù)傳輸過程中不會被篡改)的服務,以及對數(shù)據(jù)進行加密后傳輸
HTTPS過程

SSL套接層握手??

根據(jù)隨機數(shù)123和相同的算法生成對稱密鑰,然后雙方可以使用對稱密鑰進行加密通信
綜合使用對稱加密、非對稱加密
雙方分別生成密鑰,密鑰沒有經(jīng)過傳輸,較少密鑰泄漏的可能性
