Linux網路程式設計1 基礎知識

2021-10-08 18:53:23 字數 2721 閱讀 6602

從應用的角度出發,協議可理解為「規則」,是資料傳輸和資料的解釋的規則。簡單講就是網路各層傳輸資料時規定如何傳輸。

傳輸層常見協議有tcp/udp協議。

應用層常見的協議有http協議,ftp協議。

網路層常見協議有ip協議、icmp協議、igmp協議。

網路介面層常見協議有arp協議、rarp協議。

linux網路程式設計最為核心的傳輸層協議:tcp和udp協議

tcp傳輸控制協議(transmission control protocol)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。

udp使用者資料報協議(user datagram protocol)是osi參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。

http超文字傳輸協議(hyper text transfer protocol)是網際網路上應用最為廣泛的一種網路協議。

ftp檔案傳輸協議(file transfer protocol)

ip協議是網際網路互聯協議(internet protocol)

c/s模式:

客戶機(client)/伺服器(server)模式。需要在通訊兩端各自部署客戶機和伺服器來完成資料通訊。

優勢:資料傳輸效率,採用的協議相對靈活

劣勢: 工作量將成倍提公升,開發周期較長。另外,從使用者角度出發,需要將客戶端安插至使用者主機上,對使用者主機的安全性構成威脅。

b/s模式:

瀏覽器()/伺服器(server)模式。只需在一端部署伺服器,而另外一端使用每台pc都預設配置的瀏覽器即可完成資料的傳輸。

優勢:開發量較小。移植性非常好,不受平台限制。

劣勢:網路應用支援受限,快取資料不盡如人意,協議選擇不靈活。

資料在沒有封裝前是無法在網路中傳輸的,後面將會說明各層資料具體的封裝過程。先看一下資料在網路中的傳輸過程

資料—>應用層—>傳輸層—>網路層—>鏈路層 ------> 網路環境

其中應用層為使用者程序,其他層為核心程序。

網路的封裝簡單說就是要標誌出資料是從哪一層出來的,在原始的資料報(就是要傳送的資料)加上首部,這個首部一般包含我自己的資訊和你要去尋找的資訊。過程如下圖所示:

我們來逐一的看一下:

乙太網的幀格式:

源位址目的位址是指網絡卡的硬體位址(也叫mac位址),長度是48位,是在網絡卡出廠時固化的(確定好的)。可在shell中使用ifconfig命令檢視,「hwaddr 00:15:f2:14:9e:3f」部分就是硬體位址。

協議欄位有三種值,分別對應ip、arp、rarp。

arp請求後,應答會獲得mac位址。

ip段格式:

版本: ipv4、ipv6 – 4位

ttl: time to live 。 設定資料報在路由節點中的跳轉上限。每經過乙個路由節點,該值-1, 減為0的路由,有義務將該資料報丟棄,不然有些資料會在網路中一直迴圈。

源ip: 32位。— 4位元組 192.168.1.108 — 點分十進位制 ip位址(string) — 二進位制

目的ip:32位。— 4位元組

udp段格式:tcp資料報格式:

16位:源埠號。 2^16 = 65536

16位:目的埠號。

32序號;

32確認序號。

6個標誌位。

16位視窗大小。 2^16 = 65536

與udp協議一樣也有源埠號和目的埠號,通訊的雙方由ip位址和埠號標識。32位序號、32位確認序號、視窗大小稍後詳細解釋。4位首部長度和ip協議頭類似,表示tcp協議頭的長度,以4位元組為單位,因此tcp協議頭最長可以是4x15=60位元組,如果沒有選項字段,tcp協議頭最短20位元組。urg、ack、psh、rst、syn、fin是六個控制位(後續使用)

Linux網路程式設計 基礎知識(1)

linux網路程式設計 基礎知識 1 1.linux網路知識介紹 1.1 客戶端程式和服務端程式 網路程式和普通的程式有乙個最大的區別是網路程式是由兩個部分組成的 客戶端和伺服器端.網路程式是先有伺服器程式啟動,等待客戶端的程式執行並建立連線.一般的來說是服務端的程式 在乙個埠上監聽,直到有乙個客戶...

linux網路程式設計基礎知識

int connect int sockfd,const struct sockaddr servaddr,socklen t addrlen 引數 sock是socket返回的套接字描述符,第二個和第三個引數是伺服器的套接字位址結構的指標和該結構的大小。作用 tcp客戶端通過connect函式建立...

網路基礎知識(1)

1 閘道器 閘道器是一種充當轉換重任的計算機系統或裝置。網路通訊中,經常要在不同的通訊協議 資料格式或語言,甚至體系結構完全不同的兩種系統之間進行通訊,閘道器就負責翻譯器,實現網路通訊的路徑通暢。在這個過程中閘道器對收到的資訊要重新打包,以適應目的系統的需求。當然閘道器也提供過濾和安全功能。大多數情...