日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)

發布時間:2025/10/17 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、AF_INET域與Socket通信

? ? ?其是典型的TCP/IP四層模型的通信過程。

(1)接收方與發送方依賴IP和port來標識,即,將本地socket綁定到對應的IP端口上;
(2)發送數據時指定對方的IP與端口,經過Internet可以根據此端口最終找到接收方;
(3)接受數據時,可以從數據包內獲取到發送方的IP和端口號。

(1) 發送方通過系統調用send()將原始數據發送到操作系統內核緩沖區中。
(2) 內核緩沖區從上到下依次經過TCP層、IP層、鏈路層的編碼,分別添加對應的頭部信息,經過網卡將一個數據包發送到網絡中。
(3) 經過網絡路由到接收方的網卡。
(4) 網卡通過系統中斷將數據包通知到接收方的操作系統,再沿著發送方編碼的反方向進行解碼,即依次經過鏈路層、IP層、TCP層去除頭部、檢查校驗等;
(5)?最終將原始數據上報到接收方進程。

2、AF_UNIX域與Socket通信過程

? ?其是典型的IPC(本地進程間通信),依賴于路徑名標識接收方和發送方。

(1)發送數據時,指定接收方綁定的路徑名;
(2)操作系統可以直接根據該路徑名找到對應的接收方;
(3)并將數據直接拷貝到接受方的內核緩沖區內,并上報給接收方進程進行通信;
(4)接收方可以從收到的數據包中獲取到發送方的路徑名;
(5)并通過此路徑名向其發送數據。

3、進程間通信流式傳輸與報式傳輸

?SOCK_STREAM(流式傳輸)SOCK_DGRAM(報式傳輸)
AF_INET(TCP/IP通信)
(明確知道對端地址)

流式傳輸使用函數:

send(),recv();

read(),write();

流式傳輸類似于管道:
不區分邊界。

報式傳輸使用函數:

sendto(),redvfrom();

報式傳輸區分邊界:

分包收取數據。

AF_UNIX(本地進程間通信)

(不知道對端地址)

(1)AF_INET(TCP/IP通信協議),SOCKET_STREAM與SOCKET_DGRAM函數的使用方式:

Socket編程(C語言實現)——TCP協議(網絡間通信AF_INET)的流式(SOCK_STREAM)+報式(SOCK_DGRAM)傳輸【多線程+循環監聽】

(2)AF_UNIX(IPC本地進程間通信),SOCKET_STREAM與SOCKET_DGRAM函數的使用方式:

Socket編程(C語言實現)——UDP協議(進程間通信AF_UNIX)的流式(SOCK_STREAM)+報式(SOCK_DGRAM)傳輸【循環監聽】

(3)為什么說流式傳輸類似于管道,不區分邊界?

Socket編程(C語言實現)—— 為什么流式傳輸類似于管道?不區分邊界?

參考文章:https://blog.csdn.net/sandware/article/details/40923491?

總結

以上是生活随笔為你收集整理的Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。