正式班D7

drrug發表於2020-10-13

2020.10.13星期二  正式班D7

一、上節課複習

  1. Linux發展

    1. 批處理系統
    2. 多道技術
      1. 分時作業系統
      2. multics—>Unix—>minix—>Linux(如Redhat、centos)
  2. 執行緒與程式

    1. 程式:資源單位

      一個程式在執行過程中使用的資料都與自己的程式有關

    2. 執行緒:執行單位(CPU執行的是執行緒)

      程式內程式碼的執行過程

  3. 任務執行的三種狀態

    1. 執行態:拿到CPU,正在執行
    2. 就緒態:等待分配CPU,一旦拿到cpu就可以立即執行
    3. 阻塞態:拿到CPU也無法執行,必須等io結束進入就緒態
  4. 網路

    1. 什麼是網路

      網路=物理連線介質+網際網路通訊協議

      網際網路通訊協議就相當於計算機界的英語

    2. 為什麼要有網路

      為了打破地域限制,提高資料傳輸效率(資訊高速公路)

  5. OSI七層協議

    應用層==》http、ftp、可以自定義協議

    表示層

    會話層

    傳輸層==》TCP/UDP協議

    ​ 1、資料段

    ​ 2、head+data:head放源埠、目標埠

    ​ 3、埠在本機唯一即可

    網路層==》IP協議

    ​ 1、資料包

    ​ 2、head+data:head放源IP地址、目標IP地址

    ​ 3、IP地址的通訊協議==》路由協議

    ​ ipv4:

    ​ IP v4地址

    ​ 00000000.00000000.00000000.00000000==》0.0.0.0

    ​ 11111111.11111111.11111111.11111111==》255.255.255.255

    ​ 子網掩碼:

    ​ 11111111.11111111.11111111.00000000==》255.255.255.0

    ​ 172.16.10.13/24==》172.16.10.0

    ​ 172.16.10.14/24==》172.16.10.0

    ​ 子網地址相同,代表處於同一個lan中

    資料鏈路層==》Ethernet乙太網協議

    ​ 1、資料幀

    ​ 2、head+data,head放源mac地址、目標mac地址

    ​ 3、基於mac地址的廣播的通訊方式==》計算機通訊基本靠吼

    物理層==》轉換成電訊號(如011101101),然後傳送

二、本節內容

  1. 資料鏈路層與網路層補充

    1. 引入

      1. 計算機1要與計算機2通訊,計算機1必須拿到計算機2的IP地址和子網掩碼
      2. 通訊分為兩類:區域網內、跨區域網
      3. 問題:
        1. 計算機1如何確定與計算機2是否在同一個區域網內
        2. 如果在一個區域網內如何通訊(要拿到目標mac也就是計算機2的mac地址)
        3. 如果跨區域網如何通訊(要拿到目標mac也就是閘道器的mac地址)
    2. ARP協議

      1. 通過IP地址找到mac地址

      2. 前提:在一個區域網LAN內,靠的是目標mac地址找到對方在哪裡

        ​ 即只要知道目標mac地址是誰,資料包就發給誰

      3. 情況一:

        前提:計算機一:192.168.10.11/24

        ​ 計算機二:192.168.10.13/24

        1. 拿到目標mac地址

          1. ARP協議:判斷兩臺計算機的子網地址是否一樣

            ​ (此情況一樣,嘗試獲得計算機2的mac地址)

            1. 發包

              計算機1的mac地址 FF-FF-FF-FF-FF-FF 192.168.10.11/24 192.168.10.13/24 資料部分

            2. 所有計算機都收到該ARP包

              碰到FF-FF-FF-FF-FF-FF大家都知道對方想和自己要mac地址

              如果目標IP192.168.10.13/24是自己就返回自己的mac地址

          2. 發真正的資料

            計算機1的mac地址 計算機2的mac地址 192.168.10.11/24 192.168.10.13/24資料部分

      4. 情況二:

        前提:計算機一:192.168.10.11/24

        ​ 計算機二:202.10.11.13/24

        1. 拿到目標mac地址

          1. ARP協議:判斷兩臺計算機的子網地址是否一樣

            ​ (此情況不一樣,應當嘗試獲取閘道器的mac地址)

            1. 發包

              計算機1的mac地址 FF-FF-FF-FF-FF-FF 192.168.10.11/24 192.168.10.1/24(閘道器的IP) 資料部分

            2. 所有計算機都收到該ARP包

              碰到FF-FF-FF-FF-FF-FF大家都知道對方想要自己的mac地址

              如果碰到目標IP192.168.10.1/24就是自己則返回自己的mac地址

          2. 發真正的資料

            計算機1的mac地址 閘道器的mac地址 192.168.10.11/24 202.10.11.13/24 資料部分

  2. IP+mac

    1. IP地址+mac地址==》全世界唯一一臺計算機

    2. ARP會將IP地址轉換成mac地址

      1. 要麼是區域網內一臺計算機的mac地址
      2. 要麼就是閘道器的mac地址
  3. TCP/UDP協議(傳輸層)

    1. 由來

      1. 網路層的IP幫我們區分子網,乙太網層的mac幫我們找到主機;然後大家就使用多個應用程式
      2. 如何標識這臺主機上的應用程式就是埠(應用程式與網路卡關聯的編號)
    2. 功能:建立埠到埠的通訊

    3. 範圍:065535(其中01023是系統佔用埠)

    4. TCP協議(可靠傳輸)

      1. TCP通訊之前必須建立雙向通路

      2. TCP資料包沒有長度限制,理論上可以無限長,但為了保證網路的效率,

        通常TCP資料包的長度不會超過IP資料包的長度,以確保單個TCP資料包不必再分割

      3. 可靠原因:資料拷貝後傳輸(傳輸時不會刪除原資料),對方無應答會申請多次,給到ACK確認資訊之後刪除資料

    5. UDP協議(不可靠傳輸)

      報頭部分一共只有8個位元組,總長度不超過65535個位元組,正好放進一個IP資料包

    6. TCP三次握手和四次揮手

      1. SYN:Synchronize sequence numbers同步序列編號

        seq:sequence序列

        ACK:ACKnowledge Character確認字元

      2. 三次握手(客戶端先手)

        1. 客戶端狀態SYN_SENT,傳送SYN請求資訊給服務端,此資料段序列號seq=x

        2. 服務端狀態從LISTEN轉到SYN_RCVD

          回覆SYN+ACK資料段,此資料段序列號seq為y,確認序列號ACK=x+1

        3. 客戶端狀態從SYN_SENT轉到ESTABLISHED

          回覆確認序列號ACK=y+1

          伺服器狀態從SYN_RCVD轉到ESTABLISHED

      3. 四次揮手(客戶端、服務端都可先手)

  4. 應用層

    1. 由來:使用者使用的都是應用程式,均工作於應用層

      ​ 網際網路是開發的,大家都可以開發自己的應用程式,資料多種多樣,必須規定好資料的組織形式

    2. 功能:規定應用程式的資料格式

  5. socket

我們經常把socket翻譯為套接字,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象為幾個簡單的介面供應用層呼叫已實現程式在網路中通訊。

​				   應用層

​		====》socket《====

​					傳輸層

​					網路層

​					資料鏈路層

​					物理層
  1. DHCP

    1. 想實現網路通訊,每臺主機需要具備四要素:

      1. 本機的IP地址
      2. 子網掩碼
      3. 閘道器的IP地址
      4. DNS的IP地址
    2. 獲取方式

      1. 靜態獲取:手動配置

      2. 動態獲取:通過DHCP獲取(udp頭)

        乙太網頭+IP頭+udp頭+DHCP資料包

        1. "乙太網頭"設定發出方(本機)的mac地址和接收方(DHCP伺服器)的mac地址

          前者就是本機網路卡的mac地址,後者此時未知,填廣播地址FF-FF-FF-FF-FF-FF

        2. "IP頭"設定發出方IP地址和接收方IP地址

          此時兩者均未知,發出方填0.0.0.0,接收方填255.255.255.255

        3. "UDP頭"設定發出方的埠和接收方的埠

          這一部分是DHCP協議規定好的,客戶端是68埠,服務端是67埠

          DHCP client(68號埠)---------------->DHCP server(67號埠)

  2. DNS(Domain Name System)域名系統

    1. dns作用

      DNS是解析域名的,會把域名翻譯成IP再進行連線

      DNS伺服器地址是唯一的,是執行商提供給終端使用者來解析IP地址及域名的關係的

    2. dns查詢方式

      1. 遞迴

        1. 主機向本地域名伺服器查詢一般都是採用遞迴查詢

        2. 如果主機所詢問的本地域名伺服器不知道被查詢的域名的IP地址,

          那麼本地域名伺服器就以DNS客戶的身份,向其它根域名伺服器繼續發出查詢請求報文(替主機繼續查詢,而不是讓主機自己進行下一步查詢)。
          因此,遞迴查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。

      2. 迭代

        1. 本地域名伺服器向根域名伺服器的查詢是迭代查詢

        2. 當根域名伺服器收到本地域名伺服器發出的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼告訴本地伺服器:“你下一步應當向哪一個域名伺服器進行查詢”。然後讓本地伺服器進行後續的查詢。

          根域名伺服器通常是把自己知道的頂級域名伺服器的IP地址告訴本地域名伺服器,讓本地域名伺服器再向頂級域名伺服器查詢。

          頂級域名伺服器在收到本地域名伺服器的查詢請求後,要麼給出所要查詢的IP地址,要麼告訴本地伺服器下一步應當向哪一個許可權域名伺服器進行查詢。
          最後,知道了所要解析的IP地址或報錯,然後把這個結果返回給發起查詢的主機。

      3. 結合

    3. dns解析流程

    4. dns快取

      ··DNS快取指DNS返回了正確的IP之後,系統會將這個結果臨時儲存起來,且為這個快取設定失效時間

      ··在時間內再次訪問這個網站時,系統會直接從本地DNS快取中把結果交給你,而不是去詢問DNS伺服器,變向加速了網址的解析。

      ··時間過後系統會再次詢問DNS伺服器獲得新的結果

      ··修改DNS伺服器後並且不希望電腦再使用之前的DNS快取時要手動清除本地快取

      1. 分類

        1. 瀏覽器DNS快取(記憶體中)

          瀏覽器會按照一定頻率快取DNS記錄

        2. 本地作業系統DNS快取(記憶體中)

          如果瀏覽器找不到需要的DNS記錄就去作業系統找

        3. 本地HOSTS檔案(硬碟中)

          Windows系統中位於C:\Windows\System32\drivers\etc

          Linux系統中位於/etc/hosts

        4. 路由器指定的DNS(遠端)

          路由器自動獲取DNS地址,也可以手動修改-登入後臺設定DNS伺服器地址

          (路由器DNS被篡改會造成域名劫持,訪問的網址都會被定位到同一個位置,但IP可以直接訪問)

        5. 本地DNS伺服器(遠端)

        6. 根伺服器(遠端、跨國)

      2. 瀏覽器dns查詢順序

        瀏覽器DNS快取->本地系統DNS快取->本地計算機HOSTS檔案->本地DNS快取->遞迴or迭代搜尋

      3. 清除dns快取

        全國通用DNS地址(國內使用者推薦使用,速度較快!)
        首先DNS伺服器地址添:114.114.114.114 (位於北京人民英雄紀念碑)
        備用DNS伺服器地址添:114.114.115.115
        全球通用DNS地址(此DNS地址為谷歌伺服器的)
        首選DNS伺服器地址添:8.8.8.8
        備用DNS伺服器地址添:8.8.4.4
        1. 開啟cmd執行命令:ipconfig/all
        2. 檢視本地dns快取命令:ipconfig/displaydns
        3. 清除本地dns快取命令:ipconfig/flushdns

相關文章