一、計算機網絡概述
時代不同了,大家現在生活都好了,家家戶戶基本都有電腦,而且我們都習慣了使用電腦辦公,打打游戲,聊聊天等等。那我們一起來想一個場景:如果沒有了網絡,我們是不是就不能使用電腦進行聊天了呀。那網絡到底是如何幫助我們來完成網絡聊天的?下面我就跟大家聊聊計算機網絡到底是怎么回事兒。
了解我的讀者都知道,我習慣先用自己的語言解釋,后說官方定義。這回我和以往反著來,先說官方定義,再解釋:
計算機網絡是由通信介質將地理位置不同的且相互獨立的計算機連接起來,實現數據通信與資源共享。
我們假設有兩個獨立且毫不相關的計算機,一臺在青海,一臺在河南,想要進行數據傳輸(聊天),沒網是不行的。這個網指的就是互聯網( Internet )。這個 Internet 它是一個通信協議。什么是協議?打個比方,就好比我們打電話,在中國,中國有十幾億人,地大物博,全國各地都有自己的方言,還有些地方使用自己的民族語言,這時候想要良好的溝通就必須使用一個統一的標準,就是普通話。大家都講普通話,溝通起來就沒有問題了。那如果是不同國家進行溝通呢?我們可以選擇使用英語進行交流,那英語就是全世界國家通用的一個標準,計算機就好比是分布在全世界各個角落的人,計算機之間通話也要找一個統一的標準,這個標準就是 Internet 標準,又叫做 Internet 協議。
二、網絡介紹及隔壁老王的故事
先給大家講一個虛構版隔壁老王的故事:
有一個人叫隔壁老王,他有一個愛好就是看電影。有一天,這個隔壁老王想看一部電影,可是電腦里面存儲的電影太多了,他費了老大勁才從里面找到,覺得很不爽。于是他想,我能不能把所有電影做個分類,把同一種類型的電影放在同一個文件夾下,然后把所有的文件夾整合在一起,自己寫個瀏覽器軟件,把文件夾信息放到瀏覽器上,到時候找電影的時候就好找了,只要找到相應的文件夾直接點進去就能找到電影了。老王說干就干,沒多久就把所有的文件夾整理好了,然后把所有文件夾放到同一個頁面上,到時候他想點哪個就點哪個,So easy!(那些網站可能就是這樣來的)。
這回出來一個新人物,就叫小王吧(不是小王八),老王就是住在小王隔壁,有一天小王看到老王電腦上有那么多電影,就跟老王商量,能不能在他電腦上也弄個跟老王一樣的,讓他也看看。老王也不是個小氣的人,好東西就是要分享的嘛,想都沒想就答應了,給小王說在你電腦上插根線接到我電腦上,然后下載我這個軟件,直接訪問我的電腦就行了。小王很高興,他馬上回家按老王說的做,沒多久他的電腦上也能看老王電腦上的東西了。有了小王,就還會有小張,小李,互相插根網線,他們都能互相共享電影了。這樣,局域網也就產生了,就比如在一個公司或者一個學校用的網絡,都稱為局域網。那學校有很多呀,不同的學校用的局域網是不同的,不同的城市也有不同的局域網,以局域網為單位,散布在一個區或一個城市的各個局域網加一起叫城域 網,然后全世界所有城市的城域網加一起就叫廣域網。
過了一段時間,老王去小王家,看到小王電腦里的電影比自己的還多,而且還好看,然后老王跟小王說,把你的這些電影給我一份吧,我也想看看。不用想,小王肯定立馬答應了,說你自己弄吧,想看哪個隨便看。姜還是老的辣,老王想到一個好辦法,他跟小王說,我再找一臺電腦,把我倆電腦上的資源全部放到那臺電腦里,我倆只要在那個電腦上插根線連到自己電腦上,就都能訪問那臺電腦上的東西了,這樣豈不是很方便。小王一拍腦門,呀!我咋就沒想到,那還不趕緊的。老王另外找了一臺電腦,然后他倆把自己的電腦和那臺電腦用線連起來,再把自己電腦里的所有資源全傳進那臺電腦中,最后他倆就能共享資源了。(那臺電腦就是服務器)
總結一下就是:
網絡按地域分類:根據參照物不同、類型不同分為
局域網:一個公司、一個家庭、一個學校······
城域網:一個地區、一個城市······
廣域網:一個國家、全世界······
三、互聯網協議是如何分布和設計的
我在上面說了 Internet 協議,互聯網協議按照功能的不同,分為 osi 七層, tcp / ip 五層, tcp / ip 四層協議。如下圖:
osi 的七層協議體系結構的概念清楚,理論也比較完善,但它既復雜又不實用, ISO 制定的 osi 協議參考模型的過于龐大、復雜招致了許多批評。于此對照,由技術人員自己開發的 TCP / IP 協議獲得了更為廣泛的應用。因此,我們只需要弄明白 TCP / IP 五層協議 就能了解和明白計算機最底層的通信是怎么回事。
四、TCP/IP五層協議
如圖,從最下方的物理層到最上方的應用層,對于我們用戶而言,最直接的是應用層。從上到下每一層都依賴于下一層,所以我從最下一層開始給大家講解:
注意:每一層都運行著一個特定的協議,共同組合成互聯網協議
一、物理層
物理層主要是由雙絞線、光纜、電纜、無線電波組成,其作用很簡單,就是連接不同的計算機,并傳遞底層電信號,高電壓: 1 ,低電壓: 0 。
二、數據鏈路層
我們從物理層上接收或者發送單純的 0 、 1 是沒有意義的,為什么呢?想想哈,我想給女朋友發送一句話:“你好漂亮”,那我們要把“你好漂亮”轉換成 01 之后,交給網卡,網卡就懵逼了,發給誰 ??? 不知道。那怎么辦?必須要確定數據發給誰。就像我們的快遞一樣,是不是在外層包裝上有商家地址和個人地址,這樣我們不管是發還是收,都能準確定位了。網絡傳送數據也一樣,我們就在數據前面加上目標地址,為了能接收到回信,也要把自己的地址也加上。但是,如果數據和地址放在一起,又亂了,比如,我給你一堆 01 ,1010101000101010101 ,你也分不清哪里是數據,哪里是地址。這時我們就要對要發送的 01 進行分組,規定前面 xxx 位是地址,后面 xxx 位是數據,并且,大家想互相都能通信,就必須都遵守這樣的規則(協議),這個協議叫以太網協議。在以太網協議出現之前,各個公司都有自己的分組規則,后來都統一使用以太網協議了。
以太網協議規定:一組電信號構成一個數據包,叫幀,每一幀分為報頭( head )和數據( data ) 兩部分。
報頭(head):固定 18 個字節
發送者/源地址: 6 個字節
接收者/目標地址: 6 個字節
數據類型: 6 個字節 數據( data ):最短 46 個字節,最長 1500 字節 數據包的具體內容(發送給女朋友的話/快遞貨物)
以太網協議中的地址叫 MAC 地址, MAC 地址是每臺計算機唯一的物理地址,是被寫在網卡上的。以太網協議規定,每一臺接收和發送數據的設備必須要裝有網卡,負責發送和接收數據的設備,發送端和接收端的地址,指的就是網卡的地址,即 MAC 地址。
MAC地址
MAC 地址是每個網卡在出廠的時候,由各個廠商直接燒錄在網卡上的,而且,這個地址必須是全世界唯一的。 MAC 地址是由 12 位 16 進制的數字表示(前六位是廠商編號,后六位是流水線號),這樣不同的廠商之間就不會產生沖突了,自己生產自己的就好了。
在這給大家介紹一個東西,我們說兩個電腦要通信要先連根線,但是如果電腦多了之后,電腦間通信連的線也就多了,這樣太亂了,我介紹的這個東西就是交換機,它是負責組件局域網,研究的是 MAC 地址,它有什么用你看下面圖片中的接口就知道了
有了 MAC 地址,以太網就可以進行工作了。理論上講,我們可以和世界上的每一臺連接了互聯網的計算機進行通信了,此時通信的方案是:廣播
廣播
廣播又是怎么一回事?其實廣播的方式很原始,基本通信就是靠吼。就像你想跟女朋友求婚一樣,你會大喊:“ xxx ,嫁給我吧”,旁邊能聽到這句話的人有很多,但是只有你女朋友會回復你。其他人會把你當傻逼一樣看待。沒錯,廣播就是這樣進行通信的。首先組織好了一個數據包之后,把這個數據包通過電信號發出去,這時整個網絡上所有的人都會收到你發的這條數據,然后看看這個數據是不是自己的。如果不是就當他不存在,如果是,就接收。雖然效率低點,但畢竟能通信了。
廣播帶來什么問題呢?如果是在一個小的網絡環境里。比方說,你們宿舍幾個人,一起玩 CS ,沒問題,你喊一嗓子,你室友也能回應你,也就效率低點。但是如果你連接到全世界的互聯網上,還使用廣播的方式來通信,就不是效率問題了,而是一個巨大的通信災難。全世界 60 多億人,每個人吼一嗓子,每個人發送一條信息,那每個人都會收到 60 多億條信息,網絡瞬間癱瘓,這種問題被稱為廣播風暴,那如何解決呢?
三、網絡層
首先,我們要了解一個事情,世界大網絡(廣域網)是由一個一個的互相隔離的小型局域網(子網)組成的,不同的局域網之間使用路由來連接。
路由器
上面說的交換機是負責組建局域網,研究的是 MAC 地址,而路由器是負責組件廣域網,研究的是 IP 地址,這個 IP 地址下面我再解釋。
剛才說的廣播,只能在一個局域網內進行通信,不可以在大網絡上進行廣播,有了路由器,就避免了廣播風暴的問題。每個局域網被稱為一個廣播域,局域網和局域網之間使用路由的方式進行通信(向不同的廣播域/子網發送數據包),用路由器把一個局域 網里的所有計算機劃分成一個個子網。
現在大家先想一想生活中,如果是之前說的廣播,就相當于在一間教室里你正在上課,你要給某個女孩傳紙條,那你要在紙條外面寫上你和你要傳的女孩的名字,再在里面寫上你要寫的話,寫好后折起來,你和女孩的名字在外,內容在內,然后讓同學一個一個幫你傳,每個同學在傳的時候都會看外面寫的名字,如果不是他,就繼續傳,直到傳到的人是你寫的那個女孩為止。那這間教室就相當于一個局域網。好,現在我們要實現局域網和局域網之間的通信,比如此時位于青海的你要給河南的朋友送東西,你不可能用廣播的方式了,你只能快遞,這個青海和河南以及還有很多不同的省份是我國的土地劃分中的一部分,每一個省也可以看作是一個個局域網,那在網絡中,我國就相當于廣域網,那不同的局域網是如何劃分的呢? MAC 地址是沒辦法區分的,因為 MAC 地址上只有廠商的流水號,這就引出我要說的網絡層,網絡層引出了一套新的地址來區分不同的局域網/子網,這一套地址就是網絡地址。
規定網絡地址的協議叫 IP 協議,它定義的地址叫 IP 地址。其實跟我國的省份名差不多,繼續說送快遞,你要把送的東西包裝好,在外面寫上你自己的地址和省份地址,還有朋友的地址和省份地址,交給青海的快遞公司,然后青海的快遞公司轉交給河南的快遞公司,最后由河南的快遞公司分配給你朋友,你朋友就收到快遞了。在這有兩點需要注意:
你要同時寫兩個地址,自己的地址( MAC 地址)和省份地址( IP 地址),這樣就能確定所要 接收和發送人的具體的位置了。
青海的快遞公司和河南的快遞公司就相當于路由器
子網掩碼
在這給大家普及一下子網掩碼,我們上面說有了 IP 地址和 MAC 地址,我們就能讓任何計算機之間進行通信了,那現在再想想,如果我要用我的計算機給另外一臺計算機實現通信,我是不是要判斷要通信的計算機是否和我的計算機在同一個 IP 地址中,相當于上面例子中我和我要送東西的朋友是否在一個省,這個時候就需要用子網掩碼,我拿著我的 IP 地址和對方的子網掩碼通過計算,判斷是否在同一個 IP 地址下,如果在同一個IP 地址下,我可以用廣播的形式進行通信,如果不在同一個 IP 地址下,我可以先把數據傳給我方的路由器,再由我方的路由器把數據傳給對方的路由器,最后由對方的路由器把數據傳給要接收數據的計算機。這樣說,再聯系上面已經說過的,我想不難理解了。
IP地址
目前我們普遍使用的是 IPV4 ,它規定,一個網絡地址由 32 位二進制組成,把 32 位平均分成四份,每一份 8 位, 8 位最大能表示的數據是 255 ,所以IP地址的范圍:0.0.0.0255.255.255.255.
一個IP地址分為兩部分,分別是網絡位和主機位
網絡位用來標識不同的子網主機位用來標識子網下主機的編號
為什么要分兩部分呢?很簡單,就好比你想寫信給你的女朋友,假設你女朋友的地址是西寧市平安路128號,那么網絡位就會直接找到西寧市,主機位幫你找到你的女朋友。
網絡位和主機位是如何劃分的?使用子網掩碼來劃分。子網掩碼和IP地址差不多,都是由32位二進制數來表示,子網掩碼也分為網絡部分和主機部分,網絡部分由1組成,主機部分由0組成。
那說了這么多,IP協議是如何發送數據的?協議規定,IP協議使用IP數據包進行發送 數據。IP數據包同樣把數據分為了兩部分,head和data,并且在發送數據的時候,直 接用IP數據包直接裝載以太網的data部分。
head:長度為 20 到 600 字節
data:最長為 65515 字節
而以太網數據包的“數據”部分,最長只有 1500 字節,因此,如果IP數據包超過了 1500 字節,它就需要分割成幾個以太網數據包,分開發送了。
再回顧一下啊,以太網的頭是包含了自己的 MAC 地址和目標 MAC 地址的,那如何查 找目標 MAC 地址呢?前輩們弄了一個叫 ARP 協議的東西專門來解析目標 MAC 地址。 它是如何工作的?首先,它是數據鏈路層的東西,在我們發送一個數據包的時候是包含著對方的 IP 地址的。例如我(172.13.4.58)想發送一條數據給女朋友(172.13.4.90),首 先,我得先拿到女朋友的MAC地址才可以通信。此時,我們會先計算一下我和女朋友 是否在一個子網內(子網掩碼)
在一個子網內,直接廣播發送一個數據包
子網內的計算機發現了這個包之后會返回一個數據包并且帶有 MAC 地址,這樣就通過 IP 地址找到了目標主機的 MAC 地址,接下來就可以進行數據傳輸了。
不在一個子網內,單純的用廣播就不行了,因為廣播只是針對自己內網而言。那怎么辦,此時會把數據包發給網關,由網關發給其它路由,這樣在整個萬維網里就可以找到你想要的那個計算機的 MAC 地址了。
總結
ARP 就是通過 IP 地址來查找 MAC 地址的一套固定協議,它是數據鏈路層的內容。
網絡層的意義:定義了子網, 區分各個局域網
IP 地址:網絡地址
子網掩碼:計算是否是同一個子網
四、傳輸層
到目前為止,前三層內容已經可以進行數據傳輸了。但是,我們的一臺計算機上可以 一次性運行多個網絡應用程序,比如, QQ 、微信 、 LOL 三個軟件一起運行,都要進行網絡傳輸,但是就前面學習的這三層內容,是沒辦法區分開數據是要發送給哪一個 軟件的。那怎么辦?引入第四層,傳輸層,傳輸層定義了端口的概念,每一個網絡應 用程序占用一個網絡端口,不同的程序就用端口把數據隔離,兩兩互相不影響。
端口:應用程序和網卡的關聯編號
傳輸層:建立端口到端口的通信。
傳輸層有兩種協議: TCP 和 UDP
TCP協議
TCP 協議:可靠傳輸, TCP 數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的 效率,通常 TCP 數據包的長度不會超過 IP 數據包的長度,以確保單個 TCP 數據包不必再分割。
TCP 頭放的主要是源端口和目標端口
UDP協議
UDP 協議:不可靠傳輸,“報頭”部分一共只有 8 個字節,總長度不超過 65535 字節,正好放 進一個 IP 數據包。
其實和郵信是一樣的,寫好地址,寫好接收人,直接裝進信封里,丟進郵箱里就不用你管了,對方什么時候收,收沒收到,你不知道。
五、應用層
用戶使用的都是應用程序,均工作于應用層,大家都可以開發自己的應用程序,數據多種多樣,必須規定好數據的組織形式。對于用于而言最直觀的就是應用層。
應用層:規定應用程序的數據格式
例: TCP 協議可以為各種各樣的程序傳遞數據,比如 Email 、 WWW 、 FTP 等,那么, 必須有不同協議規定電子郵件、網頁、 FTP 數據的格式,這些應用程序協議就構成了“應用層”。
總結
以上是對TCP/IP5層協議的解讀,總結一下:
發送數據其實就是一個封裝數據的過程
最后從物理層發出,對方接收到了之后再自下而上一層一層打開拿到數據,以上內容就是一個網絡傳輸的大致過程,其中還有好多細節沒有闡述,但大家知道和了解以上內容,對開發而言足夠了。
評論
查看更多