盤點那些進(jìn)行網(wǎng)絡(luò)編程”必須要知道的基礎(chǔ)知識!

      網(wǎng)友投稿 897 2022-05-28

      目錄

      局域網(wǎng)和因特網(wǎng)

      網(wǎng)絡(luò)協(xié)議

      IP協(xié)議

      TCP與UDP協(xié)議

      端口和套接字

      Hello!大家好,我是灰小猿!

      在Java編程開發(fā)中,網(wǎng)絡(luò)通信的開發(fā)是很重要的一部分,它是兩臺或多臺計算機進(jìn)行網(wǎng)絡(luò)的基礎(chǔ),網(wǎng)絡(luò)程序編寫的目的也就是為了與其他計算機之間進(jìn)行網(wǎng)絡(luò)通信,所以今天大灰狼就來和大家分享一下Java網(wǎng)絡(luò)通信中要的知道的一些知識。

      其實在Java的發(fā)展過程中,為了更加方便的進(jìn)行網(wǎng)絡(luò)通信,開發(fā)者逐漸的將網(wǎng)絡(luò)編程中所需要的一些內(nèi)容封裝成了不同的類,用戶在進(jìn)行網(wǎng)絡(luò)編程時,只需要創(chuàng)建相應(yīng)類的對象,并且調(diào)用相應(yīng)的方法即可。

      首先我們來了解一下網(wǎng)絡(luò)的通信結(jié)構(gòu)。

      局域網(wǎng)和因特網(wǎng)

      在網(wǎng)絡(luò)通信中,兩臺計算機的信息傳輸可以使用如下的網(wǎng)絡(luò)線路來表示:

      其中服務(wù)器是指提供信息的計算機或程序,

      客戶端是指請求信息的計算機或程序,

      兩者之間通過網(wǎng)絡(luò)進(jìn)行連接并且實現(xiàn)相互的通信,

      那么我們所了解的局域網(wǎng)和因特網(wǎng)又有哪些區(qū)別的呢?

      局域網(wǎng)(LAN)從名字上我們大概就可以了解,它是在一定區(qū)域內(nèi)由一定數(shù)量的計算機互相連接而成的網(wǎng)絡(luò),它可以是兩臺,也可以是同一個區(qū)域內(nèi)的上千臺計算機構(gòu)成,當(dāng)一個局域網(wǎng)的范圍繼續(xù)進(jìn)行擴大,它也就形成了廣域網(wǎng)(WAN)。

      而我們所熟知的因特網(wǎng)(Internet)就是由無數(shù)個局域網(wǎng)和廣域網(wǎng)連接而成的,它是網(wǎng)絡(luò)與網(wǎng)絡(luò)之間所串連成的龐大網(wǎng)絡(luò),這些網(wǎng)絡(luò)以一組通用的協(xié)定相連,形成邏輯上的單一巨大國際網(wǎng)絡(luò)。這種將計算機網(wǎng)絡(luò)互相聯(lián)接在一起的方法可稱作“網(wǎng)絡(luò)互聯(lián)”,在這基礎(chǔ)上發(fā)展出覆蓋全世界的全球性互聯(lián)網(wǎng)絡(luò)稱“互聯(lián)網(wǎng)”,即是“互相連接一起的網(wǎng)絡(luò)”。

      那么我們接下來就來聊一聊這些網(wǎng)絡(luò)之間到底具備哪些協(xié)議?

      盤點那些進(jìn)行“網(wǎng)絡(luò)編程”必須要知道的基礎(chǔ)知識!

      網(wǎng)絡(luò)協(xié)議

      網(wǎng)絡(luò)協(xié)議規(guī)定了計算機之間連接的物理、機械、電器等特征,計算機之間的相互尋址規(guī)則,數(shù)據(jù)發(fā)送沖突的解決方式,長數(shù)據(jù)如何分段傳送和接收等內(nèi)容。這就像在世界上不同的國家之間,有不同的法律是一樣的,目前在互聯(lián)網(wǎng)中的網(wǎng)絡(luò)協(xié)議也有很多種,其中最常見的就是IP協(xié)議和TCP以及UDP協(xié)議。

      大灰狼來簡單的和大家介紹一下以上這三種協(xié)議的基本內(nèi)容

      IP協(xié)議

      IP是internet?protocol的簡稱,是網(wǎng)絡(luò)協(xié)議中的一種,internet網(wǎng)絡(luò)采用的協(xié)議是TCP/IP協(xié)議,但是這個協(xié)議是絕對不可以小視的,因特網(wǎng)依靠TCP/IP協(xié)議在全球范圍內(nèi)實現(xiàn)了不同硬件結(jié)構(gòu)、不同操作系統(tǒng)、不同網(wǎng)絡(luò)系統(tǒng)之間的互聯(lián)。在intertet網(wǎng)絡(luò)中,存在著數(shù)以億計的主機,每一臺主機都用網(wǎng)絡(luò)為其分配的intertete地址來代表自己主機本身,這個地址就是IP地址,所以我們也可以說IP地址就是某一臺計算機的身份證號碼。

      到目前為止呢,IP地址用四個字節(jié)來表示,也就是32位的二進(jìn)制數(shù)來表示,這也是我們通常最常見的IPV4地址,為了方便使用呢,我們通常取每個字節(jié)的十進(jìn)制數(shù),并且在每個字節(jié)之間用圓點隔開來表示IP地址,如最常見的192.168.1.1,當(dāng)然肯定還有小伙伴在電腦上也發(fā)現(xiàn)有用16個字節(jié)來表示的IP地址,這種IP地址是屬于IPV6地址

      并且TCP/IP模式是一種層次結(jié)構(gòu),一共有四層,分別為應(yīng)用層,傳輸層互聯(lián)網(wǎng)層和網(wǎng)絡(luò)層,他們每一層都有自己所特定的功能,提供特定的服務(wù)和對應(yīng)的訪問接口,并且拒一定的獨立性,這四層的關(guān)系如下圖所示

      TCP與UDP協(xié)議

      在TCP/UDP協(xié)議棧中,有兩個高級協(xié)議是我們在進(jìn)行網(wǎng)絡(luò)應(yīng)用程序的編寫中應(yīng)該要了解的,即傳輸控制協(xié)議TCP和用戶數(shù)據(jù)報協(xié)議UDP。

      TCP協(xié)議是一種以固接連線為基礎(chǔ)的協(xié)議,它提供兩臺計算機間可靠的數(shù)據(jù)傳輸,TCP可以保證從一端數(shù)據(jù)送至連接的另一端時,數(shù)據(jù)能夠準(zhǔn)確送達(dá),而且抵達(dá)的數(shù)據(jù)的排列順序和送出時的順序相同,

      因此TCP協(xié)議適合可靠性要求非常高的場合,打個比方來說:這就像我們雙方在打電話,我必須先撥號給對方,等兩端確定連接之后,雙方才能互相聽到對方講話,也能夠知道對方用的是什么內(nèi)容。

      而UDP協(xié)議是無連接通信協(xié)議,不保證數(shù)據(jù)的可靠傳輸,但能夠向若干個目標(biāo)發(fā)送數(shù)據(jù),或者接收來自若干個園的數(shù)據(jù),UDP以獨立發(fā)送數(shù)據(jù)包的方式進(jìn)行,這種方式就像快遞員送快遞給客戶,可以寄出很多個包裹給同一個人,每一個包裹都是相互獨立的個包裹,送達(dá)的順序并不重要,快遞員小哥接收包裹的順序也不能保證與愁包裹的順序相同。

      因此,UDP協(xié)議適用于一些對數(shù)據(jù)準(zhǔn)確性要求不高,但對數(shù)據(jù)傳輸速度和時效性要求非常高的網(wǎng)絡(luò),例如我們常見的網(wǎng)絡(luò)聊天室,在線影片等。

      這其中的原因就是因為TCP協(xié)議在認(rèn)證上存在額外耗費,可能是傳輸速度減慢,而UDP協(xié)議即使有一小部分?jǐn)?shù)據(jù)包損失,或者傳輸順序有所不同,也不會造成嚴(yán)重的危害該通信。

      這也就是為什么常說TCP可靠而非安全,UDP安全而非可靠了。

      在這里我們需要注意一點,就是一些防火墻和路由器會設(shè)置成不允許就地被數(shù)據(jù)包傳輸,因此,若遇到UDP連接方面的問題,應(yīng)該先確定所在的網(wǎng)絡(luò)是否允許UDP協(xié)議

      端口和套接字

      剛聽到這兩個名詞的時候,小伙伴可能不是特別了解,在這里打個通俗一點的比方,套接字就好比電源插座,將原本復(fù)雜的客戶端服務(wù)器端通過這個插座連接在一起。

      一般而言,對于一臺計算機來說,只有單一的連接到網(wǎng)絡(luò)的物理連接,所有的數(shù)據(jù)都通過此連接對內(nèi)、對外送達(dá)特定的計算機。這就是端口的定義,網(wǎng)絡(luò)程序設(shè)計中的端口(Port)并非真實存在的,他只不過是一個假想的連接裝置,端口被規(guī)定為在一個0~65535之間的整數(shù)。例如HTTP服務(wù)一般使用80端口,F(xiàn)TP服務(wù)使用21端口,所以當(dāng)一臺計算機提供了多種不同的服務(wù)時,客戶機就會通過不同的端口來確定連接到服務(wù)器上的哪項服務(wù)上面。

      其實在端口上也有一定的講究,如0~1023之間的端口,一般用于一些知名的網(wǎng)絡(luò)服務(wù)和應(yīng)用,而用戶的普通網(wǎng)絡(luò)應(yīng)用程序應(yīng)該使用1024以上的端口數(shù),這樣做的目的也是避免端口號與另一個應(yīng)用或系統(tǒng)服務(wù)所用的端口所造成沖突。

      端口的使用如下圖所示

      在網(wǎng)絡(luò)程序中的套接字(Socket)表示用于將應(yīng)用程序與端口連接起來,同樣套接字也是一個假想的連接裝置,在JAVA編程中將套接字可以抽象為類,我們在進(jìn)行程序開發(fā)的時候,只需要創(chuàng)建Socket類對象,就可以使用套接字了。

      可以用下面這個圖來簡單的表示套接字:

      好啦,關(guān)于網(wǎng)絡(luò)通信基礎(chǔ)的講解就是這些了,之后大灰狼也會和大家分享如何使用TCP和UDP以及MQTT協(xié)議進(jìn)行網(wǎng)絡(luò)程序的編寫。

      覺得有用記得關(guān)注喲(^~^)

      同時你也可以關(guān)注我的微信公眾號“灰狼洞主”后臺回復(fù)“Java筆記”獲取Java精講視頻、面試寶典、項目案例剖析、項目架構(gòu)等超多資料分享!

      大灰狼期待與你一同進(jìn)步^ω^

      TCP/IP UDP 數(shù)據(jù)通信 網(wǎng)絡(luò) 軟件開發(fā)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:RASPBERRY PI PICO 樹莓派PICO開發(fā)板雙核高性能低功耗RP2040芯片
      下一篇:ElasticSearch Merge機制和寫放大問題研究
      相關(guān)文章
      亚洲一级毛片视频| 亚洲高清在线mv| 国产精品亚洲自在线播放页码| 内射干少妇亚洲69XXX| 亚洲va久久久噜噜噜久久男同| 在线观看午夜亚洲一区| 亚洲中文字幕无码日韩| 亚洲综合色自拍一区| 亚洲欧洲∨国产一区二区三区| 亚洲精品狼友在线播放| 国产精品久久久亚洲| 精品国产综合成人亚洲区| 久久精品国产亚洲AV麻豆不卡| 亚洲av中文无码乱人伦在线r▽ | 456亚洲人成影院在线观| 亚洲黄色激情视频| 亚洲人成色77777在线观看| 亚洲av综合av一区二区三区| 无码不卡亚洲成?人片| 亚洲一区二区三区在线播放| 中文字幕精品亚洲无线码一区| 中文字幕在线亚洲精品| 久久亚洲精品无码| 久久久久亚洲AV无码永不| 亚洲国产精品综合一区在线 | 亚洲五月午夜免费在线视频| 亚洲性久久久影院| 国产亚洲精品资源在线26u| 久久精品国产精品亚洲艾| 老司机亚洲精品影院| 亚洲人成高清在线播放| 亚洲砖码砖专无区2023| 亚洲av纯肉无码精品动漫| 亚洲免费日韩无码系列 | 成人亚洲国产va天堂| 国产亚洲一卡2卡3卡4卡新区 | 亚洲第一网站免费视频| 亚洲成a人片在线看| 国产成人精品日本亚洲语音 | 91麻豆精品国产自产在线观看亚洲 | 亚洲午夜电影在线观看|