協(xié)議:
協(xié)議丁存,就是事先的一種約定、規(guī)則腔剂、規(guī)范、標準驼仪。
常見協(xié)議
常見協(xié)議
常見協(xié)議
HTTP掸犬、HTTPS 超文本傳輸協(xié)議
FTP 文件傳輸協(xié)議
SMTP 簡單郵件傳輸協(xié)議
TCP協(xié)議
TCP/IP協(xié)議棧分為四層,每一層都由特定的協(xié)議與對方進行通信绪爸,而協(xié)議之間的通信最終都要轉化為 0 和 1 的電信號湾碎,通過物理介質進行傳輸才能到達對方的電腦,因此物理介質是網絡通信的基石奠货。
三次握手示意圖
第一次: 建立連接時介褥,客戶端發(fā)送SYN包(SYN=i)到服務器,并進入到SYN-SEND狀態(tài),等待服務器確認呻顽。
第二次: 服務器收到 SYN 包雹顺,必須確認客戶的 SYN ( ack=i+1 ) , 同時自己也發(fā)送一個 SYN 包( SYN=k ) , 即 SYN+ACK 包丹墨,此時服務器進入 SYN-RECV 狀態(tài)廊遍。
? 第三次: 客戶端收到服務器的 SYN+ACK 包,向服務器發(fā)送確認報 ACK ( ack=k+1 ) , 此包發(fā)送完畢贩挣,客戶端和服務器進入 ESTABLISHED 狀態(tài)喉前,完成三次握手,客戶端與服務器開始傳送數據王财。
四次揮手示意圖
第一次揮手:Client發(fā)送一個FIN卵迂,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態(tài)绒净。
? ? 第二次揮手: Server 收到 FIN 后见咒,發(fā)送一個 ACK 給 Client ,確認序號為收到序號 +1 (與 SYN 相同挂疆,一個 FIN 占用一個序號)改览, Server 進入 CLOSE_WAIT 狀態(tài)。
? ? 第三次揮手: Server 發(fā)送一個 FIN 缤言,用來關閉 Server 到 Client 的數據傳送宝当, Server 進入 LAST_ACK 狀態(tài)。
? ? 第四次揮手: Client 收到 FIN 后胆萧, Client 進入 TIME_WAIT 狀態(tài)庆揩,接著發(fā)送一個 ACK 給 Server ,確認序號為收到序號 +1 跌穗, Server 進入 CLOSED 狀態(tài)订晌,完成四次揮手。
HTTP協(xié)議
HTTP協(xié)議即超文本傳輸協(xié)議,? 是一個 [瀏覽器端] 和 [服務器端] 請求和響應的標準
常用請求方法? GET, POST
請求 (request):請求行蚌吸、請求頭腾仅、請求主體。
響應 (response):狀態(tài)行套利、響應頭推励、響應主體。
HTTP的請求協(xié)議
HTTP請求由狀態(tài)行肉迫、請求頭验辞、請求正文三部分組成:
?
狀態(tài)行:包括請求方式Method、資源路徑URL喊衫、協(xié)議版本Version跌造;
?
請求頭:包括一些訪問的域名、用戶代理、Cookie等信息壳贪;
?
請求正文:就是HTTP請求的數據陵珍。
GET請求實例
//--------------------------請求行--------------------------------
RequestURL:https://www.baidu.com/
RequestMethod:GET
StatusCode:200OK
RemoteAddress:61.135.169.125:443
ReferrerPolicy:no-referrer-when-downgrade
?
//--------------------------請求頭--------------------------------
Host:www.study.com
// 是否需要持久鏈接
Connection:keep-alive
// 使用http1.1版本
Upgrade-Insecure-Requests:1
//代理請求的瀏覽器信息
User-Agent:Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.96Safari/537.36
// 指定客戶端接受的數據類型
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
// 指定瀏覽器可接受的web服務器,返回內容壓縮編碼
Accept-Encoding:gzip,deflate,sdch
?
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
?
//----------------------------請求體-------------------------------------
//get請求沒有請求體,但是參數會拼接到請求行中
POST請求
//-----------------------請求行---------------------------------------------
RequestURL:https://passport.jd.com/uc/loginService?uuid=a35108dd-99ce-4970-907b-109452be479c&ReturnUrl=https%3A%2F%2Fwww.jd.com%2F2019&r=0.4442924509727251&version=2015
RequestMethod:POST
StatusCode:200OK
RemoteAddress:211.144.24.29:443
ReferrerPolicy:no-referrer-when-downgrade
?
//-----------------------請求頭--------------------------------------------
Host:www.study.com
Connection:keep-alive
//傳遞的參數的長度违施。
Content-Length:29
Cache-Control:max-age=0
Origin:http://www.study.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.96Safari/537.36
//請求內容對應的mime類型.如表單數據互纯,如果是post請求,必須指定這個屬性磕蒲。
Content-Type:application/x-www-form-urlencoded
?
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
Referer: http://www.study.com/day02/01-login.html
?
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
?
//------------------------請求體------------------------------------------
username=pp&password=123456
響應報文
//---------------------狀態(tài)行(響應行)-------------------------------
//HTTP/1.1? HTTP版本
//200 響應的狀態(tài)
? ? //200表示成功
? ? //304表示讀緩存
? ? //404表示找不到資源
? ? //500表示服務端錯誤
HTTP/1.1 200 OK
?
//----------------------響應頭-----------------------------------------------
Date: Thu, 22 Jun 2017 16:51:22 GMT
// 服務器信息
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
//
X-Powered-By: PHP/5.4.45
Content-Length: 18
// 保持長連接的事件
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
//內容類型留潦,告訴瀏覽器該如何解析響應結果
Content-Type: text/html;charset=utf-8
//-----------------------響應體------------------------------------------------
hello world