日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux网络编程 之 网络协议概述(一)

發布時間:2024/2/28 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux网络编程 之 网络协议概述(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄
1. 分層模型
2. 物理層
3. 鏈路層
4. 網絡層
5. 傳輸層
6. 應用層


1. 分層模型


越接近下面的層,越靠近硬件,越上面的層,越接近用戶。

網絡的每一層都定義了許多協議,有個協議的總稱,叫做“tcp/ip協議”,不僅僅包括TCP和IP協議,還包括了其他協議。

2. 物理層

物理層是將電腦連接起來的物理手段,作用就是負責傳送0/1的電信號。

3. 鏈接層

因為0/1信號是沒有意義的,必須規定他的解讀方式。鏈接層負責規定了0和1電信號的分組方式。

早期的時候,每家公司都有自己的電信號分組方式。逐漸地,一種叫做“以太網”(Ethernet)的協議,占據了主導地位。

以太網協議:以太網規定,一組電信號構成一個數據包,叫做“幀”(Frame)。每一幀分成兩個部分:標頭(Head)和數據(Data)。

  • 標頭:包含數據包的一些說明項,如發送者,接受者,數據類型等。
  • 數據:數據包的具體內容。

在這里,發送者和接受者是怎么標識的呢,是使用MAC地址來標識的,而MAC地址實際上就是網卡上的地址,這個地址是全球唯一的。

標頭的兩個MAC地址占了12字節,類型占了2個字節,FCS(幀校驗序列)占了4個字節,所以標頭固定占18字節,而數據為46-1500字節。

因此,如果兩個網卡要進行通信,那么發送方必須知道接收方的MAC地址,那么怎么才能知道另一個網卡的MAC地址呢?答案是APR協議,APR是網絡層協議,這里先不介紹,我們聊一下有了MAC地址如何把數據包準確送到接收方。

這里采用的是廣播的方式,A向子網絡發送一個數據包,子網絡中的每臺計算機都會受到這個包,計算機對比這個幀中的目標MAC地址是否一致,如果兩者相同,就接受這個包,做進一步處理,否則就丟棄這個包。

4. 網絡層

我們知道一個網卡知道另一個網卡的地址就可以進行通信,而且發送方是采用廣播的方式,因為不可能廣播到所有計算機,所以網絡層定義了子網絡,發送方只能發送到子網絡中。

IP協議:網絡層采用IP協議來定義網絡地址。

互聯網上的每一臺計算機,都會分配到一個 IP 地址。這個地址分成兩個部分,前一部分代表網絡,后一部分代表主機。

單單從 IP 地址,我們無法判斷網絡部分。以 172.16.254.1 為例,它的網絡部分,到底是前 24 位,還是前 16 位,甚至前 28 位,從 IP 地址上是看不出來的,要用到子網掩碼。

所謂“子網掩碼”,就是表示子網絡特征的一個參數。它在形式上等同于 IP 地址,也是一個 32 位二進制數字,它的網絡部分全部為1,主機部分全部為0,并且1和0分別連續。

比如,IP 地址 172.16.254.1,如果已知網絡部分是前 24 位,主機部分是后 8 位,那么子網絡掩碼就是 11111111.11111111.11111111.00000000,寫成十進制就是 255.255.255.0。

因此我們需要重新封裝一下幀,這里我們只需要把IP數據包直接放到以太網數據包的數據部分,再把IP和一些校驗信息放到以太網數據包的標頭部分就可以了。

ARP協議:之前留了一個懸念,ARP協議就是發送方找到接收方的mac地址的,它是怎么做到的呢?

首先每臺機器維持一個ARP高速緩存表,用來記錄IP和MAC地址的映射。

  • 如果目的IP和自己在同一個網段:

    • 當IP層的ARP高速緩存表中存在目的IP對應的MAC地址時,則調用網絡接口send函數(參數為IP Packet和目的MAC))將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC的封裝,并發送出去;

      • 當IP層的ARP高速緩存表中不存在目的IP對應的MAC地址時,發送ARP廣播請求目的IP的MAC,收到ARP應答答之后,將應答中的IP地址,對應的MAC對緩存在本地ARP高速緩存表中,然后調用網絡接口send函數(參數為IP Packet和目的MAC))將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC的封裝,并發送出去;。
  • 如果目的IP地址和自己不在同一個網段,就需要將包發送給默認網關,這需要知道默認網關的MAC地址:

    • 當IP層的ARP高速緩存表中存在默認網關對應的MAC地址時,則調用網絡接口send函數(參數為IP Packet和默認網關的MAC)將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC
        
      • 當IP層的ARP高速緩存表中不存在默認網關對應的MAC地址時,發送ARP廣播請求默認網關的MAC,收到ARP應答之后,將應答之中的<默認網關地址,對應的MAC>對緩存在本地ARP高速緩存表中,調用網絡接口send函數(參數為IP Packet和默認網關的MAC)將數據提交給網絡接口,網絡接口完成Ethernet Header + IP + CRC的封裝,并發送出去。

5.傳輸層

為什么要有傳輸層這個東西呢?原因是數據包如果發送到了你的電腦,你怎么知道是網頁的內容還是qq音樂的內容?因此,我們需要一個參數,用來標識這個數據包屬于哪一個進程,這個參數就是端口。

端口是0-65535之間的一個整數,16個bit,其中0-1023被系統占用,所以可以把傳輸層理解成端口到端口的連接。

其中UDP協議和TCP協議都是傳輸層協議,其實就是在ip數據包中加入端口信息,UDP協議實現起來比較簡單,因為IP協議本來就是不可靠交付,一旦一個數據包發出,無法知道對方是否收到。

而TCP可以理解成有確認機制的UDP協議,每發出一個數據包都要求得到確認。如果有一個數據包遺失,但是收不到確認,就需要重傳了。

6.應用層

應用層的作用,就是規定應用程序的數據格式。

TCP 協議可以為各種各樣的程序傳遞數據,比如 Email、WWW、FTP 等等。那么,必須有不同協議規定電子郵件、網頁、FTP 數據的格式,這些應用程序協議就構成了“應用層”。

總結

以上是生活随笔為你收集整理的Linux网络编程 之 网络协议概述(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。