欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

盤點(diǎn)網(wǎng)絡(luò)編程必須要知道的基礎(chǔ)知識(shí)

 更新時(shí)間:2020年07月06日 09:32:28   作者:灰小猿  
這篇文章主要介紹了盤點(diǎn)網(wǎng)絡(luò)編程必須要知道的基礎(chǔ)知識(shí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

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

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

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

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

  • 其中服務(wù)器是指提供信息的計(jì)算機(jī)或程序,
  • 客戶端是指請(qǐng)求信息的計(jì)算機(jī)或程序,
  • 兩者之間通過(guò)網(wǎng)絡(luò)進(jìn)行連接并且實(shí)現(xiàn)相互的通信,

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

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

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

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

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

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

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

IP協(xié)議

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

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

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

TCP與UDP協(xié)議

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

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

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

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

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

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

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

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

端口和套接字

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

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

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

端口的使用如下圖所示

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

可以用下面這個(gè)圖來(lái)簡(jiǎn)單的表示套接字:

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

到此這篇關(guān)于盤點(diǎn)網(wǎng)絡(luò)編程必須要知道的基礎(chǔ)知識(shí)的文章就介紹到這了,更多相關(guān)網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 程序員的八種境界,你在哪一境?

    程序員的八種境界,你在哪一境?

    這篇文章主要介紹了程序員的八種境界,你在哪一境?本文同時(shí)探討了為什么中國(guó)的程序員總被稱為碼農(nóng)的原因,需要的朋友可以參考下
    2014-09-09
  • 淺談Visual?Studio和Visual?Studio?Code(VSCode)的區(qū)別及如何選擇

    淺談Visual?Studio和Visual?Studio?Code(VSCode)的區(qū)別及如何選擇

    Visual Studio和VSCode兩者都是 Microsoft 制造的,它們有著相似的名稱,盡管它們的名字相似,但它們的功能卻大不相同,本文主要介紹了Visual?Studio和Visual?Studio?Code(VSCode)的區(qū)別,感興趣的可以了解一下
    2024-06-06
  • 最新Adobe2022?全家桶永久激活無(wú)限使用?附安裝包下載(一鍵安裝)

    最新Adobe2022?全家桶永久激活無(wú)限使用?附安裝包下載(一鍵安裝)

    眾所周知,Adobe系列的軟件每年都會(huì)更新一個(gè)大版本,這不,2022年還沒(méi)到來(lái),可Adobe2022已經(jīng)更新了,所以最新版一出來(lái),就有安裝體驗(yàn),整體效果非常不錯(cuò),今天就把所有資源分享給大家
    2021-12-12
  • 解決使用IDE Run運(yùn)行出錯(cuò)package pack/test is not in GOROOT (/usr/local/go/src/pack/test)

    解決使用IDE Run運(yùn)行出錯(cuò)package pack/test is not in GOROOT (/usr/loca

    這篇文章主要介紹了解決使用IDE Run運(yùn)行出錯(cuò)package pack/test is not in GOROOT (/usr/local/go/src/pack/test),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 有意思的數(shù)據(jù)結(jié)構(gòu)默克樹 Merkle tree應(yīng)用介紹

    有意思的數(shù)據(jù)結(jié)構(gòu)默克樹 Merkle tree應(yīng)用介紹

    這篇文章主要為大家介紹了有意思的數(shù)據(jù)結(jié)構(gòu)默克樹 Merkle tree應(yīng)用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Window下安裝JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程圖解

    Window下安裝JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程圖解

    這篇文章主要介紹了Window下安裝JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳解git submodule update獲取不到最新提交的代碼

    詳解git submodule update獲取不到最新提交的代碼

    這篇文章主要介紹了詳解git submodule update獲取不到最新提交的代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 分享18個(gè)最佳代碼編輯器/IDE開發(fā)工具

    分享18個(gè)最佳代碼編輯器/IDE開發(fā)工具

    這篇文章主要為開發(fā)人員收錄了18個(gè)最好的代碼編輯器/IDE工具,希望你會(huì)喜歡
    2014-05-05
  • Markdown語(yǔ)法手冊(cè)—完整筆記整理

    Markdown語(yǔ)法手冊(cè)—完整筆記整理

    Markdown是一種輕量級(jí)標(biāo)記語(yǔ)言,創(chuàng)始人為約翰·格魯伯(John?Gruber),?它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉(zhuǎn)換成有效的?XHTML(或者HTML)文檔,由于Markdown的輕量化、易讀易寫特性,并且對(duì)于圖片,圖表、數(shù)學(xué)式都有支持,許多網(wǎng)站都廣泛使用Markdown
    2024-08-08
  • 使用Spark進(jìn)行實(shí)時(shí)流計(jì)算的方法

    使用Spark進(jìn)行實(shí)時(shí)流計(jì)算的方法

    這篇文章主要介紹了用Spark進(jìn)行實(shí)時(shí)流計(jì)算的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論