第二章 網(wǎng)絡(luò)分層的真正含義
image.png
Q:在TCP三次握手的時候瓜喇,IP層和MAC層在干嘛挺益?
A:TCP 發(fā)送每一個消息,都會帶
著 IP 層和 MAC 層了乘寒。因?yàn)橥冢琓CP 每發(fā)送一個消息,IP 層和 MAC 層的所有機(jī)制都要運(yùn)行一
遍伞辛。而你只看到 TCP 三次握手了烂翰,其實(shí),IP 層和 MAC 層為此也忙活好久了蚤氏。
只要是網(wǎng)絡(luò)上跑的包甘耿,都是完整的「捅酰可以有下層沒上層佳恬,不可能只要上層沒下層。
第三章 ifconfig
- 查看IP地址的命令:windows是ipconfig于游,Linux是ifconfig
- 網(wǎng)關(guān)是郵電局,所有的信息必須通過這里的打包毁葱、封箱、尋址贰剥,才能發(fā)出去與收進(jìn)來头谜;網(wǎng)卡是設(shè)備(網(wǎng)卡地址就是mac地址),也就是郵電局郵筒鸠澈,你家的信箱柱告;而網(wǎng)橋是郵遞員截驮,但他只負(fù)責(zé)一個鎮(zhèn)里面(局域網(wǎng))不負(fù)責(zé)廣域網(wǎng)。
- IP地址是一個網(wǎng)卡在網(wǎng)絡(luò)世界的通訊地址际度,相當(dāng)于門牌號葵袭。比如10.100.122.2,地址被分割成四個部分乖菱,每個部分8個bit坡锡,一共32位。這樣產(chǎn)生的IP數(shù)量很快不夠窒所,于是使用IPV6鹉勒,一共128位。
ping:驗(yàn)證IP是否可達(dá)吵取,測試到目標(biāo)機(jī)器的連通性
eg:ping imoopc.com
telnet:Telnet協(xié)議是TCP/IP協(xié)議族的其中之一禽额,指定ip是否開放指定端口的
eg:telnet imooc.com 80 驗(yàn)證80端口是否可用
可能ping不通但端口可用,原因是可能有防火墻
IP與MAC的區(qū)別
- 地址使用不同:IP是Internet協(xié)議使用的地址皮官,MAC是Ethernet協(xié)議使用的脯倒。
- 分配依據(jù)不同:IP地址基于網(wǎng)絡(luò)拓?fù)洌梢宰詣臃峙洌琈AC地址分配基于制造商(網(wǎng)卡出廠時就有全球唯一地址捺氢,很多驗(yàn)證軟件是驗(yàn)證MAC的)
- 地址能否更改:IP可改藻丢,MAC可改,但一般用不上摄乒,除非要繞過軟件驗(yàn)證
- 長度不同:IP32位悠反,MAC48位
- 尋址協(xié)議層不同:IP第三層,網(wǎng)絡(luò)層馍佑;MAC第二層斋否,數(shù)據(jù)鏈路層,將數(shù)據(jù)幀從一個地點(diǎn)傳到相同鏈路的另一個節(jié)點(diǎn)
- MAC地址更像身份證挤茄,局限在一個子網(wǎng)里如叼,要跨子網(wǎng)需要IP地址冰木,IP是地址穷劈,有定位功能,IP分共有和私有
第四章 IP怎么來的踊沸,怎么沒的
- 配置IP地址
??ip config或者ip addr命令
Q:旁邊的機(jī)器都是 192.168.1.x歇终,我非得配置一個 16.158.23.6,會出現(xiàn)什么現(xiàn)象呢逼龟?
A:包發(fā)不出去评凝。
只要在網(wǎng)絡(luò)上的包,不看只有上層沒有下層腺律,知道源IP和目標(biāo)IP后發(fā)布出去包奕短,因?yàn)闆]有MAC層宜肉。Linux的判斷規(guī)則是,目標(biāo)地址和我是否同一網(wǎng)段或和我的網(wǎng)卡是否為同一網(wǎng)段翎碑,是則發(fā)送ARP請求谬返,獲取MAC地址,如果是跨網(wǎng)段調(diào)用日杈,不會直接將包發(fā)送至網(wǎng)絡(luò)遣铝,而是企圖將包發(fā)至網(wǎng)關(guān)。如果配置網(wǎng)關(guān)莉擒,Linux會獲取網(wǎng)關(guān)的MAC地址酿炸,然后將包發(fā)送出去,對于192.168.1.6涨冀,雖然IP地址是它填硕,但MAC不是它,所以網(wǎng)卡是不會將包收進(jìn)去的蝇裤。如果沒有配置網(wǎng)關(guān)廷支,包壓根就發(fā)不出去。 -
動態(tài)主機(jī)配置協(xié)議DHCP(Dynamic Host Configuration Protocol)
??管理員只需配置一段共享IP地址栓辜,每臺機(jī)器都通過該協(xié)議來共享IP里申請恋拍,然后自動配置。相對于數(shù)據(jù)中心里的服務(wù)器IP配置好后基本不會變藕甩,相當(dāng)于買房自己裝修施敢,DHCP相當(dāng)于租房,別人幫你配置好狭莱,暫時用一下用完退租僵娃。
捕獲.PNG
第五章 從物理層到MAC層:如何在宿舍自己組網(wǎng)玩聯(lián)機(jī)游戲
- 物理層
??用網(wǎng)線連接電腦與電腦,配置兩臺電腦的IP地址腋妙、子網(wǎng)掩碼默怨、默認(rèn)網(wǎng)關(guān),此時形成一個最小的局域網(wǎng)LAN骤素。如果有第三個電腦匙睹,怎么連接?集線器(Hub)济竹,有多個口痕檬,可以連接多臺電腦,不像交換機(jī)送浊,集線器沒有大腦梦谜,完全在物理層工作,它將自己收到的每一個字節(jié)發(fā)送給其他端口。 - 數(shù)據(jù)鏈路層
??Hub采取廣播模式唁桩,一個電腦發(fā)送的包每個電腦都能收到闭树,問題來了:
1)包是發(fā)給誰的?誰收荒澡?
2)有沒有先發(fā)后發(fā)的規(guī)則蔼啦?
3)發(fā)錯了怎么辦?
以上問題都是數(shù)據(jù)鏈路層即MAC層解決的仰猖。
??MAC(Medium Access Control媒體訪問控制)捏肢,控制先發(fā)后發(fā)的問題(問題2),防止混亂饥侵,規(guī)則是多路訪問鸵赫,有很多算法可以解決。
??鏈路層地址即MAC地址解決問題1躏升。有了目標(biāo)MAC地址辩棒,數(shù)據(jù)包在鏈路上廣播,MAC層的網(wǎng)卡才能發(fā)現(xiàn)該包是發(fā)給他的膨疏。MAC的網(wǎng)卡把包收進(jìn)來一睁,然后打開IP包,發(fā)現(xiàn)IP地址是自己的佃却,再打開TCP包者吁,發(fā)現(xiàn)端口是自己,也就是80饲帅,nginx也在監(jiān)聽80复凳。于是將請求發(fā)給nginx,nginx返回一個網(wǎng)頁灶泵,然后將內(nèi)容發(fā)回請求的機(jī)器育八,層層封裝,最后到MAC層赦邻。
??對于以太網(wǎng)第二層后面是CRC也就是循環(huán)冗余檢測髓棋。通過異或的算法,計算整個包在發(fā)送過程中是否發(fā)生錯誤惶洲,解決問題3按声。
??延伸:如果機(jī)器數(shù)目增多,就需要交換機(jī)湃鹊。因?yàn)镠ub是廣播的儒喊,不管其他接口是否需要镣奋,都會將所有bit發(fā)送出去币呵,讓主機(jī)判斷是否需要,機(jī)器多沖突概率提高。每個口連接一臺電腦余赢,其IP和MAC基本不會變芯义,只要記住該電腦MAC地址,如果木目標(biāo)MAC不是本機(jī)器妻柒,就不用轉(zhuǎn)發(fā)給這個口扛拨。交換機(jī)可以把MAC頭拿下來,檢查一下目標(biāo)MAC地址举塔,然后根據(jù)策略轉(zhuǎn)發(fā)绑警。交換機(jī)不斷學(xué)習(xí)記錄完善轉(zhuǎn)發(fā)表,相當(dāng)于緩存央渣,一段時間內(nèi)有效计盒。
總結(jié)
第一,MAC 層是用來解決多路訪問的堵車問題的芽丹;
第二北启,ARP 是通過吼的方式來尋找目標(biāo) MAC 地址的,吼完之后記住一段時間拔第,這個叫作緩存咕村;
第三,交換機(jī)是有 MAC 地址學(xué)習(xí)能力的蚊俺,學(xué)完了它就知道誰在哪兒了懈涛,不用廣播了。
第七章 ICMP與ping:投石問路的偵察兵
網(wǎng)絡(luò)不通時泳猬,常常會想到ping肩钠,ping是如何工作的?
-
ICMP協(xié)議的格式
ping 是基于 ICMP 協(xié)議工作的暂殖。ICMP全稱Internet Control Message Protocol价匠,就是互聯(lián)網(wǎng)控制報文協(xié)議。CMP 報文是封裝在 IP 包里面的呛每,ICMP 報文有很多的類型踩窖,不同的類型有不同的代碼。最常用的類型是主動請求為 8晨横,主動請求的應(yīng)答為 0洋腮。
1553073402(1).jpg -
查詢報文類型
ping就是查詢報文,是一種主動請求手形,并且獲得了主動應(yīng)答的ICMP協(xié)議啥供。所以,ping 發(fā)的包也是符合 ICMP協(xié)議格式的库糠,只不過它在后面增加了自己的格式伙狐,添加了標(biāo)識符(有的偵查戰(zhàn)況,有的查水源)、序號(派出的每個兵都有編號贷屎,去幾個回幾個判斷戰(zhàn)況)罢防,選項(xiàng)數(shù)據(jù)還會存放發(fā)送請求的時間,計算往返時間判斷路途長短唉侄。 -
差錯報文類型
舉幾個 ICMP 差錯報文的例子:終點(diǎn)不可達(dá)為 3咒吐,源抑制為 4,超時為 11属划,重定向?yàn)?5恬叹。 -
ping:查詢報文類型的使用
ping的接收和發(fā)送
假定主機(jī) A 的 IP 地址是 192.168.1.1,主機(jī) B 的 IP 地址是 192.168.1.2同眯,它們都在同一個子網(wǎng)妄呕。那當(dāng)你在主機(jī) A 上運(yùn)行“ping 192.168.1.2”后,會發(fā)生什么呢?
1)源主機(jī)構(gòu)建一個ICMP請求數(shù)據(jù)包嗽测,含多個字段绪励,最重要的有
類型字段和順序號
2)由ICMP協(xié)議將數(shù)據(jù)包連同地址192.168.1.2一起交給IP層,IP層將以192.168.1.2為目的地址唠粥,本機(jī)IP作為源地址疏魏,加上些控制信息,構(gòu)建一個IP數(shù)據(jù)包
3)加入MAC頭晤愧。查詢映射表或ARP協(xié)議得到MAC地址大莫,由數(shù)據(jù)鏈路層構(gòu)建一個數(shù)據(jù)幀,目的地址是IP層傳過來的MAC地址官份,源地址是本機(jī)地址只厘,還要加上一些附加信息,依據(jù)以太網(wǎng)的截止訪問規(guī)則發(fā)送出去
4)B主機(jī)收到后先檢查MAC地址和本機(jī)地址是否匹配舅巷, 是則接受羔味,否則丟棄。接受后檢查數(shù)據(jù)幀钠右,將IP數(shù)據(jù)包從幀中提取出來赋元,交給本機(jī)IP層,IP層檢查后將有用信息提取交給ICMP協(xié)議
5)主機(jī)B構(gòu)建一個應(yīng)答包飒房,發(fā)給A
6)在規(guī)定時間內(nèi)搁凸,如果源主機(jī)沒有收到ICMP的應(yīng)答包,說明目標(biāo)主機(jī)不可達(dá)狠毯,收到了說明可達(dá)护糖。源主機(jī)會計算時間延時。
第八章:世界這么大嚼松,我想出網(wǎng)關(guān)
怎么在宿舍上網(wǎng)嫡良?
- 宿舍長兩張網(wǎng)卡锰扶,一張插到宿舍交換機(jī)上,一張插到校園網(wǎng)網(wǎng)口
- 家庭路由器