原创 TCP 滑動窗口/快速重傳機制

我們知道TCP有確認應答機制,對每一個發送的數據段,都要給一個ACK確認應答,收到ACK後再發送ACK中攜帶的序列號。這樣保證了可靠傳輸。但是有時數據往返的時間比較長時,性能就比較差了。 既然這樣一發一收的方式性能較低,那麼我們一次發

原创 HTTP協議格式

HTTP請求格式: 1.首行:【放法】+【url】+【版本號】 2.header:若干行的鍵值對,每一行是一個鍵值對,鍵值對的鍵和值之間使用“:”來分割。header部分一個有幾個鍵值對,這個是不能直接確定的,而是通過header最後的有

原创 malloc/calloc/realloc動態內存分配

malloc、calloc、realloc ,都是動態分配內存的函數,如下圖是這三個函數的功能:

原创 ARP協議

ARP協議 ARP協議是是一個介於數據鏈路層和網絡層之間的協議。 它工作在網絡層。 ARP協議建立了主機IP地址和MAC地址的映射關係 在網絡通信時,源主機的應用程序應該知道目的主機的IP地址和端口號,卻不知道目的主機的硬件地址。

原创 I/O多路轉接之select

系統提供select函數來實現多路複用輸出/輸入模型: 系統調用select是爲了使一個程序監視多個文件描述符的狀態變化,程序會停在select這裏等待,直到被監視的文件描述符有一個或者多個文件描述符發生了狀態改變。 #include<

原创 TCP 確認應答/超時重傳機制

我們知道TCP協議是傳輸層協議,它是可靠傳輸,有連接的傳輸協議。那麼它是依靠什麼纔能有這個功能的呢? 確認應答機制(ACK) TCP將每個字節的數據都進行了編號,即爲序列號: 每一個ACK都帶有對應的確認序列號,意思是告訴發送者,

原创 基於TCP協議服務器(線程/多進程)

基於TCP協議的服務器,線程,多進程版本。 爲了解決服務器可以同時和多個客戶端數據交互。 代碼如下: server.c #include<stdio.h> #include<stdlib.h> #include<sys/socket.