【java】網絡編程之概念篇(一)

今天要補充的知識點是博主以前學java的時候遺漏(跳過)的一部分–網絡編程!這個部分對往後的使用框架開發後端,很有幫助,屬於基礎塊了,雖然我也會一點後端開發,但是沒整套東西學,技術含量還是差一些,所以現在補上,算是掃盲了,這部分寫得內容不會很官方,都是很通俗的語言來描述相關概念

網絡通信涉及的內容

網絡: 將不同區域的電腦連接到一起,組成局域網、城域網或廣域網。

互聯網:我們可以把它想象成一個網狀結構,裏面很多節點錯綜相連,其中這些節點就是一臺電腦(或者其他設備),那麼怎麼讓這些節點之間產生真正意義上的連接呢?就是通訊,那麼通訊會存在什麼問題呢?假如A電腦想要發信息給B電腦,但是在這樣一個大網絡中又不希望其他電腦能知道AB電腦的通信內容,因此人們就爲了通訊方便,給每一臺電腦都事先分配一個類似電話號碼一樣的標識地址,就是IP地址,也可以類比爲這個人所居住的地址,找到這個人的地址,我們就可以聯繫這個人產生通訊了。

在這裏插入圖片描述
通訊協議: 計算機網絡中實現通信必須由一些約定,就是通信協議,協議對速率、傳輸代碼、代碼結構、傳輸控制步驟、出錯控制等都制定了標準。
通信接口: 爲了使得兩個結點之間能進行對話,必須在他們之間建立通信工具(即接口),使得彼此之間能進行信息交換。接口包括兩部分:

  • 硬件裝置:實現節點之間的信息傳送
  • 軟件裝置:規定雙方進行通信的約定協議

網絡分層

TCP/IP是一個協議族,按照OSI模型的層次劃分,一共四層:應用層、傳輸層、互連網絡層、網絡接口層(物理+數據鏈路層)。

osi

數據封裝

在這裏插入圖片描述圖來源:https://blog.csdn.net/weixin_43836778/article/details/103956723

數據封裝(Data Encapsulation) 是指將協議數據單元(PUC)封裝在一組協議頭和協議尾的過程。在OSI模型中,每層主要負責與其他機器上的對等層進行通信,這個過程是在PUC中實現的,其中每一層的PUC都是由本層的協議頭、協議尾和數據封裝構成的。封裝的順序是:從高層到底層,逐層進行數據封裝

對於上圖來說,封裝的過程是:

  1. 應用層:準備數據
  2. 傳輸層:接收應用層數據,添加TCP的控制信息(稱爲TCP頭部),得到的數據單元爲段(Segment),然後將段交給網絡層
  3. 網絡層:接收到段,添加IP頭部,得到的數據單元爲包(Packet),然後將包交給數據鏈路層
  4. 數據鏈路層:接收到包,添加MAC頭部和尾部,得到的數據單元爲幀(Frame),然後將幀交給物理層
  5. 物理層:將接收到的數據轉化爲比特流,然後在網線中傳送

數據拆封

在這裏插入圖片描述
圖來源:https://blog.csdn.net/weixin_43836778/article/details/103956723

數據拆封(Data dismantling) 是指將接收到的數據進行拆包,每一層只把對該層有意義的數據拿走(或者說是每一層只能處理髮送方同等層的數據),然後把其餘的部分傳遞給上一層。拆封的順序是:從底層到高層,逐層進行數據解封裝

對於上圖來說,拆封步驟是:

  1. 物理層:接收到比特流,經過處理後將數據交給數據鏈路層
  2. 數據鏈路層:將接收到的數據轉化爲數據幀,再除去MAC頭部和尾部,然後將包交給網絡層
  3. 網絡層:接收到包後,除去IP頭部,然後將段交給傳輸層
  4. 傳輸層:接收到段後,除去TCP頭部,然後將數據交給應用層
  5. 應用層:處理數據

IP地址

IP地址(Internet Protocol Address)用來定位網絡中的一個節點(電腦,路由或通信設備),在互聯網上,每臺計算機和其他設備都有一種統一的地址,稱爲”IP地址“。需要注意的是每臺電腦的IP地址並不是只有一個,看我們上面舉的例子,一個人可以有多個手機號碼,也可以有多個居住地址,IP地址不等同於人的身份證號碼,它並不是只有一個,我們可以指定一臺計算機具有多個IP地址。根據位數不同,IP地址又可分爲兩類:

  • IPv4:32位地址,點分十進制表示,即使用"."來分割,每個位都是十進制數字。如192.168.0.1
  • IPv6:128位地址(32位不夠用,另外設置的),採用16進制來表示。

還有些特殊的IP地址需要我們記住,如127.0.0.1表示本機地址,192.168.0.0至192.168.255.255。科普一句,黑客一般是通過IP地址對電腦進行攻擊的。

端口

端口(Port) 有兩個意思:一個是物理意義上的端口**(硬件端口)** ,也就是計算機或主機上預留的一些外部接口,用來連接其他設備的。第二個是邏輯意義上的端口 (軟件端口) ,一般指TCP/IP協議中的端口。在這裏,主要講是軟件的端口。同一臺電腦裏面有很多軟件(應用程序),端口是用來定位軟件,端口號是由1個16位的二進制組成的,佔2個字節,對應十進制的範圍是0到65535。按端口號可分爲三類:

  • 公認端口(Well Known Ports):0-1023
  • 註冊端口(Registered Ports):1024-49151
  • 動態/私有端口(Dynamic / Private Ports):49152-65535

一些特定的端口號:

  • 常用的保留TCP端口號:HTTP 80,FTP 20/21,DNS 53,Telnet 23等
  • 常用的保留UDP端口號:DNS 53,BootP 67(server)/68(client),TFTP 69等
  • tomcat端口:8080
  • Oracle端口:1521
  • MySQL端口:3306

需要注意的點:自定義的端口號儘可能大,在1024以上,同一個協議下端口號不能重複。

URL

URL(Uniform Resource Locator) 也叫統一資源定位符,由於同一個軟件(應用程序)裏面會有很多資源,用來定位資源的。它按照互聯網的大小分爲:局域網URL和公網/外網URL,其基本格式是:schema://host[:port#]/path…/[?query-string]

  • schema:指的是底層使用的協議,比如文件傳輸協議使用ftp,網絡傳輸協議使用http或https
  • host:指的是服務器,通常爲IP地址或域名,如果是公網的HTTP服務器的IP地址或域名,如果是局域網中本機的話,那就是指locahost,或127.0.0.1
  • port#:指的是端口號,HTTP服務器的默認端口號是80,這個可以省略,如果使用其他端口號則必須指明
  • path:訪問資源的路徑,以“/”區分路徑中每個目錄名稱
  • query-string:發送給Web服務器的數據

協議

osi
協議:指的是交流的方式,它是根據OSI模型來定義出不同的協議。

  1. 應用層:有文件傳輸協議FTP,網絡協議HTTP等
  2. 傳輸層:有TCP/UDP協議
  3. 網絡層:有IP地址協議等
  4. 網絡接口:有各種通信網絡接口的協議。

總結

介紹了相關概念。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章