一、網(wǎng)絡(luò)發(fā)展背景
網(wǎng)絡(luò)發(fā)展背景:
??最初的計算機是單機,那么單機是這樣傳輸數(shù)據(jù)的:A單機和B單機,在A單機處理完數(shù)據(jù)后,將裝有數(shù)據(jù)的存儲介質(zhì)交付給B單機,然后B單機讀取數(shù)據(jù)并處理。毫無疑問,這樣太麻煩了。
??因此逐步誕生了網(wǎng)絡(luò)的概念,使用網(wǎng)絡(luò)來進行數(shù)據(jù)的傳輸,大大提升了數(shù)據(jù)傳輸?shù)男省?/p>
網(wǎng)絡(luò)的類型:
- 局域網(wǎng):網(wǎng)絡(luò)覆蓋范圍在1km之內(nèi)的網(wǎng)絡(luò)。
- 城域網(wǎng):網(wǎng)絡(luò)覆蓋范圍在20km之內(nèi)的網(wǎng)絡(luò)。
- 廣域網(wǎng):網(wǎng)絡(luò)覆蓋范圍在20km以上的網(wǎng)絡(luò)。
??但其實局域網(wǎng)與廣域網(wǎng)也只是一個相對的概念,比如整個中國的互聯(lián)網(wǎng)對于整個世界的互聯(lián)網(wǎng)來說,也是一個局域網(wǎng)。
二、理解網(wǎng)絡(luò)通信
??網(wǎng)絡(luò)通信就是升級版的進程間通信。用QQ聊天來舉例,A用戶用QQ給B用戶發(fā)送消息,他們進行的就是網(wǎng)絡(luò)通信。A用戶的主機上有一個QQ進程,B用戶的主機上也有一個QQ進程,他們互相發(fā)送消息的本質(zhì)就是A用戶的QQ進程和B用戶的QQ進程進行通信。因此網(wǎng)絡(luò)通信就是不同主機間的進程間通信。
三、理解IP地址
1.簡述IP地址
??在生活中其實很多時候都可以聽到IP地址這個概念,IP地址其實就用來在網(wǎng)絡(luò)中唯一標識一個主機的,就像是我們的身份證一樣。
??在寄快遞的時候,我們肯定要知道收貨人的地址,不然快遞怎么寄。在網(wǎng)絡(luò)通信中傳輸數(shù)據(jù)時,肯定要知道接收方的地址才可以進行數(shù)據(jù)的發(fā)送,不然數(shù)據(jù)往哪里發(fā)呢。
??寄快遞時包裹上面不但要有收件人的地址,還要有寄件人的地址。在網(wǎng)絡(luò)通信中,我們把發(fā)送方稱為源端,接收方稱為目的端。每一條數(shù)據(jù)就相當于一個包裹,數(shù)據(jù)中自然要包含目的端IP和源端IP。
??也就是說,IP地址是負責記錄這條數(shù)據(jù)的發(fā)送主機和接收主機的,至于誰來記錄這條數(shù)據(jù)是發(fā)送主機的哪個進程發(fā)送的,是接收主機哪個進程接收的,且看下文。
2.IP地址的版本
?IP地址也是有版本之分的,共兩個版本:
- IPv4:這是早期的IP地址版本,也是使用最多的。
- IPv6:這是為了擴大地址數(shù)量而提出的新版本,目前還沒有全面普及。(不兼容IPv4)
?IPv4地址的數(shù)據(jù)類型:
- uint32_t:32位無符號整型,也就是說IPv4地址只有32位
?IPv6地址的數(shù)據(jù)類型:
- uint8_t ip[16]:這是一個數(shù)組類型,數(shù)組共16個元素,每個元素的數(shù)據(jù)類型是8位無符號整型,也就是說IPv6地址的長度是128位。
3.提高地址利用率的技術(shù)
??之所以推出IPv6地址就是因為IPv4地址不夠用了,但是IPv6并不向前兼容IPv4,所以又針對IPv4提出了兩項技術(shù)來提高地址的利用率。
- DHCP:動態(tài)地址分配。誰上網(wǎng)就給誰分配IP地址,這樣就不會有人一直占用IP地址但不使用,但現(xiàn)在我們的設(shè)備基本一直都處于聯(lián)網(wǎng)狀態(tài),所以貌似用處沒那么大。
- NAT:網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)。組建私網(wǎng)的技術(shù),私網(wǎng)中主機對外通信使用的是同一個公網(wǎng)IP地址,這樣就節(jié)省了大量IP地址。
四、理解端口
1.簡述端口
??上面用QQ聊天舉例說明了網(wǎng)絡(luò)通信的本質(zhì),這里再對上面內(nèi)容進行更新。還是以送貨為例子,上面已經(jīng)知道了要把信息從哪里發(fā)到哪里,假設(shè)是發(fā)到愛情公寓,現(xiàn)在包裹到愛情公寓樓下了,快遞員小哥看著沒有收件人的包裹,陷入了沉思~~~~(當然,沒有發(fā)貨人也是不行的)。想必看到這里也就知道了,咱這條信息還差點東西啊,沒收件人怎么行。
??既然快遞沒有收件人不行,那么網(wǎng)絡(luò)中的數(shù)據(jù)沒有收件人自然也不行,收件人自然就是目的主機上接收該消息的進程,那么用什么信息在網(wǎng)絡(luò)數(shù)據(jù)包中標識要發(fā)送給哪個進程呢?那就是端口。
??端口,也就是PORT。端口是一個uint16_t 類型的數(shù)據(jù),也就是一個無符號16位整形數(shù)據(jù)。其實端口在生活中也是挺常見的,因為有時用某個軟件的時候,可能會遇到提示:某某端口被占用。那么端口究竟是干啥的?
??端口其實就是用來在一臺主機中標識一個進程。一個進程可以同時被多個端口標識,但一個端口只能標識一個進程。
??我們用QQ給其他用戶發(fā)送數(shù)據(jù)的時候,發(fā)送的數(shù)據(jù)不僅包含源端IP和目的端IP,也包括了我們自己的QQ進程的端口,以及目的端的QQ進程的端口,也就是說網(wǎng)絡(luò)通信中的每條數(shù)據(jù)都包括了源端口和目的端口(發(fā)件人和收件人)。
??可以這么理解,IP地址就像是收貨人的地址,而端口則表明了一個具體的收貨人。通過IP地址知道了要把數(shù)據(jù)發(fā)送給哪個主機,也就是知道了要把快遞送到哪個地址。通過端口知道了要把數(shù)據(jù)發(fā)送給主機中具體哪個進程,也就是把快遞交給收貨人。
2.使用端口的原因
??問題來了,進程不是有pid嗎,pid就可以標識一個進程啊,為啥還要用端口來標識?
??還是用QQ聊天來舉例,我們發(fā)送消息的時候并不是兩個用戶直接進行數(shù)據(jù)傳輸?shù)?。A用戶和B用戶在發(fā)送消息時,其實在它們之間還有一個服務(wù)器,A用戶的消息首先發(fā)送給服務(wù)器,然后服務(wù)器把數(shù)據(jù)發(fā)送給B用戶,這才是完整的通信過程。如下圖所示
那么這個通信流程跟端口有什么關(guān)系?
?(1)試想,如果我們使用進程pid來在網(wǎng)絡(luò)通信中標識進程。A用戶和B用戶通信的過程中,A用戶發(fā)送給服務(wù)器的數(shù)據(jù)是不是就包括了A用戶QQ進程的pid以及B用戶QQ進程的pid(當然還包括了源端IP和目的端IP)。
?(2)然后服務(wù)器根據(jù)指定的B用戶的QQ進程的pid去發(fā)送數(shù)據(jù)。此時如果B用戶突然退出QQ,然后重新打開QQ軟件并登錄,那么是不是就會重新創(chuàng)建pcb,自然就有了新的pid,可是這個新的pid和A用戶發(fā)送的消息中包含的pid是一樣的嗎?這個誰也說不準,所以為了避免這種情況,才會使用端口這個東西。
那么A用戶發(fā)送的消息如何找到服務(wù)器呢?
?(1)服務(wù)器的端口和IP地址一般都是固定的,并且它固定在我們安裝的程序中,所以用戶不需要操心這個,程序的安裝包里就內(nèi)置有服務(wù)器的IP及端口號。咱們用的應(yīng)用程序發(fā)送數(shù)據(jù)時,自動就使用了內(nèi)置的IP和端口作為目的IP和目的端口。
?(2)但是如果服務(wù)器遷移了,服務(wù)器的IP地址就會變化,我們正在使用的客戶端就用不成了,就需要下載新的客戶端,新的客戶端中會內(nèi)置新的服務(wù)器各項信息。
為什么一個進程可以有多個端口?
??主要還是為了效率??匆曨l的時候,一個端口接收視頻,一個端口接收音頻,這樣看視頻就可以保證音畫同步。
五、理解網(wǎng)絡(luò)通信協(xié)議
網(wǎng)絡(luò)通信協(xié)議就是約定,約定在網(wǎng)絡(luò)通信中數(shù)據(jù)傳輸時使用的格式。
為什么要有協(xié)議?
(1)這個如果用日常生活中的事情來舉例可以理解得非常清楚。一個中國人,一個英國人,如果他們都不懂對方的語言,一個說中文,一個說英文,這咋溝通。
(2)兩個人之間說的話其實就是數(shù)據(jù),說話的過程其實就是數(shù)據(jù)傳輸?shù)倪^程,中國人說中文使用的是中文的數(shù)據(jù)格式,英國人說英文使用的是英文的數(shù)據(jù)格式,他們之間采用的數(shù)據(jù)格式不同,中國人就接收到英語后,如果按照中文思維進行解析,這解析的是個寂寞~~~~,英國人也是一樣道理,因此數(shù)據(jù)的發(fā)送端和目的端一定要采用統(tǒng)一的格式才可以。文章來源:http://www.zghlxwxcb.cn/news/detail-639667.html
(3)因此我們可以規(guī)定一種語言,讓所有的人都必須用同一種語言進行交流,這樣就沒有溝通障礙了(也就是大家采用同樣的數(shù)據(jù)格式)。讓源端和目的端使用同樣的格式進行數(shù)據(jù)的發(fā)送和接收,這樣就可以正常通信。這其實就是協(xié)議。文章來源地址http://www.zghlxwxcb.cn/news/detail-639667.html
到了這里,關(guān)于計算機網(wǎng)絡(luò):網(wǎng)絡(luò)通信相關(guān)概念入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!