關於網路的基礎知識
因為第一份工作是web backend developer,所以需要補足一些關於網路的基礎知識,這一篇就是當初的筆記。
這些資料都是在網路上找來的,可惜時間久遠,是哪些網站的資料就沒有記下…
1. 何謂ping?
ping是一種電腦網路工具,用來測試封包能否通過IP協定到達特定主機,可以拿來檢查某個網址是否可供連線,如果可供連線就會回傳一些資料。
#於命令列中,對www.google.com發出ping
PS C:\Users\hehehe> ping www.google.com
Ping www.google.com [64.233.189.147] (使用 32 位元
回覆自 64.233.189.147: 位元組=32 時間=88ms TTL=43
回覆自 64.233.189.147: 位元組=32 時間=279ms TTL=43
回覆自 64.233.189.147: 位元組=32 時間=804ms TTL=43
回覆自 64.233.189.147: 位元組=32 時間=36ms TTL=43
64.233.189.147 的 Ping 統計資料:
封包: 已傳送 = 4,已收到 = 4, 已遺失 = 0 (0% 遺失)
大約的來回時間 (毫秒):
最小值 = 36ms,最大值 = 804ms,平均 = 301ms
TTL=43是什麼?
存活時間(英語:Time To Live,簡寫TTL)
2. hosts文件是什麼?是做什麼用的?
- Windows系統中位於C:\Windows\System32\drivers\etc\hosts,Mac位於/private/etc/hosts,Linux位於/etc/hosts
- 每個網站的網域名稱都會對應一個或多個 IP 位址,當使用者要連上一個網站之前,要先知道網站的網域名(如 blog.gtwang.org),接著連線至 DNS 伺服器,查詢該網址所對應的 IP 位址,獲得網站的實際 IP 位址之後,才能連上該網站瀏覽上面的內容。
- 而 hosts 設定檔的作用跟 DNS 伺服器相同,且hosts的優先權大於DNS!
- 這個檔案裡面紀錄了一些網址與 IP 位址的對應表,一般的電腦在需要查詢網址與 IP 位址的時候,會先開啟這個檔案來查詢,如果這個檔案裡面剛好有電腦需要查詢的對應記錄,就可以直接連上網站來瀏覽;如果從 hosts 設定檔裡面查不到,才會連線至 DNS 伺服器來查詢。
- 由於這個設定檔是屬於系統的檔案,一般的使用者沒有權限修改,所以得另存檔案接著拖曳回etc資料夾中覆蓋原有的hosts文件。
- 大部分的使用者可能不會需要使用到 hosts 設定檔,反而是有些惡意程式(病毒)會竄改 hosts 設定檔,讓使用者連線至某些特定的網頁主機(俗稱綁架網頁)。
舉例來說,如果您發現您電腦中的 hosts 記錄檔裡面有類似這樣的記錄:
12.34.67.78 tw.yahoo.com 當網址列輸入 tw.yahoo.com 時,卻是導向IP為12.34.67.78這個網站。
45.32.83.18 www.google.com.tw
192.94.57.8 www.pchome.com.tw
那就表示您的電腦可能已經中毒了,因為通常網路上公開的網站都是透過 DNS 伺服器來查詢網址與 IP 的對應關係,不會使用 hosts 設定檔,會寫在 hosts 檔中的大部分都是內部網路的主機,也就是說這裡通常只會有私人的主機,如果出現公開的網站的話,就有點不太正常。 - 除了惡意程式的問題之外,網站的管理者也時常有機會使用 hosts 設定檔來測試自己網站,以我個人的經驗來說,當架設新網站或是轉移網站的過程都會需要藉由修改 hosts 設定檔,在網站正式公開之前,對網站做一些測試,避免公開網站後才發現問題,影響訪客的瀏覽。
實際操作:
cmd中輸入 ping tw.yahoo.com 會得知從網路上DNS所查詢到的Yahoo奇摩主機IP位址是xxx.xxx.xxx.xxx,接著…我們將「127.0.0.1 tw.yahoo.com」加入到「hosts」檔案內,並且儲存檔案,當我們這樣設定時,電腦若要連線到「tw.yahoo.com」時,就會被導向「127.0.0.1」,也就是自己本身的電腦上,其意義就是讓它連不出去外面的網站,會出現「無法顯示此網頁」的訊息!
這時候再次輸入 ping tw.yahoo.com 時候,只會顯示127.0.0.1的位置
我們可以了解到,如果我們想要自己定義主機名稱及IP的配對時,就可以去修改hosts的內容,這樣的優點就是可以加快連上網站的時間,因為它在連線時,不再需要向網際網路上的DNS主機要正確的IP位址,而是直接從hosts檔案中直接查詢,所以少了這次的查詢時,一開始連上的速度就會變快,這是一般我們常見的用途。
另一個用途比較特別,但也很常用,就是要讓電腦不要去造訪某些網站,為什麼要這麼做呢?這個就要靠你自己想了?
就將它當作電話簿來解釋,林志玲的電話是0923756843,我們在電話簿中輸入好記的名字–林志玲(網域名稱),去手機裡面(DNS Server)找出相對應的電話號碼(IP位置)。
3. 127.0.0.1 是什麼? 本機IP是什麼?
- localhost 為 網域名稱(意為「本地主機」,指「這台電腦」),相對應的IP位址為127.0.0.1。
- 在操作系統支持ipv6後,它同時還指向ipv6的地址[::1],所以打開 /etc/hosts 文件的話,會有 127.0.0.1 localhost 及 ::1。
- 一般用來測試使用。大家常用來ping 127.0.0.1來看本地TCP/IP正不正常,如能ping通代表有連線能力。
- 對人來說localhost = 127.0.0.1 ,這是因為hosts文件定義了localhost=127.0.0.1 。所以你只需要記住localhost就可以代表本機了。它其實是個和http:// baidu.com一樣的域名。
- 對機器來說,它需要通過hosts文件來定義localhost = 127.0.0.1(打開你的host文件就可以看到這個定義!) ,才能知道localhost代表的是本機。機器只知道127.0.0.1代表本機。因此在你朝localhost發消息的時候,機器會自動翻譯成朝127.0.0.1發消息,用來測試本機的TCP/IP協議棧,發往這段A類地址數據包不會出網卡,網絡設備不會對其做路由。並且這個消息不會出網卡(不需要經過上級路由器),而是在機器本身就可以處理了。
- 那什麼是本機IP?你可以理解為本機有三塊網卡,一塊網卡叫做loopback(這是一塊虛擬網卡),另外一塊網卡叫做ethernet/乙太網路 (這是你的有線網卡),另外一塊網卡叫做wlan(這是你的無線網卡)。你的本機IP 是你真實網卡的IP,具體來說有線無線各有一個,而127.0.0.1 是那塊叫做loopback 的虛擬網卡的IP,loopback 用於本機中各個應用之間的網絡交互。只要操作系統的網絡組件是正常的,loopback就能工作。
- localhost = 127.0.0.1 是可以修改的,但如果隨便改這些配置,可能導致很多只認127.0.0.1的軟件掛掉!
網路上有文章說 127.0.0.1是网卡传输,完全是錯誤的!(忘記這句話出處是哪了?可能是知乎上面的文章吧)
4. VPN連線是什麼?
VPN 連線 是什麼?
VPN:虛擬私人網路(英語:Virtual Private Network,簡稱VPN),是一種常用於連線中、大型企業或團體與團體間的私人網路的通訊方法。簡單的說,就是偽裝成其他國家的IP,瀏覽其他網站
VPN 要用在那裡?
- 例如,大陸有封Facebook,但是,我人在大陸,想上Facebook,就可以掛美國的VPN,偽裝成美國的IP,上Facebook。
- 例如:你透過 VPN 連線來將你家裡的電腦認證為學校的電腦,你的電腦 IP 會被設定為學校網域中的 IP,因此你可以使用學校網址內的各種服務,像是學校圖書館鎖 IP 的各種服務,你在家也可以使用了。
5. 內部IP與外部IP
IP,就是「網際網路協定Internet Portocol」。這不是給人記憶用的,而是給電腦去找尋伺服器主機位置用的。
在一般使用者常接觸到的網路設定中,IP位址很簡單來分的話,可以分對外的實體IP位址,跟內部的虛擬IP 。
外部IP為實體IP:
- 由ISP業者提供給用戶端。這個實體IP就是網路世界中的門牌號碼。如果外面的電腦要連線到你的電腦,則必須知道你的IP,就像郵差需要知道你家門牌號碼是幾號才能送信給你一樣。
- 實體IP還可分「浮動IP」或「固定IP」,「浮動IP」就像是住在船屋居無定所,每次上網時,電腦都會取得不同的IP位址。「固定IP」的話,就是住透天厝,除非另外申請,否則你是什麼IP不管上線幾次都不會變。如果你的電腦要拿來架設網站,那申請固定IP會比較合適。如果架站使用浮動IP,必須要設定DDNS(動態DNS)。
- 申請「非固定制ADSL」,則會配發給你「浮動IP」,如果你申請「固定制ADSL」,則會配一個(或三個以上)專屬的固定IP位址給你。
內部的區域網路IP為虛擬IP:
- 如果你使用IP分享器,或HUB把幾台電腦接在一起時,相互間使用 192.168.. 這樣的IP來連線,這個 192.168.. 就是保留給內部區網使用的虛擬IP,這虛擬IP只能在你這一層內部區網(區域網路)中互相連線。 如果你要外部的電腦(別人家、不同戶)連到你的電腦來,則必須使用對外的實體IP位址,才能連線。
- DHCP為自動分配IP的功能
網際網路服務供應商(英語:Internet Service Provider,簡稱ISP)。
網際網路協定版本4(英語:Internet Protocolversion 4,IPv4),又稱網際網路通訊協定第四版,是網際網路協定開發過程中的第四個修訂版本,也是此協定第一個被廣泛部署的版本。IPv4為標準化網際網路的核心部分,也是使用最廣泛的網際網路協定版本,其後繼版本為IPv6。直到2011年,IANA(網際網路號碼分配局(英語:Internet Assigned Numbers Authority,縮寫IANA)) IPv4 pool位址完全用盡時,IPv6仍處在部署的初期。
IPv4 有 32 位元,就像 168.95.1.1,都是由數字組成。
IPv6 有 128 位元,就像 2001:0DB8:02de:0000:0000:0000:0000:0e13。這時候就很難懂了!…所以才要利用提到的 DNS 來幫我們解析。
IPv4已經全部發放完畢,所以正式跨入 IPv6 的世代。
6. 網域名稱 Domain Name:
- 網際網路上某一台電腦或電腦組的名稱。
- 每台電腦都有「固定且單一」的地址,即是IP位址,IP位址由4組0~255的數字所組成。由於所有網路上的電腦主機都只能以IP位址來判別隨著網路的主機數量暴增 ,要使用者記住這些IP位址,顯然十分困難,因此發展出「網域名稱」轉換機制。
- 將原本無意義的數字字串(IP位址),改採有意義的英文來代表,然後透過名稱伺服器(Domain Name Server:DNS)翻譯,即可以指到正確的主機位址。例:在瀏覽器列輸入:www.net-chinese.com.tw,透過DNS翻譯,即可指到 211.75.84.5的主機。www.net-chinese.com.tw 這個網域名稱中 net-chinese =>特定名稱。com =>屬性。tw =>國別或區域別。
- www.wikipedia.org是一個域名,和IP位址208.80.152.2相對應。DNS就像是一個自動的電話號碼簿,我們可以直接撥打wikipedia的名字來代替電話號碼(IP位址)。我們直接呼叫網站的名字以後,DNS就會將便於人類使用的名字(如www.wikipedia.org)轉化成便於機器識別的IP位址(如208.80.152.2)。
- 網址跟網域名稱有些許不同:http://star.gg/what-is-domain-or-url,這是本頁的網址喔!它分成兩個部份,紅色的部份是阿宅星的網域名稱(Domain),任何人只要在網址列打上“star.gg”,就可以直接連結到阿宅星網站。綠色的部份是您現在正在觀看的網頁在 star.gg 的地址(Address),它必須配合網域名稱才能讓網友直接連結,而不用打難以記住的IP位址。
- 所以,網域名稱一定是網址,但網址不一定是網域名稱。
- 維基百科:域名
- 網域名稱系統(英文:Domain Name System,縮寫:DNS)是網際網路的一項服務。它作為將域名和IP位址相互對映的一個分散式資料庫,能夠使人更方便地存取網際網路。DNS使用TCP和UDP埠 53 號。
- DNS 伺服器/DNS Server:「DNS Server」就是一台負責進行Domain Name System運作的主機,負責進行這項運作的主機非常多,國內最知名具代表性的主機莫過於中華電信的「168.95.192.1」與「168.95.1.1」這二個IP上的主機。Google 也有兩組DNS: 8.8.8.8 與 8.8.4.4。
動態DNS(Dynamic DNS)
- DDNS 是一種服務,可將浮動IP 位址轉換對應至一個特定的 “主機名稱”。 請至有提供免費 DDNS 服務的網站,然後申請一個主機名稱。
- 動態DNS系統為動態網域提供一個固定的名稱伺服器(Name server),透過即時更新,使外界用戶能夠連上動態用戶的網址。它能把網際網路域名(Domain Name)指往一個可能經常改變的IP位址,讓經常改變位置及組態的裝置,能夠持續性的更新IP位址。令網際網路上的外界用戶可以透過一個大家知道的域名,連接到一個可能經常動態改變IP位址的機器。
- 其中一個常用的用途是在使用動態IP位址連線(例如在每次接通連線就會被分配一個新的IP位址的撥號連線,或是偶爾會被ISP變更IP位址的DSL連線等)的電腦上運行伺服器軟體。各種機構都有大規模地提供動態DNS的服務。他們會利用資料庫儲存使用者當前的IP位址,並會對使用者提供更新當前IP位址的方法。當一些”客戶”程式被安裝了之後,會在後台執行並每隔數分鐘檢查電腦的IP位址。當發現其IP位址有所變更,程式便會送出一個更新IP位址的請求至動態DNS的伺服器。有很多路由器和其他網路裝置也在其韌體中包含了上述的功能。
每個網站的網域名稱都會對應一個或多個 IP 位址,當使用者要連上一個網站之前,要先知道網站的網域名(如 blog.gtwang.org),接著連線至 DNS 伺服器,查詢該網址所對應的 IP 位址,獲得網站的實際 IP 位址之後,才能連上該網站瀏覽上面的內容。