插口層簡介(一)

2021-06-27 11:05:49 字數 933 閱讀 7765

1.描述符的概念

通過呼叫socket函式,可以獲得乙個socket描述符,這個描述符具體其他unix描述符的所有特性:可以用這個描述符呼叫read和write,呼叫fork後,父程序和子程序可以共享它;

乙個描述符是程序的程序表表項的乙個陣列的下標,這個陣列項指向乙個開啟檔案表的結構;

程序可以通過描述符訪問插口上的網路連線;

2. 系統呼叫

程序同核心的互動是通過一組已經定義好的函式來進行的,這些函式就稱為系統呼叫;

在bsd核心中,每個系統呼叫都對應乙個編號,當程序執行乙個系統呼叫時,標識系統呼叫的整數作為引數被傳遞給核心函式syscall,根據編號syscall在表中找到請求的系統呼叫的sysent結構;

struct sysent

;struct sysent sysent = , /* 27 = recvmsg */

, /* 28 = sendmsg */

, /* 29 = recvfrom */

/* ... */

};

syscall將引數從呼叫程序複製到核心中,並分配乙個陣列來儲存系統呼叫的結果,當系統呼叫執行完後,syscall將結果返回給程序;

例如:

socket系統呼叫的原型是:

int socket(int family, int type, int protocol);

實現socket系統呼叫的核心函式的原型是:

socket(struct proc *p, struct socket_args *uap, int *retval);
指標p指向呼叫系統呼叫的程序表項;

retval是用來儲存系統呼叫返回結果的陣列;

TCP IP實現(八) 插口層

插口層可以說是在使用者程式與tcp ip協議之間的乙個呈上啟下的層次,它將使用者與某協議相關的請求對映到具體的協議實現。不同型別的套接字在產生時就會關聯到相關協議實現 通過一組函式指標來實現的 比如在乙個tcp套接字上呼叫write函式,則會轉而呼叫tcp協議相關的函式。插口也就是我們常說的套接字,...

運輸層簡介

封裝和解封 復用和分用 流量控制 差錯控制 運輸層位於網路層和應用層之間,運輸層負責向應用層提供服務,同時它接受來自網路層的服務。運輸層協議主要負責程序到程序間的通訊。程序可以理解未是使用了運輸層服務的應用層實體。比如nginx程序,mysql程序等,都需要把資料傳給運輸層,由運輸層負責把資料報傳輸...

傳輸層 http協議簡介

http協議是建立的tcp之上的,他是在網際網路上實現檔案傳輸的基本協議,與之合作的協議還有dns協議。服務端 乙個服務程序,不斷監聽80埠,客戶端 一般就是瀏覽器。http是無連線的,無狀態的協議。請求乙個全球資訊網文件的過程 文字描述,比如請求 1.用dns來解析網域名稱,獲得對應的ip位址 2...