1. 程式人生 > >C/C++網路通訊程式設計(一)

C/C++網路通訊程式設計(一)

一、InternetTCP/IP協議

    Internet的發展大致可為四個階段:60年代,Internet起源;70代,TCP/IP協議,Internet隨之發展起來;80代,NFSnet現,併成為當今Internet基礎;90代,Internet入高速發展時間,並開始向全世普及。

1958美國總統艾林豪威爾向美國國會提出建立DARPADefense Advanced Research Project Agency),即國防部高階研究計劃署,簡稱為ARPA1968年6DARPA提出資源共享計算機網路中

早期的ARPAnet使用網路控制協議(Network Control Protocol

NCP),不能互聯不同型別的計算機和不同型別的作業系統,沒有糾錯功能。

   1973年由KahnVintonCerf人合作為ARPAnet開發了新的一套互聯協議,此協議在197412兩人正式發表第一份TCP協議詳細說明,但此協議有信包失時不能得到有效的糾正。

TCP協議分成兩個不同的協議:

l 用來檢測網路傳輸中差錯的傳輸控制協議TCP

l 專門負責對不同網路進行互聯的網際網路協議IP

從此TCP/IP協議誕生。

    1983ARPAnet上停止使用CNP網際網路上的主機全部使用TCP/IP協議,TCP/IP協議成為Internet世界語

二、OSI模型與TCP/IP協議體系結構

    網路採用分而治之的方法設計,將網路的功能劃分為不同的醋,以分層的形式有機組合在一起,每層實現不同的功能,其內部實現方法對外部其他層次來說透明,每層向上層提供服務,也可以使用下層提供的服務。網路體系結構即指骨網路的層次結構和每層所使用協議的集合。兩類非常重要的體系結構是:OSI與TCP/IP

OSI(開放系統互聯 Open System Interconnection)

    國際標準化組織(ISO)制定OSI模型,該模型定義了不同計算機互聯的標準,是設計和描述計算機通訊的基本框架。OSI模型把網路通訊的工作分為七層:物理層,資料鏈路層,網路層,傳輸層,會話層,表示應用層。

 

設計

目的:

OSI模型的設計目的是成為一個所能銷售商都能實現的開放網路模型,來克服使用眾多私有網路模型所帶來的困難和低效性。OSI是在一個備受尊敬的國際標準團體參與下完成的, 這個組織就是ISO國際標準化組織)。

分層原則:

網路中各結點都有相同的層次

不同結點相同層次具有相同的功能

同一結點相鄰層間通過介面通訊

每一層可以使用下層提供的服務,並向上層提供服務

不同結點的同等層間通過協議來實現對等層間的通訊

OSI/RM分層

對等層實體間通訊時資訊的流動過程

對等層通訊的實體

對等層實體之間虛擬通訊,下層向上層提供服務;實際通訊在最低層完成,傳送方資料由最高層逐漸向下層傳遞;到接收方資料由最低層逐漸向高層轉遞。

協議資料單元PDU:OSI參考模型中,對等層協議之間交換的資訊單元統稱為協議資料單元(PDU protocol Data Unit)。

而傳輸層及以下各層的PDU另外還有各自特定的名稱:

傳輸-------資料段(segment

網路------分組(資料包)(Packet

資料鏈路層------資料幀(Frame

物理------位元Bit

1物理層(PhysicalLayer)

物理層是OSI分層結構體系中最重要、最基礎的一層,它建立在傳輸媒介基礎上,實現裝置之間的物理介面。只接收和傳送一串位元流,不考慮資訊的意義和資訊結構。物理層的資料單位是位(位元流)。

屬於物理層定義的典型 規範代表包括:EIA/TIARS-232RJ-45等。

物理層的主要功能:為資料端裝置提供傳送資料的通路,資料通路可以是一物理媒體,也可以是多個物理媒體連線而成。

物理層的主要裝置:中繼器、集線器。

中斷器的應用:資料傳輸、資料轉換及延長網路,作用:放大訊號、補償訊號衰減。

集線器(Hub:區域網中的基礎裝置,功能:訊號放大。

2資料鏈路層(DataLinkLayer

    在物理層提供位元流服務的基礎上,建立相鄰結點之間的資料鏈路,通過差錯控制提供資料幀(Frame)在資訊上無差錯的傳輸,同時為其上面的網路層提供有效的服務。

作用包括:實體地址定址、資料的成幀、流量控制、資料的檢錯、重發等等。

資料鏈路層協議的代表包括:SDLC,HDLC,PPP,STP,中繼等。

主要功能:實現系統實體間二進位制資訊塊的正確傳輸。為網路層提供可靠無錯誤的資料資訊。

資料鏈路層主要裝置:二層交換機、網橋

3網路層(Network layer)

網路層也稱為通訊子網層,是高層協議之間的介面層,用於控制通訊子網的操作,是通訊子網與資源子網的介面。

在網路層交換的資料的單位是:資料包(packet)。

網路層協議的代表包括:IP,IPX,OSPF等。

網路層主要功能:路由選擇和中繼。

網路層主要裝置:路由器。

路由器原理:路由器分本地路由器和遠端路由器,本地路由器是用來連線網路傳輸介質的:光纖、雙絞線及同軸電纜;遠端路由器是用來連線遠端傳輸介質,並要求相應的裝置,如電話線要配調製解器,無線要通過無線接收機、發射機。路由器作用:連通不同的網路,資訊傳輸。

4、傳輸層(Transport layer

傳輸層建立 在網路層和會話層之間。實質上它是網路體系結構中高低層銜接的一個介面層。

傳輸層的資料單元稱為:資料段(segment)這個層負責獲取全部資訊,因此,它必須跟蹤資料單元碎片、亂序到達的資料包和其它在傳輸過程中可能發生的危險。

傳輸層協議的代表包括:TCPUDPSPX等等。

5、會話層(Session layer

此層可稱為會晤層或對話層,在會話層及以上的高層次中,資料傳送的單位不再另外命名,統稱為報文。

主要功能:會話層連線到傳輸層的對映會話連線的流量控制,資料傳輸,會話連線恢復與釋放,會話連線管理 及差錯控制。

6、表示層(Presentation layer)

    表示層對向上對應用層服務,向下接來自會話層的服務。表示層為應用提供服務包括語法選擇、語法轉換等。

7、應用層(Application layer

網路應用層是通訊使用者之間的視窗,為使用者提供網路管理,檔案傳輸、事務處理等服務。

應用層為作業系統或網路應用程式提供訪問網路服務的介面。

應用層協議的代表包括:Telnet,FTP,HTTP,SNMP,DNS等。

相關推薦

C/C++網路通訊程式設計

一、Internet與TCP/IP協議     Internet的發展大致可為四個階段:60年代,Internet起源;70年代,TCP/IP協議,Internet隨之發展起來;80年代,NFSnet出現,併成為當今Internet的基礎;90年代,Internet進入高速

C語言面向物件程式設計:封裝與繼承

最近在用 C 做專案,之前用慣了 C++ ,轉回頭來用C 還真有點不適應。 C++ 語言中自帶面向物件支援,如封裝、繼承、多型等面向物件的基本特徵。 C 原本是面向過程的語言,自身沒有內建這些特性,但我們還是可以利用 C 語言本身已有的特性來實現面向物件的一些基本特徵。接下來

Python核心原始碼解析與C/CPP-API拓展程式設計PyObject

開發十年,就只剩下這套架構體系了! >>>   

C#多執行緒程式設計程序與執行緒

一、 程序         簡單來說,程序是對資源的抽象,是資源的容器,在傳統作業系統中,程序是資源分配的基本單位,而且是執行的基本單位,程序支援併發執行,因為每個程序有獨立的資料,獨立的堆疊空間。一個程式想要併發執行,開多個程序即可。

網路通訊webSocket原理

對於開發者的我來講,大部分專案都需要用到聊天功能,例如單聊,群聊,分組,通訊等。而這一切都基於socket,那具體socket指的是啥?下面就具體好好寫寫吧。 要了解什麼是socket,得先掌握TCP/IP協議與Http協議。 首先Http協議,是超文字傳輸協議,沒有狀態的,也是屬於短連結對應於

Android 資料加密及安全網路通訊雜談

Android 資料加密及安全網路通訊雜談 前言:本人多年從事軟體開發,發現大多數程式設計師(其中包括不少是資深的)、CTO、PM們對資訊保安的瞭解幾乎為零!很多時候,專案負責人在不得不面對資訊保安需求時,隨意指派某個程式設計師(通常還是入行時間最短、技術經驗最少的那位)負

Python C/S 網路程式設計之 三種方法實現天氣預報小程式

1. 首先明白下協議棧和庫的概念: 協議棧(Protocol Stack): 是指網路中各層協議的總和,其形象的反映了一個網路中檔案傳輸的過程:由上層協議到底層協議,再由底層協議到上層協議。 庫(Library):主要用來解析要使用的網路通訊協議,包含Python內建標準庫

UNIX網路程式設計一個簡易的TCP C/S模型(echo sever)

以下內容主要參考書籍《Linux C程式設計一站式學習》、《Unix網路程式設計》、《Unix高階環境程式設計》 首先要明確客戶端與伺服器要怎麼去實現通訊 下圖便是一個簡易的TCP C/S模型實現 知道模型之後,接下來只是一些與網路介面相關的API呼叫

C語言之網路程式設計域名解析

在網路程式設計時,知道域名是不能直接訪問一個主機的,需要轉換成相應的IP地址。有時在程式中需要將一個IP地址轉換成一個域名。本節將講解C程式中的IP地址與域名的轉換問題。 提示:在TCP/IP網路中,通訊雙方的主機必須知道彼此的IP地址方可進行正常的通訊,如果給出的主機的域

C++網路程式設計gRPC的編譯

Google是真滴煩,整個編譯鏈全是自家產品,在編譯之前先來安裝一堆東西 安裝環境依賴 chocolatey Windows下的

基於Linux的C程式設計

一、GCC概述 1、GCC概述 一個c/c++程式從開始編碼到生成二進位制可執行檔案至少要經過四個步驟。   (1)預處理:對原始檔的巨集進行展開。   (2)編譯:將源程式編譯成彙編檔案。   (3)彙編:將彙編檔案編譯成機器碼。   (4)連結:將目標檔案和外部符號進行連結,生成可執行檔案。

Halcon和C#混合程式設計:數字識別

Halcon匯出C#程式碼 using System; using HalconDotNet; public partial class HDevelopExport { public HTuple hv_ExpDefaultWinHandle; //

第2章 C++的簡單程式設計

第2章 C++的簡單程式設計(一) C++語言概述 名稱空間 基本資料型別、常量、變數 程式舉例 讀入並顯示資料 運算與表示式 sizeof, 位運算

程式設計菜鳥到大佬之路:C語言程式特別篇

程式設計習題 迴圈例題選講 例1.乘方計算 給出一個整數a和一個正整數n,求乘方ana^nan。 輸入:一行,包含兩個整數a和n。 -1000000 <= a <= 1000000,1 <= n <= 10000。 輸出:一個整數,

effective C++筆記--模板與泛型程式設計

文章目錄 瞭解隱式介面和編譯器多型 瞭解typename的雙重意義 學習處理模板化基類內的名稱 將與引數無關的程式碼抽離template 瞭解隱式介面和編譯器多型 . 面向物件程式設計世界總是以顯式介面和執行期多型解決問題。比

C++ STL標準庫與泛型程式設計

泛型程式設計,就是使用模板為主要工具來編寫程式。其中沒有太多的面向物件的觀念,不涉及虛擬函式的使用。 使用C++標準庫 C++標準庫:以程式碼形式給出,放於各種標頭檔案( header files )內,經過編譯後才能使用。 所有新式的 headers 內的元件封裝於 namespace

第二章—C++簡單程式設計

計算機的最基本的功能是資料處理 C++支援的基本資料型別:整數、實數、字元、布林資料 C++支援的基本運算:算術運算、關係運算、邏輯運算、位運算、逗號運算、條件運算 程式要能夠輸入資料、輸出資料 C++中的輸入/輸出可以呼叫預定義的功能模組實現 程式的執行流程 順序的,因此程

linux C程式設計gcc的用法

C/C++的編譯環境:make工具,編譯器gcc,偵錯程式gdb,C/C++標準庫。常用庫資訊列表build-essential包含gcc,g++,make,libc6-dev等寫程式時基本會用到的工具,因此只安裝build-essential,gcc,make等工具也會自動安裝。不清楚的話全部都a

linux下C 程式設計學習之多程序程式設計

一、程序概念 程序是作業系統中資源分配的最小單位,而執行緒是排程的最小單位。 一個程序,主要包含三個元素: a)        一個可以執行的程式; b)        和該程序相關聯的全部資料(包括變數,記憶體空間,緩衝區等等); c)        程式的執行上下文(

java網路程式設計:8、基於TCP的socket程式設計簡單的socket通訊_一個客戶端

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於tcp的程式設計,就好像用電話進行交談一樣 二、在java中用於程式設計網路程式的類 三、套接字 + (輸出、輸入流) 1、伺服器程式編寫基本步驟: 2、客戶端程式