今天開始學習網路程式設計,當然還是要從網路基礎學起,首先我們來熟悉一下tcp/ip模型與osi模型之間的對應關係
一.tcp/ip四層模型
tcp/ip是⼀一組協議的代名詞,它還包括許多協議,組成了tcp/ip協議簇。tcp/ip協議簇 分為四層,ip位於協議簇的第⼆二層(對應osi的第三層),tcp位於協議簇的第三層(對應osi 的第四層)。
tcp/ip通訊協議採⽤用了4層的層級結構,每⼀一層都呼叫它的下⼀一層所提供的⽹網路來完成⾃自⼰己 的需求。
這4層分別為:
應用層:應⽤用程式間溝通的層,如簡單電⼦郵件傳輸(smtp)、⽂檔案傳輸協議(ftp)、 ⽹網路遠端訪問協議(telnet)等。
傳輸層:在此層中,它提供了節點間的資料傳送服務,如傳輸控制協議(tcp)、⽤使用者資料 報協議(udp)等,tcp和udp給資料報加⼊入傳輸資料並把它傳輸到下⼀一層中,這⼀一層負 責傳送資料,並且確定資料已被送達並接收。
互連⽹網路層:負責提供基本的資料封包傳送功能,讓每⼀一塊資料報都能夠到達⽬目的主機(但 不檢查是否被正確接收),如⽹網際協議(ip)。
網路介面層:對實際的⽹網路**的管理,定義如何使⽤用實際⽹
網路(如ethernet、serial line 等)來傳送資料。
三.tcp/ip協議棧和資料報封裝
上文提到了封裝,接下來我們就要談談資料報在傳輸過程中的封裝問題。
上圖就是資料報在傳輸的過程中一層一層的封裝過程,可以看出,每次向上傳輸一層,資料段就會「增長,是因為不同的協議層對資料報有不同的稱謂,在傳輸層叫做段(segment),在網路層叫做資料報 (datagram),在鏈路層叫做幀(frame)。資料封裝成幀後發到傳輸介質上,到達⽬目的主機後每層 協議再剝掉相應的⾸首部,最後將應⽤用層資料交給應⽤用程式處理。
上圖是在兩台計算機在同一網段下面進行通訊,假如兩台計算機在不同的網段裡,則要經過乙個或多個路由器,如下圖所示:
其實在鏈路層下面還有物理層,指的是電訊號是如何傳遞的,而集線器(hub)就是工作在物理層的,作用主要是放大訊號,使之傳得更遠。
鏈路層有以太⽹、令牌環⽹等標準,鏈路層負責⽹卡裝置的驅動、幀同步(就是說從⽹線上檢 測到什麼訊號算作新幀的開始)、衝突檢測(如果檢測到衝突就⾃動重發)、資料差錯校驗等工作。
路由器是⼯工作在第三層的⽹網路裝置,同時兼有交換機的功能,可 以在不同的鏈路 層接⼜⼝口之間**資料報,因此路由器需要將進來的資料報拆掉⽹網路層和鏈路 層兩層⾸首部並重新封裝。ip協議不保證傳輸的可靠性,資料報在傳輸過程中可能丟失,可靠 性可以在上層協議或應⽤用程 序中提供⽀支援。
⽹絡層負責點到點(point-to-point)的傳輸(這⾥裡的「點」指主機或路由器),⽽傳輸層負責端到端 (end-to-end)的傳輸(這⾥裡的「端」指源主機和⽬的主機)。傳輸層可選擇tcp或udp協議。tcp是一種⾯面向連線的、可靠的協議,有點像打**,雙⽅方拿起**互通⾝身份之後就建⽴了連線,然後說話就⾏行了,這邊說的話那邊保證聽得到,並且是按說話的順序聽到的,說完話掛機斷
開 連線。也就是說tcp傳輸的雙⽅需要⾸先建⽴立連線,之後由tcp協議保證資料收發的可靠 性,丟失的資料報⾃動重發,上層應⽤用程式收到的總是可靠的資料流,通訊之後關閉連線。 udp協議不⾯面向 連線,也不保證可靠性,有點像寄信,寫好信放到郵筒裡,既不能保證信件在郵 遞過程中不會丟失,也不能保證信件是按順序寄到⽬的地的。使⽤udp協議的應⽤程式需要⾃己完成丟包重發、訊息排序等工作。
基本網路概念之一 網路
網路是幾乎可以實時相互傳送和接收資料的計算機和其他裝置的集合。網路的每台機器稱為乙個節點 node 大多數節點是計算機,但是印表機 路由器 網橋 閘道器 可口可樂機也都是節點。具有完備功能的計算機節點也稱為主機 host 這裡將節點一詞指代網路的所有裝置,用主機一詞表示通用的計算機節點。每個網路節點...
網路程式設計(一)網路程式設計入門
網路是計算機通訊的基礎,網路程式設計是學習計算機網路最佳方法,通常標準的計算機網路通訊協議有udp和tcp兩種 此處不包含微計算機網路通訊協議 如can等 首先小猿引入幾個面試常見的問題。1 網路程式設計三要素是什麼?答 網路程式設計的三要素是,ip,傳輸協議,埠號。2 網路模型有幾種?如何理解?答...
linux網路程式設計學習之一網路位元組序
在不同的平台,不同的系統中,往往位元組序不同,有的採用大端順序,有的採用小端順序。在網路程式設計中為了統一,統統採用網路位元組序。網路位元組序是大端順序。網路位元組序有關的轉換函式主要有 unsigned short int htons unsigned short int hostshort 將主...