層級名稱
作用傳輸單位
應用層提**用程式間通訊
表示層處理資料格式,資料加密等
ppdu(presentation)
會話層建立,維護和管理會話
spdu(session)
傳輸層建立端到端鏈結
segment(段)
網路層定址和路由選擇
packet(包
資料鏈路層
介質訪問,鏈路管理
frame(幀)
物理層位元流傳輸
b(位元)
*pdu(protocoldataunit)
物理層
物理層(physical layer):物理層定義了所有電子及物理裝置的規範,為上層傳輸提供了乙個物理介質,本層的資料傳輸單位為位元流(b),屬於本層定義的規範有eia/tia rs-232、eia/tia rs-449、v 35、rj-45等,實際使用中的裝置如網絡卡等屬於本層。資料鏈路層(data link layer)
資料鏈路層(data link layer):對物理層收到的位元流進行資料成幀,提供可靠的資料傳輸服務,實現無差錯資料傳輸。再資料鏈路層中資料的單位為幀(frame),屬於本層定義的規範有sdlc,hdlc,ppp,stp,幀中繼等實際使用中的裝置如switch交換機屬於本層。網路層(network layer)
網路層負責講各個子網之前的資料進行路由選擇,分組與重組。本層中資料的傳輸單位為資料報(packet)。實際屬於本層定義的規範有ip,ipx,rip,ospf,icmp,igmp等。實際使用中的裝置如路由器屬於本層。傳輸層(transport layer)
提供可靠的資料傳輸服務,它檢測路由器丟棄的包,然後產生乙個重傳的請求,能夠將亂序收到的資料報重新排序。會話層(session layer)
管理主機之間的會話程序,包括會話建立、終止和會話過程中的管理。表示層(pressentatian layer)
表示層對網路傳輸的資料進行交換,使得多個主機之間傳送的資訊能夠相互理解,包括資料的壓縮,加密,格式轉換等。tcp/ip各層中所支援的協議如下圖所示,來自於草根老師部落格(程姚根)。應用層與應用程式介面溝通,以達至展示給使用者的目的,再次常見的協議有:http,https,ftp,telnet,ssh,ssh,smtp,pop3等。
區域網中兩個ftp伺服器通訊的過程如下圖所示,來自於c++教程網。
從上圖中我們可以看到的是:
-兩個主機通訊的前提是使用一樣的協議。
-在網路分層中,每一層使用不同的協議。
-每一層不關心另一層的處理與實現。
-核心當中已經提供了協議棧的實現。
在廣域網中,資料傳輸需要經過很多的路由器,這時典型的tcp/ip四層模型如下圖所示,來自於c++教程網。
對等通訊是指在tcp/ip協議中,每一層之間採用相同的協議,主機與主機在通訊過程中每一層遮蔽了下一層的細節,相同層級層之間的通訊像是建立起了虛電路(邏輯流)。
封裝是將資料打上對應頭部,讓對等方知道雙方具有一樣的語言,交付給下一層進行通訊。封裝之後對等方就能認識資料,從而能夠進行一定的解析。**見水印。
與資料封裝對應的是資料的解封,也稱之為資料的分用。
資料的分用可以理解為將資料去頭轉交給對應上層的過程,過程如下圖所示。
ip可以標識一台主機,但是不能標識這台主機上的某乙個服務,這個時候就需要用到埠的概念。
1.總所周知埠(well know ports):從0到1023,這些埠由iana分配和控制他們緊密繫結於一些服務。通常這些埠的通訊明確表明了某種服務的協議。例如:21埠為ftp服務埠。
2.註冊埠(registered port):從1024到49151。那些埠不收iana控制,但由iana登記並提供使用情況清單。他們鬆散地繫結於一些服務。也就是說有許多服務繫結這這些埠,這些埠通用用於許多其他目的。例如:1433 microsoft sql服務埠。
3.動態或私有埠(dynamic or private ports):從49152到65535。iana不管這些埠。實際上,機器通常從1024起到分配動態埠。但也有路外:sunde rpc埠從32768開始。
Linux網路程式設計學習筆記(五)
通過捕捉sigchld訊號捕捉殭屍程序,可解決多個子程序同時連線的情況 伺服器端 include include include include include include include include include void error handling char message void...
Linux網路程式設計學習筆記 索引
一 linux基本知識 學習筆記 linux平台的檔案i o操作 學習筆記 linux平台的檔案,目錄及操作 linux學習筆記 標準輸入輸出 linux學習筆記 程序概念及控制 linux學習筆記 訊號處理 二 程序間通訊 三 傳輸層協議tcp和udp 四 tcp套接字 五 udp資料報 六 套接...
linux網路程式設計筆記
以下是對我之前學習的linux網路程式設計的一些筆記。int socket int domain,int type,int protocol type這個引數,可以加上乙個 sock nonblock,把套接字設定為非阻塞,保證這一設定的原子性。int listen int sockfd,int b...