在客戶端 發起連線之前,伺服器端先進行初始化
bind
(int fd,
void
* addr, socklen_t len)
一旦三次握手完成,服務端和客戶端建立連線,就進入了資料傳輸過程
當雙方完成互動後,需要執行close函式,作業系統核心通過原來的鏈結鏈路向伺服器端傳送乙個fin包,伺服器收到後執行被動關閉(半關閉狀態),此時伺服器執行close函式,整個鏈路才真正關閉。(半關閉狀態下,發起close請求的一方在沒有收到fin包之前都認為鏈結是正常的)
socket:**機 | bind:去開戶,將**號碼和**機繫結
connect:**機撥號 | listen:聽到**響鈴
| accept:被叫的一方拿起**應答
write/read:互相說話 | write/read:互相說話
close:掛** | close:掛**
通用的套接字位址格式
/* posix.1g 規範規定了位址族為2位元組的值. */
typedef
unsigned
short
int sa_family_t;
/* 描述通用套接字位址 */
struct sockaddr
;
問題:為什麼本地套接字格式不需要埠號,而 ipv4 和 ipv6 套接字格式卻需要埠號呢? 套接字位址結構
大多數套接字函式都需要乙個指向套接字位址結構的指標作為引數。每個協議簇抵都定義它自己的套接字位址結構 這些結構的名字均以sockaddr 開頭,並以對應每個協議簇的唯一字尾結尾 1.ipv4套接字位址結構 它以sockaddr in命名 struct in addr in addr t s addr...
Unix套接字位址結構
include ipv4套接字位址結構 struct in addr posix只關注sin family,sin port,sin addr,所有網路套接字地質結構都至少16位元組 struct sockaddr in include 通用套接字位址結構 struct sockaddr inclu...
通用套接字位址結構
1.通用套接字位址結構起因 當作為乙個引數傳遞進任何套接字函式時候,套接字位址結構總是以引用的形式來傳遞,並且,這樣有乙個引數的人核桃皆自函式必須處理例子所有支援的任何協議族的套接字位址結構。因此在標頭檔案中定義了乙個通用的套接字位址結構。2.通用套接字位址結構 include struct soc...