图解Linux的Socket
生活随笔
收集整理的這篇文章主要介紹了
图解Linux的Socket
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Linux里面,可通過創建Socket,使得進程之間進行網絡通信,可通過TCP或者UDP的方式進行交互。
無論是面向連接的TCP,還是面向非連接的UDP,都要首先調用socket函數來創建一個套接字,對應的內核,也是一個文件。
在用戶態調用socket函數,調用的系統調用是:
asmlinkage long sys_socket(int, int, int);
最終調用sock_create->__sock_create,在其中sock_alloc();創建數據結構
雖然socket也是個文件,有對應的文件描述符,但是沒有真實文件系統上的inode,僅僅在內存中有個inode。
struct socket_alloc {
struct socket socket;
struct inode vfs_inode;
};
這個數據結構將socket結構和inode結構關聯起來。
socket是一個文件,因而有一個File Descriptor在文件描述符列表中,也在打開的文件列表中,而指向一個僅僅在內存中的inode,通過socket指向一個socket的結構。
其中sock結構有一個發送列表,一個接收列表,列表中是sk_buff,是一個接收的或者發送的包。
這個結構里面是對socket的操作。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的图解Linux的Socket的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解Linux系统调用
- 下一篇: 通俗说Spark