linux網路程式設計

2021-08-13 08:24:55 字數 2725 閱讀 3906

網路模型

tcp/ip協議族

tcp/ip 實際上乙個協同工作的通訊家族,為網路資料通訊提供通路。為討論方便可tcp/ip 協議組大體上分為三部分:

1、internet 協議(ip)

2、傳輸控制協議(tcp)和使用者資料報協議(udp)

3、處於 tcp 和 udp 之上的一組應用協議。它們包括:telnet,檔案傳送協議(ftp),網域名稱服務(dns)和簡單的郵件傳送程式(smtp)等

1、傳輸層

傳輸層為兩台主機上的應用程式提供端到端(end to end )的通訊,傳輸層只關心通訊的起始端和目的端,而不在乎資料報的中轉過程。

傳輸層協議主要有兩個:tcp、udp

tcp協議(transmission control protocol,傳輸控制協議)為應用層提供可靠的、面向連線的和基於流的服務。tcp協議使用超時重傳、資料確認等方式來確保資料報被正確地傳送至目的端,因此tcp是可靠的。使用tcp協議通訊的雙方必須先建立tcp連線,並在核心中為該連線維持一些必要的資料結構,比如連線的狀態、讀寫緩衝區,以及諸多定時器。當通訊結束時,雙方必須關閉連線以釋放這些核心資料。基於流的資料沒有邊界的限制,它源源不斷的從通訊的一端流入另一端。傳送端可以逐字節地向資料流中寫入資料,接收端也可以逐字節地將它們讀出。

tcp協議頭

tcp三次握手四次揮手

建立連線時的三次握手: 

1.客戶端向伺服器傳送連線請求,報文段包含syn標誌,是乙個同步報文段,包含isn值為4930的序號; 

2.伺服器同意與客戶端建立連線,同時傳送自己的isn值為1207的序號,並對第乙個同步報文段進行確認,確認值為4931; 

3.客戶端對第二個同步報文段進行確認,確認值為1208;

關閉連線的四次揮手: 

1.第四個報文段包含fin標誌,因此是結束報文段,客戶端請求關閉連線; 

2.伺服器確認該結束報文段,確認值4932; 

3.伺服器傳送自己的結束報文段; 

4.客戶端確認該結束報文段,確認值1209;

udp(user datagram protocol,使用者資料報協議),它為應用層提供

不可靠、無連線和基於資料報的服務

。「不可靠」意味著udp協議無法保證資料從傳送端正確的傳送到目的端。如果資料在中途丟失,或者目的端通過資料校驗發現資料錯誤而將其丟棄,則udp協議只是簡單的通知應用程式傳送失敗,因此,使用udp協議的引用程式通常要自己處理資料確認超時重傳等邏輯。udp協議是無連線的,即

通訊雙方不保持乙個長久的聯絡

,因此應用程式每次傳送資料都要

明確指定接收端的位址

。基於資料報地服務,是相對基於流的服務而言的,每個udp資料報都有乙個長度,

接收端必須以該長度為最小單位將其內容一次性讀出

,否則資料將被截斷。

udp協議頭

2.應用層

應用層負責處理應用程式的邏輯,比如檔案傳輸、名稱查詢和網路管理。

telnet:遠端登入協議,它使我們能在本地完成遠端任務;

dns(domain name service):網域名稱解析協議,提供機器網域名稱到ip位址的轉換;

tftp(trivial file transfer protocol):簡單檔案傳輸協議,是tcp/ip協議族中的乙個用來在客戶機與伺服器之間進行簡單檔案傳輸的協議,提供不複雜、開銷不大的檔案傳輸服務。

ftp(file transfer protocol):檔案傳輸協議,用於internet上的控制檔案的雙向傳輸;

封裝:應用程式資料在傳送到物理網路上之前,將沿著協議棧從上往下依次傳遞,每層協議都將在上層資料的基礎上加上自己的頭部資訊,以實現該層的功能;

3.網際層

網路層實現資料報的選路和**,通訊的兩台主機一般不是直接相連的,而是通過多個中間節點(路由器)連線的,網路層就是選擇這些中間節點,以確保兩台主機之間的通訊路徑。同時,網路層對上層協議隱藏了網路拓撲連線的細節,使得在傳輸層和網路應用程式看來,通訊的雙方是直接相連的。

ip協議:根據資料報的目的ip位址來決定如何投遞它,如果資料報不能直接傳送給目標主機,那麼ip協議就為它尋找下乙個適合的下一跳(next hop)路由器,並將資料報交付給該路由器來**,多次重複這一過程,資料報最終到達目標主機,或者由於傳送失敗而被丟棄。

ip主要有以下四個主要功能:

1.資料傳送

2.定址

3.路由選擇

4.資料報文的分段

ip報頭

tcp:一種可靠的、面向連線的和基於流的服務 

udp:不可靠、無連線和基於資料報的服務

tcp:一對一的 

udp:適用廣播和多播

tcp:執行速度慢 

udp:執行速度快

Linux網路程式設計

linux網路程式設計 當然,我們現在,將要開始編寫的第乙個網路程式,雖然非常簡單,但是卻可以很 清楚的說明大部分編寫網路程式需要的基本概念,好了先讓我們看看網路程式的tcp服 務器端的編寫步驟 1.和伺服器的步驟一樣。2.通過設定套介面位址結構,我們說明,客戶端要與之通訊的伺服器的ip位址和 埠。...

linux 網路程式設計

當然,我們現在,將要開始編寫的第乙個網路程式,雖然非常簡單,但是卻可以很 清楚的說明大部分編寫網路程式需要的基本概念,好了先讓我們看看網路程式的tcp服 務器端的編寫步驟 現在讓我們來看看網路程式客戶端的程式設計步驟 以上的步驟,是比較普遍的,我們可以從中看出,編寫網路程式是很有意思的,同 時,也不...

linux 網路程式設計

套接字程式設計 struct sockaddr unsigned short sa family 位址協議,ipv4 tcp ip af inet,ipv6 af inet6 char sa data 14 14位元組的位址協議 struct sockaddr in unsigned short s...