乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      網(wǎng)絡基礎學習

       常有理 2019-12-13

      學習指導

      1.Python 學習資料

      1. 廖雪峰的官方網(wǎng)站

      http://www./wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

      2. Python快速教程

      http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html

      3. python 幫助

      網(wǎng)絡基礎學習

      2.TCPIP基礎學習

      2.1 TCPIP協(xié)議分層2.1.1 分層原理

      網(wǎng)絡基礎學習

      發(fā)送端:程序員編寫的應用程序通過socket 函數(shù)庫的使用, 比如調(diào)sendto 或者send或者write , 這些函數(shù)在操作系統(tǒng)的用戶態(tài)空間,進入操作系統(tǒng)的系統(tǒng)調(diào)用,調(diào)操作系統(tǒng)的sys_xxx 函數(shù),進入操作系統(tǒng)的內(nèi)核態(tài)。

      內(nèi)核態(tài)的網(wǎng)絡子系統(tǒng)(專門處理網(wǎng)卡、TCPIP協(xié)議的代碼), sys_sendto 判斷 是UDP還是TCP,如果是TCP,則調(diào) TCP_output 函數(shù),TCP_output負責填寫TCP首部的數(shù)據(jù),比如發(fā)送方的端口號和接收方的端口號、以及校驗和(簡單校驗,防止數(shù)據(jù)錯誤)。

      緊接著進入IP層處理,調(diào)IP_output,查找路由(因為設備可能有多個網(wǎng)卡, 那怎么選擇? 根據(jù)目的IP地址來選路,類似于查地圖,找到哪個網(wǎng)卡), IP_output 填寫發(fā)送者的IP地址和接收者的IP地址信息。

      網(wǎng)絡基礎學習

      IP層首部按固定格式填好之后,那么就進入鏈路層(由物理層所決定,早起有的設備并沒有網(wǎng)卡,有的是直連的電話線或者串口等設備, 而網(wǎng)卡的設備識別ID是MAC地址, 6個字節(jié)。)

      不同的鏈路層處理函數(shù)是不同的,如果是網(wǎng)卡,則是ethernet_output, 鏈路層的處理則是需要填寫自己的MAC地址和對方的MAC地址。 對方的MAC地址從哪里來?后面會講到。

      鏈路層獲取到對方的MAC地址后,就把報文按固定格式填好,這個時候,所有的數(shù)據(jù)都按固定格式組裝完畢, 調(diào)網(wǎng)卡的驅(qū)動程序的函數(shù) physic_send 發(fā)送(會觸發(fā)軟中斷或者加入隊列,寫一個消息,CPU后續(xù)從網(wǎng)卡獲取數(shù)據(jù)發(fā)送出去。)

      接收端:

      接收端網(wǎng)卡收到數(shù)據(jù)后,觸發(fā)了中斷, 報文的內(nèi)容被寫入一個隊列中,觸發(fā)一個軟中斷, 操作系統(tǒng)的內(nèi)核線程會去讀取隊列中的數(shù)據(jù)。讀到數(shù)據(jù)后,先解析是以太網(wǎng)的格式還是其他物理設備的格式。 以太網(wǎng) 的首部是14個字節(jié)(目的MAC是自己網(wǎng)卡的,報文才允許接收, 廣播報文也默認會接收)

      網(wǎng)絡基礎學習

      內(nèi)核線程調(diào)ethernet_input函數(shù)處理,如果是IP報文,則調(diào) ip_input函數(shù),進行IP首部報文正確性檢查,如果目的IP地址屬于自己某個網(wǎng)卡的,則是屬于自己設備的報文,如果不是,要轉(zhuǎn)給其他設備(類似于路由器)(實際情況,判斷報文是不是自己設備,不是根據(jù)IP地址,而是根據(jù)路由表,后續(xù)再講)

      IP_input 檢查報文中的 8位協(xié)議號 信息,如果是TCP 就調(diào)tcp_input函數(shù)處理,如果是udp,則調(diào)udp_input函數(shù)處理,如果是ping報文(準備叫法是icmp),則調(diào)icmp_input函數(shù)處理。

      網(wǎng)絡基礎學習

      最后tcp_input或者udp_input講報文入了tcp或者udp的數(shù)據(jù)隊列中,等程序員寫的socket程序 調(diào)recv或者recvfrom函數(shù)把數(shù)據(jù)讀走,繼續(xù)用于自己的數(shù)據(jù)解析,如,如果是HTTP報文,則進行http報文解析處理。

      2.1.2 Ping 的原理說明

      Ping 是一個應用程序,是通過socket 編程實現(xiàn)的, 通過創(chuàng)建一個raw socket。

      socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)

      通過代碼 構造IP首部、ICMP首部,將報文發(fā)送出去。

      網(wǎng)絡基礎學習

      ICMP 請求 報文 8位類型和8位代碼是8和0

      網(wǎng)絡基礎學習

      而ping的應答報文 的type code是0和0

      網(wǎng)絡基礎學習

      舉例 PC1 192.168.2.1 執(zhí)行ping 的應用程序,發(fā)送報文給 PC3 192.168.2.3

      而實際上PC3 192.168.2.3上是沒有啟動應用程序的,但是結(jié)果能ping 通? 原因是?

      PC3 中 操作系統(tǒng)的內(nèi)核收到ICMP 請求報文后, 直接進行了ICMP應答,即這個報文不會到達應用程序(因為不需要?只需要知道這個IP地址真實存在就OK了) ,但是這個應答報文需要 送給PC1 的應用程序? 為什么? 因為ping 是應用程序發(fā)送出來的,那么應用程序必然需要知道到底是成功還是失敗或者超時了。

      網(wǎng)絡基礎學習

      2.1.3 Wireshark抓取 www.huawei.com 的報文

      打開 wireshark ,選擇真實的物理網(wǎng)卡

      網(wǎng)絡基礎學習

      鼠標選擇報文某個字段, 右鍵 選擇 apply as filter

      網(wǎng)絡基礎學習

      可以選擇性報文,

      網(wǎng)絡基礎學習

      同時也可以 && tcp 或者&& http 選擇報文類型抓包

      網(wǎng)絡基礎學習

      2.1.4 上網(wǎng)的完整原理

      網(wǎng)絡基礎學習

      1. 寬帶辦理

      家庭A和家庭B 屬于一個小區(qū)的兩家用戶 ,分別辦理了寬帶。

      家庭A的路由器和家庭B的路由器 通電后,會發(fā)送廣播報文(這個時候還沒有IP地址) 發(fā)送給電信的交換機(交換機轉(zhuǎn)給電信路由器) ,電信路由器對 家庭A/B路由器響應, 家庭A/B 將用戶名和密碼填寫到報文里面, 電信路由器收到報文后,根據(jù)密碼進行判斷,如果在自己的用戶名列表且密碼正確,則給每家分配一個IP地址,IP地址是201.1.1.10和201.1.1.20 ,同時在報文里面將DNS服務器 114.114.114.11的地址帶給A/B

      結(jié)合實際家里的路由器舉例:

      在瀏覽器輸入192.168.1.1 可以查看自己家路由器的信息

      網(wǎng)絡基礎學習

      10.68.166.75 就是電信路由器給家庭分配的IP地址;

      10.64.0.10 和10.64.0.100 是電信路由器在分配IP地址的過程中攜帶回來的DNS服務器IP, 相當于組網(wǎng)圖中的114.114.114.114

      2. 手機和電腦的IP地址從哪里來的?

      手機和電腦的IP的地址是從自己的路由器分配的(當然也可以手動配置IP地址,但是管理起來比較復雜),采用的是DHCP 自動分配IP地址。 比如,查看自己的電腦

      網(wǎng)絡基礎學習

      點 開始 --à運行

      網(wǎng)絡基礎學習

      輸入 ipconfig /all

      網(wǎng)絡基礎學習

      備注: 通常情況下 自己家路由器的DNS server 也是192.168.1.1 ,這里的114.114.114.114是我修改的,有時候網(wǎng)頁訪問出現(xiàn)問題,和DNS 有關。

      手機和電腦開機后,通過DHCP協(xié)議(后續(xù)再講)從家庭路由器 192.168.1.1 中獲取IP地址和DNS服務器的IP地址,得到192.168.1.10/192.168.1.20,并得到DNS 服務器192.168.1.1

      3. DNS獲取

      手機 開始上網(wǎng) 瀏覽器輸入www.google.com

      互聯(lián)網(wǎng)訪問時基于IP地址的,這個時候需要獲取www.google.com對應的真實IP地址。

      手機檢查本地系統(tǒng)DNS緩存有沒有google的歷史記錄,如果沒有,就向 自己的家庭路由器 192.168.1.1 這個IP地址發(fā)送DNS 請求查詢(請告訴我 google的IP) , 家庭路由器 看看自己的DNS緩存有沒有,如果沒有,就向電信的DNS服務器 114.114.114.114 查詢(請告訴我 google的IP), 如果電信DNS也沒有,即向國際頂級DNS 服務器8.8.8.8(備注: 8.8.8.8實際是google的DNS服務器,這里只是舉例), 只要開通了DNS注冊,交錢的國際企業(yè)在 頂級域名是有記錄的(除非只在某個范圍內(nèi)生效)。 最終手機就可以獲取到www.google.com IP地址是圖中9.9.9.20。

      那么手機就可以將 192.168.1.1 發(fā)給 9.9.9.20 的http報文發(fā)送出去。

      4 .報文通過路由器轉(zhuǎn)發(fā)

      手機 訪問 9.9.9.20(google)的http報文 ,

      手機 à 家庭路由器

      源IP地址是192.168.1.10 ,目的IP地址是9.9.9.20 ; 這里有個問題: 別人家也有一個192.168.1.10,那么google的服務器怎么知道是誰家的 192.168.1.10?

      數(shù)據(jù)在互聯(lián)網(wǎng)上傳輸,肯定是需要一個唯一的IP地址,那么對每家來說,唯一的IP地址是電信分配的。也就是說,每家只能用自己的IP地址作為源IP地址。

      那么我家里有多臺手機和電腦,怎么辦?

      手機1 192.168.1.10: 789 à 9.9.9.20: 80 被家庭路由器SNAT 成 201.1.1.10: 123à 9.9.9.20: 80

      電腦1 192.168.1.20: 678 à 9.9.9.20: 80被家庭路由器SNAT 成 201.1.1.10: 124à 9.9.9.20: 80

      也就是說,數(shù)據(jù)出了自己的路由器,整個過程源IP地址、目的IP地址、源端口號、目的端口號都是不變的,直到到達google, google返程 分別回給201.1.1.10:123和201.1.1.20:124

      數(shù)據(jù)到達家庭路由器后,重新把目的IP地址換回192.168.1.10和192.168.1.20。最終完成數(shù)據(jù)的傳輸過程。

      3 TCPIP學習

      3.1 ARP學習基礎3.1.1 ARP報文

      以太網(wǎng)是根據(jù)MAC地址識別的。

      網(wǎng)絡基礎學習

      PC1 學習到了PC3 的MAC地址,才可以發(fā)送報文,否則無法ping通,比如把 PC3移除。

      網(wǎng)絡基礎學習

      192.168.2.1 向 192.168.2.3 發(fā)送 ARP報文,根據(jù)ARP的報文格式

      網(wǎng)絡基礎學習

      類型 0x0800表示 ARP報文 。

      發(fā)送ARP請求,只知道 自己的MAC地址,自己的IP地址, 對方的IP地址,但是不知道對方的MAC地址。 相當于 我要找人,這個人在我視線范圍,但是我不認識他。那么我喊一下(廣播),讓所有的人都能聽到。 目的MAC地址填 ff-ff-ff-ff-ff-ff 。

      所有收到的人 判斷一下是不是自己的IP地址,如果是自己的IP地址,那么就單播應答一下。

      網(wǎng)絡基礎學習

      這樣一來,雙方都能知道對方的MAC地址。 記錄到內(nèi)存里面。因為下一個使用的時候不需要重新發(fā)送報文,提高效率。 但是如果一直不再給對方發(fā)送數(shù)據(jù),也不知道對方還在不再。那么又存在浪費內(nèi)存的情況。最好的方式是設置一個超時時間,默認20分鐘。 如果20分鐘到了,再重新發(fā)送一次,如果能學習到,說明還在,繼續(xù)保留這個表象。

      在Windows7上 運行 開始 cmd 輸入 arp –a 可以觀察到這個表項

      網(wǎng)絡基礎學習

      3.1.2Hub和交換機的區(qū)別

      網(wǎng)絡基礎學習

      Hub組網(wǎng), PC1 ping PC3 ,在 PC2上可以抓到所有報文

      但是把HUB換成交換機, PC1 ping PC3, 在PC2上只能抓到ARP請求報文(確切說是廣播報文)

      為什么?

      3.1.3 路由器組網(wǎng)下的ARP學習

      網(wǎng)絡基礎學習

      組網(wǎng)如圖,啟動三個設備

      網(wǎng)絡基礎學習

      網(wǎng)絡基礎學習

      雙擊 路由器

      網(wǎng)絡基礎學習

      給路由器配置IP地址

      <Huawei>sys

      [Huawei]interface Ethernet 0/0/0

      [Huawei-Ethernet0/0/0]ip address 192.168.1.1 24

      [Huawei-Ethernet0/0/0]q

      [Huawei]interface ethernet0/0/1

      [Huawei-Ethernet0/0/1]ip address 192.168.2.1 24

      網(wǎng)絡基礎學習

      在PC1 192.168.1.10 上ping PC2 192.168.2.20

      網(wǎng)絡基礎學習

      如果沒有路由器, PC1和PC2是不同網(wǎng)段, 是ping 不通的。如果換成交換機或者HUB,也是ping 不通的。 跨網(wǎng)段必須需要一個路由器來轉(zhuǎn)發(fā)(備注:這里的交換機指二層交換機,三層交換機具備路由器的特征,可以三層轉(zhuǎn)發(fā); 二層表示是同一個網(wǎng)段)

      觀察,為什么PC1 沒有PC2的MAC地址? 而只有路由器192.168.1.1的MAC地址?

      3.2 觀察windows 上的路由表3.3路由的選路過程

      網(wǎng)絡基礎學習

      3.4 DHCP 的過程3.3 TCP的報文交互

      4 socket編程(python)

      Server.py


      網(wǎng)絡基礎學習


      Client.py


      網(wǎng)絡基礎學習

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多