正式班D7

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
Tags: