前言
我的主要科研方向為下一代網絡SDN以及雲計算中網絡研究,但是傳統網絡發展到如此成熟的一個地步,雖然存在一些問題,不過我們不應該用完美來要求所有東西,傳統網絡的很多思想和技術都將長遠地影響以后的網絡發展,這篇文章欲總結一些傳統網絡中經常會碰到的問題。
正文
1.為什么不單獨的用MAC地址和IP地址來進行數據轉發?
如果只用MAC地址,也就是說整個網絡都處於一個大二層中,都處於同一個廣播域中,當世界上成百上千萬的機器處於同一個廣播域的時候,結果可想而知。
如果只是用IP地址,這個問題我只想了下面這種可能性,但是覺得解釋上仍然有些不足,希望大神可以不吝賜教。IP地址是由管理者統一分配的,所以在某個機器申請了IP地址之后,不是說這個機器的IP地址確定了,而是這個機器現在所連的這根網線的IP地址確定了,所以只有IP地址的話,如果頻繁的更換或者移動機器,每次都需要重新配置機器的IP地址。
2.ICMP和IGMP以及ARP和RARP屬於IP/TCP協議分層中的哪一層?
首先ICMP和IGMP都是IP的附屬協議,所以他們有理由都屬於網絡層,但是在數據包的具體傳輸過程中,ICMP和IGMP報文都被封裝在了IP數據報中。
對於ARP和RARP協議來說,也是眾說紛紜,有的教材將其划作網絡層,有的認為是數據鏈路層,從邏輯上來說,數據在從上到下進行封裝的過程中會加上自己的信息,當網絡層的IP包進入鏈路層時,鏈路層通過ARP協議添加鏈路信息,而這不是網絡層的功能,所以可以認為是數據鏈路層,但是從整個網絡解析層面來說,ARP和RARP和IP數據報一樣,都擁有自己的以太網數據幀類型,所以也可以認為是網絡層,所以他們在哪一層並不重要,明白原理最重要,這同時也說明了網絡層的划分並不是十分完美的。
3.為什么常見的網絡應用端口號都是奇數?
端口號是用來區分不用應用的,比如我們看着視頻聊着QQ,我們都需要使用網絡傳輸數據,所以需要客戶端端口號,同樣的,對於服務器而言,他要提供多種服務,如何區分這些服務,同樣需要的是服務器端口號。如果有注意的話發現常用的、時間比較久遠的應用的端口號都是奇數,比如FTP的端口號為21,SNMP為161,Telnet為23。這是為什么呢?因為這些端口號都是從網絡控制協議(即TCP前身,ARPANET的傳輸層協議)派生出來的,原來網絡控制協議是單工的,不是全雙工的,因此每個應用程序需要兩個連接,一個用於接收,一個用於發送,需要預留一對奇數和偶數端口號,當TCP和UDP稱為了標准的傳輸層協議時,每個應用程序只需要一個端口號,所以就使用了原來的網絡控制協議中的奇數。
總結
很多技術的發展都有其深刻的歷史烙印,想要精通一門技術,了解其歷史是十分重要的。