天天看點

網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系

文章目錄

  • 網絡層
    • IP報頭
    • IP分片
    • 網段劃分
    • 私有IP位址和公網IP位址
    • 路由
  • 資料鍊路層
    • 認識以太網
    • 以太網幀格式
    • MAC位址和IP位址
    • ARP 資料包格式
  • 其他重要協定或技術
    • DNS
    • ICMP協定
    • ping指令
    • NAT技術
    • 代理伺服器
  • 作業系統與網絡關系![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/25f10f29c3274b159e667d8e8375a487.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtb3NK,size_20,color_FFFFFF,t_70,g_se,x_16)

HTTP解決:建構與解析request && response ->recieve && send

TCP解決:可靠性,效率,什麼時候發送,發多少,怎麼發。

IP:端到端(主機A到B之間)、點到點(主機A到下一跳路由器),将資料經過路徑選擇,送達到對方主機的過程。

網絡層

在複雜的網絡環境中确定一個合适的路徑。

路由查找的基本過程:是先找到目的網絡,再找到目的主機。

找到目标主機所在的區域網路,然後在區域網路内部進行封包轉發,找到目标主機。

主機:配有IP位址,能夠判斷封包是發給别人的還是發給自己的

路由器:即配有IP位址, 又能進行路由控制

節點:主機和路由器的統稱

網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系

真正進行網絡傳輸的是IP,TCP隻是為IP提供政策服務。

IP給通信雙方提供了一種能力——将資料從A主機跨網絡送到B主機的能力。

TCP資訊是會裹挾到IP裡的,TCP本身提供的是一些政策性的東西,真正在網絡上跑的是IP封包。

IP為我們提供了這種能力,但有能力不一定能做到,有可能出現IP封包丢包等情況,這時TCP幫助重傳。曾經的逾時重傳可以了解為,重傳的是一個一個的IP封包,在TCP裡面重傳的是一部分資料,資料在重傳時要向下層傳遞,向下層傳遞就要裹上IP的報頭,是以認為重傳的是IP封包。

IP封包不怕丢失,因為一旦丢失上層TCP必會知道。

路由器是工作在網絡層的,當一個硬體工作在哪一層時,指的是它工作在目前的層及其以下的層。

IP位址在公網(在整個對外開放的網際網路中)當中辨別網際網路中唯一一台主機。

IP報頭

網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系
  • 4位版本号:指定IP協定的版本,對于IPv4來說,就是4。
  • 4位頭部長度:IP頭部的長度是多少個32bit, 也就是 length*4 的位元組數. 4bit表示最大的數字是15, 是以IP頭部最大長度是60位元組。
  • 8位服務類型:3位優先權字段(已經棄用), 4位TOS字段, 和1位保留字段(必須置為0). 4位TOS分别表示: 最小延時, 最大吞吐量, 最高可靠性, 最小成本. 這四者互相沖突, 隻能選擇一個。
  • 16位總長度:IP資料報整體占的位元組數。
  • 16位辨別:唯一的辨別主機發送的封包。如果IP封包在資料鍊路層被分片了, 那麼每一個片裡面的這個ID都是相同的。
  • 3位标志字段:第一位保留,第二位置為1,表示禁止分片, 這時候如果封包長度超過MTU,IP子產品就會丢棄封包。第三位表示"更多分片",0的時候表示最後一個分片。
  • 13位分片偏移:是分片相對于原始IP封包開始處的偏移。
  • 8位生存時間:資料報到達目的地的最大封包跳數。 一般是64,每次經過一個路由就-1,一直減到0還沒到達,就被丢棄了。主要是用來防止出現路由循環。如果沒有該字段,會導緻網絡中充滿大量的,短期之内不會消散的遊離封包。
  • 8位協定:表示上層協定的類型。
  • 16位頭部校驗和:使用CRC進行校驗,來鑒别頭部是否損壞。
  • 32位源位址和32位目标位址:表示發送端和接收端。

IP分片

因為MAC位址在底層的資料包轉發過程中有一個最大長度的要求,當上層的IP封包向下層MAC幀傳遞的時候,如果超過了MTU,最終就要讓IP進行分片。

MTU= IP報頭+有效載荷

  • 比如 (按标準報頭)

    MTU = 1500位元組

    IP要向MAC傳3000位元組

    3000 = 20(報頭)+ 2980(有效載荷)

    如果分成兩片:20+1480 20+1480

    1480+1480 = 2960 != 2980 ,是以是少傳了20位元組

    是以應該分成三片——20+1480 20+1480 20+20

隻要一分片,就要考慮組裝的問題

TCP并不知道IP分片了,隻有IP自己知道,TCP給了IP一個封包,不管IP分了幾片,都要在對端接收時接收一個IP封包,因為序号和确認序号隻有一個,發送端向下傳遞時是一個,那麼傳到接收端,向上傳遞時也必須是完整的一個。

TCP也不需要知道IP分片了,IP要做到分片群組裝對TCP是透明的。

  • 要怎麼組裝?

    在接收端把那些經過分片的封包挑出來

    把屬于同一組的歸類起來

    把同一組的所有分片再按順序組裝起來。

3位标志字段:是否分了片(1位)

16位辨別:區分是哪個主機給我發的分片

13位片偏移:根據片偏移進行排序,可以把那些分片按順序組裝起來

倘若有丢失的封包,可以直接确定丢失的是哪一個。

但隻要丢了一個,TCP會認為整個都丢了,是以會把整個封包全都重傳。

  • 怎麼判斷接收的是分了片的封包?

    分片到達結尾:3位标志字段的最後一位表示着是否到達了結尾(結束标記)

    隻要分了片,除了第一個分片,剩下所有分片的片偏移都不為0,且第一個分片的分片标志位一定是1。隻要滿足這兩個條件的任何一個,就是分片。

網段劃分

IP 位址可以分為五類

網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系

這種劃分方案具有局限性,大多數組織都會申請B類網絡位址,導緻B類位址很快就配置設定完了,而A類卻浪費了大量位址。是以提出了新的劃分方案,叫做CIDR。

引入一個額外的子網路遮罩來區分網絡号和主機号,子網路遮罩也是一個32位的正整數,将IP位址和子網路遮罩進行 “按位與” 操作,得到的結果就是網絡号。網絡号和主機号的劃分與這個IP位址是A類、B類還是C類無關。

IP位址和子網路遮罩有一種更簡潔的表示方法,例如140.252.20.68/24,表示IP位址為140.252.20.68,子網路遮罩的高24位是1,也就是255.255.255。

特殊的IP位址

将IP位址中的主機位址全部設為0,就成為了網絡号,代表這個區域網路。

将IP位址中的主機位址全部設為1,就成為了廣播位址,用于給同一個鍊路中互相連接配接的所有主機發送資料包。

127.*的IP位址用于本機環回測試,通常是127.0.0.1

CIDR在一定程度上緩解了IP位址不夠用的問題,提高了使用率,減少了浪費,但是IP位址的絕對上限并沒有增加。

私有IP位址和公網IP位址

IP被分為,私有IP位址和公網IP位址。

私有IP位址:這個IP位址是絕對不會出現在公網當中的,隻會在私網當中被單獨使用。

  • 私網IP是不允許出現在公網當中的,那區域網路的主機怎麼和公網的伺服器進行通信?

子網内的主機需要和外網進行通信時,路由器将IP首部中的IP位址進行替換(替換成WAN口IP),這樣逐級替換,最終資料包中的IP位址成為一個公網IP。這種技術稱為NAT,網絡位址轉換。

一個路由器可以配置兩個IP位址,一個是WAN口IP(對内),一個是LAN口IP(對外)

NAT可以解決IP位址不足的問題。

路由

分為兩個階段:通過查找路由表找到目的網絡;根據目标網絡找到目标主機的過程。

路由的過程,就是這樣一跳一跳"問路" 的過程.

所謂 “一跳” 就是資料鍊路層中的一個區間,具體在以太網中指從源MAC位址到目的MAC位址之間的幀傳輸區間。

資料鍊路層

認識以太網

資料包在路徑當中究竟是怎麼轉的?

IP解決的是從主機A跨網絡經過路徑選擇到主機B的問題,跨網絡前提還是得路由選擇一跳一跳的走,這個過程是一個宏觀的抽象的過程,具體真正辦事的還得從底層的協定去做,這種底層保證兩個主機通信的協定叫做以太網協定。

在同一網段進行通信的協定叫做以太網,以太網所在的層為資料鍊路層。

以太網通信當中,任何一個時刻,隻允許有一個主機向另一台主機進行資料通信。

區域網路的資源是大家共享的,想占有這份資源的計算機很多,是以區域網路可以被稱為多個主機之間的臨界資源,這就出現了區域網路的争用問題。一旦發送碰撞,就要觸發碰撞避免算法。整個區域網路可以稱之為一個碰撞域,為避免發生碰撞,每一台主機都要在發消息前進行沖突檢測,檢測沖突,沖突避免。

  • 交換機:工作在資料鍊路層
  • 作用:劃分碰撞域,減少碰撞的機率;轉發資料幀。

以太網幀格式

網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系
  • 那麼,當一個主機和其他主機進行通信時,如何知道區域網路内其他主機的MAC位址呢?

ARP協定:在區域網路内有效,通過某種位址找另一種位址,在資料鍊路層。

廣播的過程叫做ARP請求,而對應主機發出響應叫做ARP應答。

MAC位址是一直在變的,IP位址是一直不變的,是以要先把IP位址轉成MAC位址。先廣播,廣播的時候目的MAC位址填全1,源MAC位址填本機,MAC幀内部帶有ARP協定,裡面一定包含目的IP位址,所有主機都拿到這個資料幀,都處理,是以都向上傳遞,因為是廣播發送,是以其他主機都認為是發給自己的,于是會回複給發消息主機一個響應,該響應會填上自己的MAC位址。

MAC位址和IP位址

IP位址描述的是路途總體的起點和終點。

MAC位址描述的是路途上的每一個區間的起點和終點。

MAC位址隻能在區域網路内使用的根本原因:IP封包跨網絡經過路由器,重新進行解包和封包,是以采用的接口是會變化的,是以MAC位址就有可能發生變化。一個路由器至少有兩個接口,從A口進B口出,MAC位址一定會發生變化。

ARP 資料包格式

網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系

注意到源MAC位址、目的MAC位址在以太網首部和ARP請求中各出現一次,對于鍊路層為以太網的情況是多餘的,但如果鍊路層是其它類型的網絡則有可能是必要的。

硬體類型指鍊路層網絡類型,1為以太網;

協定類型指要轉換的位址類型,0x0800為IP位址;

硬體位址長度對于以太網位址為6位元組;

協定位址長度對于和IP位址為4位元組;

op字段為1表示ARP請求,op字段為2表示ARP應答

  • 當主機A想要給主機B發消息時,如何通過ARP讓主機A知道主機B的mac位址?
網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系

其中,op字段為1表請求,為2表響應。

所有主機在接收到A發來的ARP請求後,首先分離MAC幀,都向上傳遞到ARP協定層(屬于MAC協定的一部分),先提取op,判斷ARP是請求還是響應,發現是ARP請求,再看目的IP位址。B發現目的IP與自己的相符,其餘主機發現不符,丢棄,B對A做出應答。

A收到後,首先看op,發現是ARP響應,随後拿到B的mac位址。

因為MAC位址短期内不會發生變化,是以可以用ARP找到其他主機的MAC位址,将這些資訊緩存起來。

在Linux中,指令

arp -a

,可以檢視區域網路内主機間IP位址和MAC位址之間對應的映射關系

其他重要協定或技術

DNS

DNS是一整套從域名映射到IP的系統,應用層協定。

ICMP協定

ICMP協定是一個網絡層協定。

一個新搭建好的網絡,往往需要先進行一個簡單的測試,來驗證網絡是否暢通;但是IP協定并不提供可靠傳輸。如果丢包了,IP協定并不能通知傳輸層是否丢包以及丢包的原因。

ICMP正是提供這種功能的協定,主要功能包括:

确認IP包是否成功到達目标位址;

通知在發送過程中IP包被丢棄的原因;

ICMP也是基于IP協定工作的,但是它并不是傳輸層的功能,是以人們仍然把它歸結為網絡層

ICMP隻能搭配IPv4使用,如果是IPv6的情況下,需要是用ICMPv6。

ICMP大概分為兩類封包:一類是通知出錯原因;一類是用于診斷查詢

ping指令

ping指令基于ICMP,是在網絡層。 端口号是傳輸層的内容,在ICMP中根本就不關注端口号這樣的資訊。是以ping指令沒有端口号。

NAT技術

NAT技術是目前解決IP位址不夠用的主要手段,是路由器的一個重要功能。

代理伺服器

正向代理用于請求的轉發

反向代理往往作為一個緩存

作業系統與網絡關系
網路基礎Ⅲ(網絡層 | 資料鍊路層)網絡層資料鍊路層其他重要協定或技術作業系統與網絡關系

繼續閱讀