網路通訊及Socket

2021-08-01 22:16:43 字數 1186 閱讀 4565

1.物理層:提供資訊傳遞的媒介,如同軸電線

2.資料鏈路層:負責建立、維持和釋放資料連線,當接收點檢測到所傳資料中有錯,則會通知傳送失敗重發一遍(對資料的識別)

3.網路層:當兩個計算機之間出現若高資料鏈的時候,網路層的任務就是在若干的資料鏈路中間選擇合適的鏈路確保資料的及時傳送(選擇合適的資料鏈路,確保資料的及時傳送)

4.傳輸層:為兩個終端建立,維護和取消資料連線的功能,負責可靠的傳輸資料(資料傳輸)

5.會話層:提供網路訪問驗證和會話管理,職責為建立和維護應用之間的通訊機制(伺服器的密碼驗證)

6.表示層:提供格式化的表示和轉換資料的服務(json的功能)

http協議:對應應用層

*tcp協議:對應傳輸層

*udp協議:對應傳輸層

ip協議:對應網路層

http協議是基於tcp\/ip連線的

tcp\/ip主要解決資料如何在網路中傳輸(進行鏈結)

http協議主要解決如何包裝資料(超文字傳輸協議,發起鏈結)

http鏈結的特點是客戶端傳送的每次請求都需要服務端回送響應,在請求結束後主動釋放當前連線

tcp連線 一經連線不會主動釋放

tcp連線的三次握手(建立連線)和四次揮手(釋放連線)

★三次握手

第一次:建立連線是,客戶端a傳送syn包(syn=j)到服務端b,並進入syn_send狀態,等待伺服器b確認

第二次:伺服器b接收到syn包,必須確認客戶端a的syn,同時自己也傳送乙個syn包,此時伺服器進入syn_recv狀態

第三次:客戶端a收到服務端b傳送的syn包,同時向服務端b傳送確認包,當此包傳送完畢後,客戶端與服務端正式建立tcp連線

——tcp建立的連線一般應用於可靠性較高的應用

四次揮手:

第一次:客戶端a傳送乙個fin,用來關閉客戶端到服務端b的資料傳送

第二次:服務端b收到乙個fin,服務端b需要返回乙個ack(乙個確認包),確認收到客戶端a的fin

第三次:服務端b關閉與客戶端a的連線,並傳送乙個fin給客戶端a

第四次:客戶端a收到ack確認包,本次結束後客戶端與服務端斷開連線

udp作為傳輸協議,不需要建立任何連線直接傳送資料(資料可靠性較低的訊息,如過去的qq離線訊息,可能存在傳送未接收到訊息),常用於資料可靠性較低的應用

Socket網路通訊

服務端的程式如下 1.建立乙個伺服器端socket,即serversocket,指定繫結的埠,並監聽此埠8888 serversocket serversocket new serversocket 8888 socket socket null 記錄客戶端的數量 int count 0 syste...

socket網路通訊

read write recv send readv writev recvmsg sendmsg recvfrom sendto include ssize t read int fd,void buf,size t count ssize t write int fd,const void bu...

socket網路通訊《二》

socket網路通訊 本文注意基於socket來分析tcp連線建立過程。先回顧一下tcp連線建立過程 主機a執行的是tcp客戶端程式,主機b執行的是tcp伺服器程式,最初兩端tcp程序處於closed態,a主動開啟連線,對應客戶端connect函式發起連線,b被動接受連線,對應於伺服器listen函...