Socket通訊流程

2022-07-04 08:33:07 字數 1496 閱讀 9837

**鏈結

socket簡介

兩個程序能夠進行通訊的辦法是在網路中唯一的標識乙個程序。而在網路中唯一的標識乙個程序的方法是:標出ip位址 + 協議 + 埠號。這樣就可以利用socket進行通訊了。

什麼是socket?socket翻譯為套接字,socket是在應用層和傳輸層之間的乙個抽象層,它把tcp/ip層複雜的操作抽象為幾個簡單的介面**用層呼叫已實現程序在網路中通訊。

socket抽象層在網路中的位置**:

socket通訊流程

(綠色為伺服器操作,純黑色為使用者操作)

伺服器根據位址型別(ipv4、ipv6)、socket型別、協議建立socket

伺服器為socket繫結對應的ip位址和埠號

伺服器監聽埠號請求,接收使用者發來的連線請求,此時伺服器沒有開啟socket

·  使用者建立socket

使用者開啟socket,並通過ip位址+埠號試圖connect伺服器的socket

伺服器接收到了使用者發來的socket連線請求,被動開啟socket,開始接收客戶端請求,直到使用者返回連線資訊。這時候伺服器的socket進入堵塞狀態,所謂堵塞,即accept();方法一直接收到客戶端返回連線資訊後才返回,然後開始接收下乙個使用者端請求

客戶端連線成功,開始向伺服器輸入狀態資訊

伺服器accept();方法返回,連線成功

客戶端寫入資訊

伺服器讀取資訊

客戶端關閉

服務端關閉

三次握手

在tcp/ip協議中,tcp協議通過三次握手建立乙個可靠的連線,就是socket通訊流程中的建立socket連線部分

第一次握手:客戶端嘗試連線伺服器,向伺服器傳送syn包(同步序列編號synchronize sequence numbers),syn=j,客戶端進入syn_send狀態等待伺服器確認

第二次握手:伺服器接收客戶端syn包並確認(ack=j+1),同時向客戶端傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手

socket通訊流程

原文 對 tcp ip udp socket 程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission...

socket通訊流程

socket是 開啟 讀 寫 關閉 模式的實現,以使用tcp協議通訊的socket為例,其互動流程大概是這樣子的 伺服器根據位址型別 ipv4,ipv6 socket型別 協議建立socket 伺服器為socket繫結ip位址和埠號 伺服器socket監聽埠號請求,隨時準備接收客戶端發來的連線,這時...

基本Socket通訊流程

1.初始化socket 用於監聽 1 初始化 socket s s socket 2 繫結 bind s,3 監聽 listen s,2.建立連線 1 檢查狀態 int ret select if ret 0 新連線 2 建立新連線 如果有客戶端請求連線 temp accept 注意,此時並不使用原...