網路通訊
HTTP
- HTTP(超文字傳輸協議)是利用TCP在兩臺電腦(通常是Web伺服器和客戶端)之間傳輸資訊的協議。客戶端使用Web瀏覽器發起HTTP請求給Web伺服器,Web伺服器傳送被請求的資訊給客戶端
- HTTP協議是建立在請求/響應模型上的。首先由客戶建立一條與伺服器的TCP連結,併傳送一個請求到伺服器,請求中包含請求方法、URL、協議版本以及相關的MIME樣式的訊息。伺服器響應一個狀態行,包含訊息的協議版本、一個成功和失敗碼以及相關的MIME式樣的訊息
- HTTP本身是一個協議,但其最終還是基於TCP的
TCP四次揮手
某個應用程式首先呼叫close主動關閉連線,這時TCP傳送一個FIN M;
另一端接收到FIN M之後,執行被動關閉,對這個FIN進行確認。它的接收也作為檔案結束符傳遞給應用程式,因為FIN的接收意味著應用程式在相應的連線上再也接收不到額外資料;
一段時間之後,接收到檔案結束符的應用程式呼叫close關閉它的socket。這導致它的TCP也傳送一個FIN N;
接收到這個FIN的源傳送端TCP對它進行確認。
這樣每個方向上都有一個FIN和ACK。
TCP三次握手(基於sockert)
當客戶端呼叫connect時,觸發了連線請求,向伺服器傳送了SYN J包,這時connect進入阻塞狀態;伺服器監聽到連線請求,即收到SYN J包,呼叫accept函式接收請求向客戶端傳送SYN K ,ACK J+1,這時accept進入阻塞狀態;客戶端收到伺服器的SYN K ,ACK J+1之後,這時connect返回,並對SYN K進行確認;伺服器收到ACK K+1時,accept返回,至此三次握手完畢,連線建立。
socket通訊
-
socket起源於Unix,而Unix/Linux基本哲學之一就是“一切皆檔案”,都可以用“開啟open –> 讀寫write/read –> 關閉close”模式來操作
-
socket- **bind()**函式
bind()函式把一個地址族中的特定地址賦給socket。例如對應AF_INET、AF_INET6就是把一個ipv4或ipv6地址和埠號組合賦給socket。伺服器在啟動的時候都會繫結一個眾所周知的地址(如ip地址+埠號),用於提供服務,客戶就可以通過它來接連伺服器;而客戶端就不用指定,有系統自動分配一個埠號和自身的ip地址組合。這就是為什麼通常伺服器端在listen之前會呼叫bind(),而客戶端就不會呼叫,而是在connect()時由系統隨機生成一個。 -
Socket是應用層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面,TCP/IP協議族隱藏在Socket介面後面
-
伺服器端先初始化Socket,然後與埠繫結(bind),對埠進行監聽(listen),呼叫accept阻塞,等待客戶端連線
-
在這時如果有個客戶端初始化一個Socket,然後連線伺服器(connect),如果連線成功,這時客戶端與伺服器端的連線就建立了。
-
客戶端傳送資料請求,伺服器端接收請求並處理請求,然後把回應資料傳送給客戶端,客戶端讀取資料,最後關閉連線,一次互動結束。
程式之間如何通訊?(區別於網路)
訊息傳遞(管道、FIFO、訊息佇列)
同步(互斥量、條件變數、讀寫鎖、檔案和寫記錄鎖、訊號量)
共享記憶體(匿名的和具名的)
遠端過程呼叫(Solaris門和Sun RPC)
- 本地可以通過程式PID來唯一標識一個程式,但是在網路中這是行不通的
- 網路層的“ip地址”可以唯一標識網路中的主機,而傳輸層的“協議+埠”可以唯一標識主機中的應用程式(程式)。這樣利用三元組(ip地址,協議,埠)就可以標識網路的程式了
什麼是TCP/IP、UDP
- TCP/IP,即傳輸控制協議/網間協議,是一個工業標準的協議集,它是為廣域網(WANs)設計的。
- UDP是與TCP相對應的協議。它是屬於TCP/IP協議族中的一種。
- TCP/IP協議族包括運輸層、網路層、鏈路層
相關文章
- udp網路通訊UDP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- 網路通訊2:TCP通訊實現TCP
- 19作 網路通訊
- dubbo網路通訊(四)
- 網路通訊1:UDPUDP
- 網路通訊基礎
- 網路通訊協議協議
- 網路通訊程式設計程式設計
- docker系列(五):網路通訊Docker
- WebRTC---網路實時通訊Web
- 網路通訊4:TCP廣播TCP
- 網路通訊技術基礎
- 快速理解網路通訊協議協議
- Calico 網路通訊原理揭祕
- 網路通訊單元NU系列
- 網路-淺談批次通訊和自主通訊的區別
- 一個簡單混合協議通訊列子,物聯網和網際網路通訊。協議
- 使用UDP如何進行網路通訊UDP
- 網路和通訊安全有哪些要求?
- 網路通訊5:HTTP下載器HTTP
- Kubernetes的容器網路通訊機制
- USB共享網路:android手機通過USB與Ubuntu進行socket網路通訊AndroidUbuntu
- 深入淺出Kubernetes網路:跨節點網路通訊之Flannel
- 深入分析網路通訊,Wireshark助你解決網路問題!
- 網路通訊6:搭建HTTP伺服器HTTP伺服器
- NEO從原始碼分析看網路通訊原始碼
- CSP之通訊網路(60分\100分)
- 原始碼分析Dubbo網路通訊篇NettyClient原始碼Nettyclient
- 華為:通訊網路 2030(附下載)
- ES系列(三):網路通訊模組解析
- 乾元通多鏈路通訊裝置保障高鐵網路穩定
- 樂訊通雲通訊:物聯網路卡在智慧路燈的應用
- 淺解硬體網路通訊+交換機晶片+通訊系統設計晶片
- WebRTC 及點對點網路通訊機制Web
- 網路通訊協議-ICMP協議詳解!協議
- 網路通訊協議-TCP協議詳解!協議TCP