一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

 常有理 2019-12-13

學(xué)習(xí)指導(dǎo)

1.Python 學(xué)習(xí)資料

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

http://www./wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

2. Python快速教程

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

3. python 幫助

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

2.TCPIP基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

發(fā)送端:程序員編寫的應(yīng)用程序通過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)絡(luò)子系統(tǒng)(專門處理網(wǎng)卡、TCPIP協(xié)議的代碼), sys_sendto 判斷 是UDP還是TCP,如果是TCP,則調(diào) TCP_output 函數(shù),TCP_output負責(zé)填寫TCP首部的數(shù)據(jù),比如發(fā)送方的端口號和接收方的端口號、以及校驗和(簡單校驗,防止數(shù)據(jù)錯誤)。

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

IP層首部按固定格式填好之后,那么就進入鏈路層(由物理層所決定,早起有的設(shè)備并沒有網(wǎng)卡,有的是直連的電話線或者串口等設(shè)備, 而網(wǎng)卡的設(shè)備識別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)的格式還是其他物理設(shè)備的格式。 以太網(wǎng) 的首部是14個字節(jié)(目的MAC是自己網(wǎng)卡的,報文才允許接收, 廣播報文也默認會接收)

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

內(nèi)核線程調(diào)ethernet_input函數(shù)處理,如果是IP報文,則調(diào) ip_input函數(shù),進行IP首部報文正確性檢查,如果目的IP地址屬于自己某個網(wǎng)卡的,則是屬于自己設(shè)備的報文,如果不是,要轉(zhuǎn)給其他設(shè)備(類似于路由器)(實際情況,判斷報文是不是自己設(shè)備,不是根據(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)絡(luò)基礎(chǔ)學(xué)習(xí)

最后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 是一個應(yīng)用程序,是通過socket 編程實現(xiàn)的, 通過創(chuàng)建一個raw socket。

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

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

而ping的應(yīng)答報文 的type code是0和0

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

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

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

鼠標(biāo)選擇報文某個字段, 右鍵 選擇 apply as filter

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

可以選擇性報文,

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

1. 寬帶辦理

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

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

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

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

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

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

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

點 開始 --à運行

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

輸入 ipconfig /all

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

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

3. DNS獲取

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

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

手機檢查本地系統(tǒng)DNS緩存有沒有g(shù)oogle的歷史記錄,如果沒有,就向 自己的家庭路由器 192.168.1.1 這個IP地址發(fā)送DNS 請求查詢(請告訴我 google的IP) , 家庭路由器 看看自己的DNS緩存有沒有,如果沒有,就向電信的DNS服務(wù)器 114.114.114.114 查詢(請告訴我 google的IP), 如果電信DNS也沒有,即向國際頂級DNS 服務(wù)器8.8.8.8(備注: 8.8.8.8實際是google的DNS服務(wù)器,這里只是舉例), 只要開通了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的服務(wù)器怎么知道是誰家的 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學(xué)習(xí)

3.1 ARP學(xué)習(xí)基礎(chǔ)3.1.1 ARP報文

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

類型 0x0800表示 ARP報文 。

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

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

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

為什么?

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

雙擊 路由器

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

給路由器配置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)絡(luò)基礎(chǔ)學(xué)習(xí)

在PC1 192.168.1.10 上ping PC2 192.168.2.20

網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

如果沒有路由器, 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)絡(luò)基礎(chǔ)學(xué)習(xí)

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

4 socket編程(python)

Server.py


網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)


Client.py


網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美国产日产在线观看| 激情国产白嫩美女在线观看| 免费性欧美重口味黄色| 久久国内午夜福利直播| 国产目拍亚洲精品区一区| 中文字幕欧美精品人妻一区| 热久久这里只有精品视频| 俄罗斯胖女人性生活视频| 好吊日在线视频免费观看| 日本黄色美女日本黄色| 日本丁香婷婷欧美激情| 亚洲国产av在线视频| 午夜精品一区免费视频| 人妻巨大乳一二三区麻豆| 不卡中文字幕在线免费看| 日木乱偷人妻中文字幕在线| 老司机精品福利视频在线播放| 国产日韩在线一二三区| 国产对白老熟女正在播放| 欧美一区二区三区高潮菊竹| 亚洲国产精品久久精品成人| 视频一区二区 国产精品| 国产又粗又长又大的视频| 麻豆看片麻豆免费视频| 婷婷激情四射在线观看视频 | 精品欧美一区二区三久久| 亚洲欧美天堂精品在线| 中国黄色色片色哟哟哟哟哟哟| 国产精品一区二区三区激情| 亚洲综合精品天堂夜夜| 日韩不卡一区二区视频| 夫妻性生活一级黄色录像| 欧美日韩中国性生活视频| 欧美人禽色视频免费看| 日韩免费av一区二区三区| 99久久国产精品亚洲| 91福利视频日本免费看看| 亚洲欧洲成人精品香蕉网| 国产大屁股喷水在线观看视频 | 日韩成人中文字幕在线一区 | 亚洲综合色在线视频香蕉视频|