先羅列一些基本概念:
[socket]:
網(wǎng)絡(luò)上2個程序間通過一個雙工(雙向)的通信實現(xiàn)實時數(shù)據(jù)的交換宋彼,這個連接的一段稱為socket(套接字),其本質(zhì)是對TCP/IP的封裝阿纤。
[網(wǎng)絡(luò)7層協(xié)議]
- 應(yīng)用層(HTTP弹惦,F(xiàn)TP等)
- 表示層(數(shù)據(jù)加密)
- 會話層(數(shù)據(jù))
- 傳輸層(TCP,UDP)
- 網(wǎng)絡(luò)層(IP)
- 鏈路層(應(yīng)用于介質(zhì)傳輸?shù)膮f(xié)議)
- 物理層(用于討論物理介質(zhì)的窝剖,比如電流,光調(diào)制等)
[URI,URL,URN]
- URI(uniform resource identifier)
統(tǒng)一資源標(biāo)識符酥夭,有3部分組成- 訪問資源的命名機制
- 存放資源的主機名
- 資源自身的名稱
- URL(uniform resource locator)
統(tǒng)一資源定位符- 訪問協(xié)議
- 存放資源的主機IP地址
- 存放資源的具體地址(如目錄或文件名)
- URN(uniform resource name)
統(tǒng)一資源命名
它可以唯一標(biāo)識網(wǎng)絡(luò)中的一個實體赐纱,而位置可以發(fā)生變化,它可以引用多個URL熬北。比如P2P下載中的磁力鏈接就是URN的一種實現(xiàn)疙描。
[報文]
報文(message)是網(wǎng)絡(luò)中交換與傳輸?shù)臄?shù)據(jù)單元,即站點需要一次性發(fā)送的數(shù)據(jù)塊蒜埋。
[TCP]
是一種面向連接的淫痰、可靠的、基于字節(jié)流的傳輸層通信協(xié)議整份。
TCP的幾個名詞
- SYN(Synchronize Sequence Numbers)同步序列編號待错,用于發(fā)起連接。
- ACK (Acknowledgement)確認(rèn)字符烈评。
- SEQ ( Sequence ) 序號火俄。
- PSH (Push)推送,讓服務(wù)端直接拿走數(shù)據(jù)讲冠,這個數(shù)據(jù)一般較多瓜客,不經(jīng)過緩沖區(qū)。
- RST(Rest)重置連接竿开。
- FIN (FINISH)請求關(guān)閉連接谱仪。
- MSS(Management Support System)表示傳輸時每個報文能承載的最大數(shù)據(jù)長度。
TCP建立連接的3次握手
- 客戶端發(fā)送SYN報文帶上seq(隨機產(chǎn)生)否彩。
- 服務(wù)端發(fā)送SYN和ACK報文帶上seq疯攒,為上次報文的seq+1。
- 客戶端發(fā)送ACK報文
TCP斷開連接的4次握手
- 客戶端發(fā)送FIN報文帶上seq(隨機產(chǎn)生)列荔。
- 服務(wù)端繼續(xù)完成未發(fā)送完的數(shù)據(jù)包敬尺,發(fā)送SYN和ACK報文帶上seq枚尼,為上次報文的seq+1。
- 服務(wù)端完成所有的數(shù)據(jù)包的發(fā)砂吞,最后發(fā)送FIN報文署恍,告訴客戶端可以關(guān)閉連接。
- 客戶端發(fā)送ACK報文蜻直,關(guān)閉連接盯质。
[http]
簡介
- 【定義】超文本傳輸協(xié)議(Hyper Text Transfer Protocol),用于從WWW(world wide web)傳輸超文本到本地概而。
- 基于TCP
- 屬于應(yīng)用層面向?qū)ο蟮膮f(xié)議
特點
- 簡單快速唤殴,只需要傳請求方法和路徑。
- 靈活到腥。可以傳輸?shù)娜我忸愋偷臄?shù)據(jù)蔚袍,通過
Content-Type
標(biāo)記即可乡范。 - 無狀態(tài)
- 支持B/S,C/S模式
請求報文組成
由4部分組成
- 請求行(請求方法,URL啤咽,協(xié)議)
- 請求頭
- 空行
- 請求數(shù)據(jù)
響應(yīng)報文組成
由4部分組成
- 狀態(tài)行(協(xié)議版本號晋辆,狀態(tài)碼,狀態(tài)消息)
- 響應(yīng)頭
- 空行
- 響應(yīng)正文
工作原理
- http客戶端通過TCP向服務(wù)端發(fā)送一個請求宇整。
- 服務(wù)端做出響應(yīng)瓶佳。
- 關(guān)閉TCP連接。
- 解析響應(yīng)內(nèi)容鳞青。
[下面基于wireshark(網(wǎng)絡(luò)抓包工具)觀察下TCP的幾次握手]
直接上圖
image
對于wireshark還處于初步學(xué)習(xí)階段霸饲,有建議和補充的歡迎留言~