網(wǎng)絡(luò)通信
一、網(wǎng)絡(luò)分層:
1.物理層:提供信息傳遞的媒介,如同軸電線
2.數(shù)據(jù)鏈路層:負(fù)責(zé)建立、維持和釋放數(shù)據(jù)連接,當(dāng)接收點(diǎn)檢測到所傳數(shù)據(jù)中有錯(cuò),則會通知發(fā)送失敗重發(fā)一遍(對數(shù)據(jù)的識別)
3.網(wǎng)絡(luò)層:當(dāng)兩個(gè)計(jì)算機(jī)之間出現(xiàn)若高數(shù)據(jù)鏈的時(shí)候,網(wǎng)絡(luò)層的任務(wù)就是在若干的數(shù)據(jù)鏈路中間選擇合適的鏈路確保數(shù)據(jù)的及時(shí)傳送(選擇合適的數(shù)據(jù)鏈路,確保數(shù)據(jù)的及時(shí)傳送)
4.傳輸層:為兩個(gè)終端建立,維護(hù)和取消數(shù)據(jù)連接的功能,負(fù)責(zé)可靠的傳輸數(shù)據(jù)(數(shù)據(jù)傳輸)
5.會話層:提供網(wǎng)絡(luò)訪問驗(yàn)證和會話管理,職責(zé)為建立和維護(hù)應(yīng)用之間的通信機(jī)制(服務(wù)器的密碼驗(yàn)證)
6.表示層:提供格式化的表示和轉(zhuǎn)換數(shù)據(jù)的服務(wù)(json的功能)
7.應(yīng)用層:負(fù)責(zé)確定進(jìn)程之間的通信性質(zhì)以滿足用戶需求以及提供網(wǎng)絡(luò)與用戶應(yīng)用軟件之間的接口服務(wù)(服務(wù)器與APP)
二、Socket——即套接字
套接字:兩個(gè)IP地址的端口號組合稱為套接字,用于表示客戶端請求的服務(wù)器和服務(wù)
http協(xié)議:對應(yīng)應(yīng)用層
*tcp協(xié)議:對應(yīng)傳輸層
*udp協(xié)議:對應(yīng)傳輸層
ip協(xié)議:對應(yīng)網(wǎng)絡(luò)層
http協(xié)議是基于TCP\/IP連接的
TCP\/IP主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸(進(jìn)行鏈接)
HTTP協(xié)議主要解決如何包裝數(shù)據(jù)(超文本傳輸協(xié)議,發(fā)起鏈接)
HTTP鏈接的特點(diǎn)是客戶端發(fā)送的每次請求都需要服務(wù)端回送響應(yīng),在請求結(jié)束后主動(dòng)釋放當(dāng)前連接
TCP連接 一經(jīng)連接不會主動(dòng)釋放
TCP連接的三次握手(建立連接)和四次揮手(釋放連接)
★三次握手
第一次:建立連接是,客戶端A發(fā)送SYN包(SYN=j)到服務(wù)端B,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器B確認(rèn)
第二次:服務(wù)器B接收到SYN包,必須確認(rèn)客戶端A的SYN,同時(shí)自己也發(fā)送一個(gè)SYN包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)
第三次:客戶端A收到服務(wù)端B發(fā)送的SYN包,同時(shí)向服務(wù)端B發(fā)送確認(rèn)包,當(dāng)此包發(fā)送完畢后,客戶端與服務(wù)端正式建立TCP連接
——TCP建立的連接一般應(yīng)用于可靠性較高的應(yīng)用
四次揮手:
第一次:客戶端A發(fā)送一個(gè)FIN,用來關(guān)閉客戶端到服務(wù)端B的數(shù)據(jù)傳送
第二次:服務(wù)端B收到一個(gè)FIN,服務(wù)端B需要返回一個(gè)ACK(一個(gè)確認(rèn)包),確認(rèn)收到客戶端A的FIN
第三次:服務(wù)端B關(guān)閉與客戶端A的連接,并發(fā)送一個(gè)FIN給客戶端A
第四次:客戶端A收到ACK確認(rèn)包,本次結(jié)束后客戶端與服務(wù)端斷開連接
UDP作為傳輸協(xié)議,不需要建立任何連接直接發(fā)送數(shù)據(jù)(數(shù)據(jù)可靠性較低的消息,如過去的qq離線消息,可能存在發(fā)送未接收到消息),常用于數(shù)據(jù)可靠性較低的應(yīng)用