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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络基础(三)

發布時間:2024/4/11 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络基础(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網絡基礎(三)

文章目錄

  • 網絡基礎(三)
    • 一、IP協議
    • 二、以太網
    • 三、ARP協議
    • 四、DNS(Domain Name System)
    • 五、ICMP協議
    • 六、NAT技術

一、IP協議

  • 1.基本概念
  • 主機:配有IP地址, 但是不進行路由控制的設備;
  • 路由器: 即配有IP地址, 又能進行路由控制;
  • 節點: 主機和路由器的統稱;
  • 2.協議頭格式

  • 4位版本號(version): 指定IP協議的版本, 對于IPv4來說, 就是4.
  • 4位頭部長度(header length): IP頭部的長度是多少個32bit, 也就是 length * 4 的字節數. 4bit表示最大的數字是15, 因此IP頭部最大長度是60字節.
  • 8位服務類型(Type Of Service): 3位優先權字段(已經棄用), 4位TOS字段, 和1位保留字段(必須置為0). 4位TOS分別表示: 最小延時, 最大吞吐量, 最高可靠性, 最小成本. 這四者相互沖突, 只能選擇一個. 對于ssh/telnet這樣的應用程序, 最小延時比較重要; 對于ftp這樣的程序, 最大吞吐量比較重要.
  • 16位總長度(total length): IP數據報整體占多少個字節.
  • 16位標識(id): 唯一的標識主機發送的報文. 如果IP報文在數據鏈路層被分片了, 那么每一個片里面的這個id都是相同的.
  • 3位標志字段: 第一位保留(保留的意思是現在不用, 但是還沒想好說不定以后要用到). 第二位置為1表示禁止分片, 這時候如果報文長度超過MTU, IP模塊就會丟棄報文. 第三位表示"更多分片", 如果分片了的話,最后一個分片置為1, 其他是0. 類似于一個結束標記.
  • 13位分片偏移(framegament offset): 是分片相對于原始IP報文開始處的偏移. 其實就是在表示當前分片在原報文中處在哪個位置. 實際偏移的字節數是這個值 * 8 得到的. 因此, 除了最后一個報文之外, 其他報文的長度必須是8的整數倍(否則報文就不連續了).
  • 8位生存時間(Time To Live, TTL): 數據報到達目的地的最大報文跳數. 一般是64. 每次經過一個路由, TTL-= 1, 一直減到0還沒到達, 那么就丟棄了. 這個字段主要是用來防止出現路由循環
  • 8位協議: 表示上層協議的類型
  • 16位頭部校驗和: 使用CRC進行校驗, 來鑒別頭部是否損壞。
  • 32位源地址和32位目標地址: 表示發送端和接收端.
  • 選項字段(不定長, 最多40字節):
  • 3.網段劃分

IP地址分為兩個部分, 網絡號和主機號
網絡號: 保證相互連接的兩個網段具有不同的標識;
主機號: 同一網段內, 主機之間具有相同的網絡號, 但是必須有不同的主機號;

  • 不同的子網其實就是把網絡號相同的主機放到一起.
  • 如果在子網中新增一臺主機, 則這臺主機的網絡號和這個子網的網絡號一致, 但是主機號必須不能和子網中的其他主機重復

通過合理設置主機號和網絡號, 就可以保證在相互連接的網絡中, 每臺主機的IP地址都不相同

曾經提出一種劃分網絡號和主機號的方案:

  • A類 0.0.0.0到127.255.255.255
  • B類 128.0.0.0到191.255.255.255
  • C類 192.0.0.0到223.255.255.255
  • D類 224.0.0.0到239.255.255.255
  • E類 240.0.0.0到247.255.255.255

這種劃分方案的局限性很快顯現出來,大多數組織都申請B類網絡地址, 導致B類地址很快就分配完了, 而A類卻浪費了大量地址;

例如, 申請了一個B類地址, 理論上一個子網內能允許6萬5千多個主機. A類地址的子網內的主機數更多(B類只有16位).

然而實際網絡架設中, 不會存在一個子網內有這么多的情況. 因此大量的IP地址都被浪費掉了

  • 新的劃分方案, 稱為CIDR(Classless Interdomain Routing):
  • 引入一個額外的子網掩碼(subnet mask)來區分網絡號和主機號;
  • 子網掩碼也是一個32位的正整數. 通常用一串 “0” 來結尾;將IP地址和子網掩碼進行 “按位與” 操作, 得到的結果就是網絡號;
  • 網絡號和主機號的劃分與這個IP地址是A類、B類還是C類無關
  • 特殊的IP地址
  • 將IP地址中的主機地址全部設為0, 就成為了網絡號, 代表這個局域網;
  • 將IP地址中的主機地址全部設為1, 就成為了廣播地址, 用于給同一個鏈路中相互連接的所有主機發送數據包;
  • 127.*的IP地址用于本機環回(loop back)測試,通常是127.0.0.1
  • IP地址的數量限制
  • 我們知道, IP地址(IPv4)是一個4字節32位的正整數. 那么一共只有 2的32次方 個IP地址, 大概是43億左右.而TCP/IP協議規定, 每個主機都需要有一個IP地址.這意味著, 一共只有43億臺主機能接入網絡么?
  • 實際上, 由于一些特殊的IP地址的存在, 數量遠不足43億; 另外IP地址并非是按照主機臺數來配置的, 而是每一個網卡都需要配置一個或多個IP地址.
  • CIDR在一定程度上緩解了IP地址不夠用的問題(提高了利用率, 減少了浪費, 但是IP地址的絕對上限并沒有增加), 仍然不是很夠用. 這時候有三種方式來解決:
  • 動態分配IP地址: 只給接入網絡的設備分配IP地址. 因此同一個MAC地址的設備, 每次接入互聯網中, 得到的IP地址不一定是相同的;
  • NAT技術
  • IPv6: IPv6并不是IPv4的簡單升級版. 這是互不相干的兩個協議, 彼此并不兼容; IPv6用16字節128位來表示一個IP地址; 但是目前IPv6還沒有普及
  • 私有IP地址和公網IP地址

如果一個組織內部組建局域網,IP地址只用于局域網內的通信,而不直接連到Internet上,理論上 使用任意的IP地址都可以,但是RFC 1918規定了用于組建局域網的私有IP地址

  • 10.*,前8位是網絡號,共16,777,216個地址
  • 172.16.到172.31.,前12位是網絡號,共1,048,576個地址
  • 192.168.*,前16位是網絡號,共65,536個地址
  • 包含在這個范圍中的, 都成為私有IP, 其余的則稱為全局IP(或公網IP)

二、以太網

  • 1.認識以太網
  • "以太網" 不是一種具體的網絡, 而是一種技術標準;
  • 既包含了數據鏈路層的內容, 也包含了一些物理層的內容. 例如: 規定了網絡拓撲結構, 訪問控制方式, 傳輸速率等;

例如以太網中的網線必須使用雙絞線; 傳輸速率有10M, 100M, 1000M等;

  • 以太網是當前應用最廣泛的局域網技術; 和以太網并列的還有令牌環網, 無線LAN等
  • 2.以太網幀格式

  • 源地址和目的地址是指網卡的硬件地址(也叫MAC地址), 長度是48位,是在網卡出廠時固化的;
  • 幀協議類型字段有三種值,分別對應IP、ARP、RARP;
  • 幀末尾是CRC校驗碼
  • 3.認識MTU

MTU相當于發快遞時對包裹尺寸的限制. 這個限制是不同的數據鏈路對應的物理層, 產生的限制.

  • 以太網幀中的數據長度規定最小46字節,最大1500字節,ARP數據包的長度不夠46字節,要在后面補填充 位;

  • 最大值1500稱為以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU

  • 如果一個數據包從以太網路由到撥號鏈路上,數據包長度大于撥號鏈路的MTU了,則需要對數據包進行分片(fragmentation);

  • 不同的數據鏈路層標準的MTU是不同的

  • 4.MTU對IP協議的影響

  • 由于數據鏈路層MTU的限制, 對于較大的IP數據包要進行分包. 將較大的IP包分成多個小包, 并給每個小包打上標簽;

  • 每個小包IP協議頭的16位標識(id) 都是相同的;

  • 每個小包的IP協議頭的3位標志字段中, 第2位置為0, 表示允許分片, 第3位來表示結束標記(當前是否是最 后一個小包, 是的話置為1, 否則置為0);

  • 到達對端時再將這些小包, 會按順序重組,拼裝到一起返回給傳輸層;

  • 一旦這些小包中任意一個小包丟失, 接收端的重組就會失敗. 但是IP層不會負責重新傳輸數據

  • 5.MTU對UDP協議的影響

  • 一旦UDP攜帶的數據超過1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就會在網絡層分成多個IP數據報.

  • 這多個UDP數據報有任意一個丟失, 都會引起接收端網絡層重組失敗. 那么這就意味著, 如果UDP數據報在 網絡層被分片, 整個數據被丟失的概率就大大增加了

  • 6.MTU對于TCP協議的影響

  • TCP的一個數據報也不能無限大, 還是受制于MTU.

  • TCP的單個數據報的最大消息長度, 稱為MSS(Max Segment Size);

  • TCP在建立連接的過程中, 通信雙方會進行MSS協商.

  • 最理想的情況下, MSS的值正好是在IP不會被分片處理的最大長度(這個長度仍然是受制于數據鏈路層的 MTU).

  • 雙方在發送SYN的時候會在TCP頭部寫入自己能支持的MSS值. 然后雙方得知對方的MSS值之后, 選擇較小的作為最終MSS

  • MSS的值就是在TCP首部的40字節變長選項中(kind=2)

三、ARP協議

  • 1 . ARP協議的作用
  • ARP協議建立了主機 IP地址 和 MAC地址 的映射關系.
  • 在網絡通訊時,源主機的應用程序知道目的主機的IP地址和端口號,卻不知道目的主機的硬件地址;數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址與本機不符,則直接丟棄;

因此在通訊前必須獲得目的主機的硬件地址;

  • 源主機發出ARP請求,詢問“IP地址是192.168.0.1的主機的硬件地址是多少”, 并將這個請求廣播到本地網段(以太網幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播);
  • 目的主機接收到廣播的ARP請求,發現其中的IP地址與本機相符,則發送一個ARP應答數據包給源主機,將自己的硬件地址填寫在應答包中;
  • 每臺主機都維護一個ARP緩存表,可以用arp -a命令查看。緩存表中的表項有過期時間(一般為20分鐘),如果20分鐘內沒有再次使用某個表項,則該表項失效,下次還要發ARP請求來獲得目的主機的硬件地址
  • 2.ARP數據報的格式

四、DNS(Domain Name System)

  • DNS是一整套從域名映射到IP的系統

  • TCP/IP中使用IP地址和端口號來確定網絡上的一臺主機的一個程序. 但是IP地址不方便記憶.

  • 于是人們發明了一種叫主機名的東西, 是一個字符串, 并且使用hosts文件來描述主機名和IP地址的關系

  • 瀏覽器中輸入url后, 發生的事情
    瀏覽器中輸入url后, 發生的事情

五、ICMP協議

  • 1 . ICMP協議是一個 網絡層協議

  • 一個新搭建好的網絡, 往往需要先進行一個簡單的測試, 來驗證網絡是否暢通;

  • 但是IP協議并不提供可靠傳輸. 如果丟包了, IP協議并不能通知傳輸層是否丟包以及丟包的原因

  • 2.ICMP主要功能包括:

  • 確認IP包是否成功到達目標地址.

  • 通知在發送過程中IP包被丟棄的原因.

  • ICMP也是基于IP協議工作的. 但是它并不是傳輸層的功能,因此人們仍然把它歸結為網絡層協議;

  • ICMP只能搭配IPv4使用. 如果是IPv6的情況下, 需要是用ICMPv6

六、NAT技術

  • 1.NAT技術當前解決IP地址不夠用的主要手段, 是路由器的一個重要功能;
  • NAT能夠將私有IP對外通信時轉為全局IP. 也就是就是一種將私有IP和全局IP相互轉化的技術方法:
  • 很多學校, 家庭, 公司內部采用每個終端設置私有IP, 而在路由器或必要的服務器上設置全局IP;
  • 全局IP要求唯一, 但是私有IP不需要; 在不同的局域網中出現相同的私有IP是完全不影響
  • 2.NAPT技術
  • 那么問題來了, 如果局域網內, 有多個主機都訪問同一個外網服務器, 那么對于服務器返回的數據中, 目的IP都是相同的. 那么NAT路由器如何判定將這個數據包轉發給哪個局域網的主機?
  • 這時候NAPT來解決這個問題了. 使用IP+port來建立這個關聯關系
  • 3.NAT技術的缺陷
  • 由于NAT依賴這個轉換表, 所以有諸多限制: 無法從NAT外部向內部服務器建立連接;
  • 裝換表的生成和銷毀都需要額外開銷;
  • 通信過程中一旦NAT設備異常, 即使存在熱備, 所有的TCP連接也都會斷開
  • 4.NAT和代理服務器
  • 路由器往往都具備NAT設備的功能, 通過NAT設備進行中轉, 完成子網設備和其他子網設備的通信過程.
  • 代理服務器看起來和NAT設備有一點像. 客戶端像代理服務器發送請求, 代理服務器將請求轉發給真正要請求的服務器; 服務器返回結果后, 代理服務器又把結果回傳給客戶端.
  • 那么NAT和代理服務器的區別有哪些呢?
  • 從應用上講, NAT設備是網絡基礎設備之一, 解決的是IP不足的問題. 代理服務器則是更貼近具體應用, 比如通過代理服務器進行翻墻, 另外像迅游這樣的加速器, 也是使用代理服務器.
  • 從底層實現上講, NAT是工作在網絡層, 直接對IP地址進行替換. 代理服務器往往工作在應用層.
  • 從使用范圍上講, NAT一般在局域網的出口部署, 代理服務器可以在局域網做, 也可以在廣域網做, 也可以跨網.
  • 從部署位置上看, NAT一般集成在防火墻, 路由器等硬件設備上, 代理服務器則是一個軟件程序, 需要部署在服務器上.
  • 代理服務器是一種應用比較廣的技術
  • 總結:

數據鏈路層

  • 數據鏈路層的作用: 兩個設備(同一種數據鏈路節點)之間進行傳遞數據
  • 以太網是一種技術標準; 既包含了數據鏈路層的內容,也包含了一些物理層的內容. 例如: 規定了網絡拓撲 結構, 訪問控制方式, 傳輸速率等;
  • 以太網幀格式
  • 理解mac地址
  • 理解arp協議
  • 理解MTU

網絡層

  • 網絡層的作用: 在復雜的網絡環境中確定一個合適的路徑.
  • 理解IP地址,
  • 理解IP地址和MAC地址的區別.
  • 理解IP協議格式.
  • 了解網段劃分方法
  • 理解如何解決IP數目不足的問題,
  • 掌握網段劃分的兩種方案. 理解私有IP和公網IP 理解網絡層的IP地址路由過程.
  • 理解一個數據包如何跨越網段到達最終目的地. 理解IP數據包分包的原因.
  • 了解ICMP協議.
  • 了解NAT設備的工作原理.

傳輸層

  • 傳輸層的作用: 負責數據能夠從發送端傳輸接收端. 理解端口號的概念.
  • 認識TCP協議,
  • 理解TCP協議的可靠性.
  • 理解TCP協議的狀態轉化.
  • 掌握TCP的連接管理, 確認應答, 超時重傳, 滑動窗口,流量控制, 擁塞控制, 延遲應答, 捎帶應答特性. 理解TCP面向字節流, 理解粘包問題和解決方案.
  • 能夠基于UDP實現可靠傳輸.
  • 理解MTU對UDP/TCP的影響.

應用層

  • 應用層的作用: 滿足我們日常需求的網絡程序, 都是在應用層 能夠根據自己的需求, 設計應用層協議.
  • 了解HTTP協議.
  • 理解DNS的原理和工作流程

總結

以上是生活随笔為你收集整理的网络基础(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

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