1. 程式人生 > >java網路程式設計詳解(分層,TCP/IP,網路基礎,協議)

java網路程式設計詳解(分層,TCP/IP,網路基礎,協議)

計算機網路:
計算機網路,是指將地理位置不同的具有獨立功能的多臺計算機及其外部裝置,通過通訊線路連線起來,在網路作業系統,網路管理軟體及網路通訊協議的管理和協調下,實現資源共享和資訊傳遞的計算機系統。
從邏輯功能上看,計算機網路是以傳輸資訊為基礎目的,用通訊線路將多個計算機連線起來的計算機系統的集合,一個計算機網路組成包括傳輸介質和通訊裝置。
雖然網路型別的劃分標準各種各樣,但是從地理範圍劃分是一種大家都認可的通用網路劃分標準。按這種標準可以把各種網路型別劃分為區域網、都會網路、廣域網和網際網路四種。區域網一般來說只能是一個較小區域內,都會網路是不同地區的網路互聯,不過在此要說明的一點就是這裡的網路劃分並沒有嚴格意義上地理範圍的區分,只能是一個定性的概念。
網路分層:

為了減少網路設計的複雜性,絕大多數網路採用分層設計方法。所謂分層設計方法,就是按照資訊的流動過程將網路的整體功能分解為一個個的功能層,不同機器上的同等功能層之間採用相同的協議,同一機器上的相鄰功能層之間通過介面進行資訊傳遞。

開放系統互連參考模型 (Open System Interconnect 簡稱OSI)是國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)聯合制定的開放系統互連參考模型,
為開放式互連資訊系統提供了一種功能結構的框架。它從低到高分別是:物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。
計算機網路是指由通訊線路互相連線的許多自主工作的計算機構成的集合體,各個部件之間以何種規則進行通訊,就是網路模型研究的問題。
網路模型一般是指OSI七層參考模型和TCP/IP四層參考模型。這兩個模型在網路中應用最為廣泛。

TCP/IP是一組用於實現網路互連的通訊協議。Internet網路體系結構以TCP/IP為核心。
基於TCP/IP的參考模型將協議分成四個層次,它們分別是:網路訪問層、網際互聯層、傳輸層(主機到主機)、和應用層。
1. 應用層
應用層對應於OSI參考模型的高層,為使用者提供所需要的各種服務,例如:FTP、Telnet、DNS、SMTP等.
2. 傳輸層
傳輸層對應於OSI參考模型的傳輸層,為應用層實體提供端到端的通訊功能,保證了資料包的順序傳送及資料的完整性。該層定義了兩個主要的協議:傳輸控制協議(TCP)和使用者資料報協議(UDP).
TCP協議提供的是一種可靠的、通過“三次握手”來連線的資料傳輸服務;而UDP協議提供的則是不保證可靠的(並不是不可靠)、無連線的資料傳輸服務.
3. 網際互聯層
網際互聯層對應於OSI參考模型的網路層,主要解決主機到主機的通訊問題。它所包含的協議設計資料包在整個網路上的邏輯傳輸。注重重新賦予主機一個IP地址來完成對主機的定址,它還負責資料包在多種網路中的路由。該層有三個主要協議:網際協議(IP)、網際網路組管理協議(IGMP)和網際網路控制報文協議(ICMP)。
IP協議是網際互聯層最重要的協議,它提供的是一個可靠、無連線的資料報傳遞服務。
4. 網路接入層(即主機-網路層)
網路接入層與OSI參考模型中的物理層和資料鏈路層相對應。它負責監視資料在主機和網路之間的交換。事實上,TCP/IP本身並未定義該層的協議,而由參與互連的各網路使用自己的物理層和資料鏈路層協議,然後與TCP/IP的網路接入層進行連線。地址解析協議(ARP)工作在此層,即OSI參考模型的資料鏈路層。

網路程式設計:
什麼是套接字:
源IP地址和目的IP地址以及源埠號和目的埠號的組合稱為套接字。其用於標識客戶端請求的伺服器和服務.
什麼是網路程式設計:
    通過使用套接字來達到程序間通訊目的的程式設計就是網路程式設計.
 程序之間的通訊:
      1):在同一臺電腦上,A程序和B程序相互通訊.
      2):在網路中(外網/內網),A電腦中的aa程式和B電腦中的bb程式相互通訊(有網路連線).
為什麼需要網路程式設計:
      1):如果沒有網路,只能玩單機遊戲.(鬥地主,三國殺,CS等)
      2):有了網路,QQ遊戲等.
這個章節所有的API都在:java.net包.
網路程式設計三要素:
      1):IP地址.
      2):埠.
      3):協議:規則,資料傳遞/互動規則.

網路基礎:

網路之間互連的協議(IP)是Internet Protocol的外語縮寫,中文縮寫為“網協”.在Java中使用InetAddress類表示.
IP的版本:
    IPv4:192.168.10.30
    IPv6:1080:0:0:0:8:800:200C:417A  
IP地址編址方案:IP地址編址方案將IP地址空間劃分為A、B、C、D、E五類,其中A、B、C是基本類,D、E類作為多播和保留使用。
A類 10.0.0.0--10.255.255.255
B類 172.16.0.0--172.31.255.255
C類 192.168.0.0--192.168.255.255
----------------------------------------------
在Java中,使用InetAddress類來表示IP地址.
表示本機:
   方式1:本機IP
  方式2:127.0.0.1
  方式3:localhost


埠(port):
"埠"是英文port的意譯,可以認為是裝置與外界通訊交流的出口。埠可分為虛擬埠和物理埠,其中虛擬埠指計算機內部或交換機路由器內的埠,不可見。例如計算機中的80埠、21埠、23埠等。物理埠又稱為介面,是可見埠,計算機背板的RJ45網口,交換機路由器集線器等RJ45埠。電話使用RJ11插口也屬於物理埠的範疇。
協議埠:
如果把IP地址比作一間房子 ,埠就是出入這間房子的門。真正的房子只有幾個門,但是一個IP地址的埠可以有65536(即:2^16)個之多!埠是通過埠號來標記的,埠號只有整數,範圍是從0 到65535(2^16-1)。


結論:
    1):在同一臺電腦中埠不能重複,若重複,則報錯埠衝突
    2):如果我們需要自定義埠號,建議使用10000以上的.
協議:
協議(protocol),網路協議的簡稱,網路協議是通訊計算機雙方必須共同遵從的一組約定。如怎麼樣建立連線、怎麼樣互相識別等。只有遵守這個約定,計算機之間才能相互通訊交流。它的三要素是:語法、語義、時序。
網路協議,也可簡稱協議,通常由三要素組成:
(1)語法:即資料與控制資訊的結構或格式;
(2)語義:即需要發出何種控制資訊,完成何種動作以及做出何種響應;
(3)時序(同步),即事件實現順序的詳細說明。
-------------------------------------------------------------
http——超文字傳輸協議資源
https——用安全套接字層傳送的超文字傳輸協議
ftp——檔案傳輸協議
mailto——電子郵件地址
file——當地電腦或網上分享的檔案


URI:
統一資源識別符號(Uniform Resource Identifier,或URI)是一個用於標識某一網際網路資源名稱的字串。
包含:主機名,識別符號,相對URI.
如:http://java.sun.com:80/j2se/1.3/hello.html
URL:
統一資源定位符是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的地址。
網際網路上的每個檔案都有一個唯一的URL,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。
在Java中,URI表示一個統一資源的識別符號,不能用於定位任何資源,唯一的作用就是解析.
而URL則包含一個可以開啟到達該資源的輸入流,可以簡單理解URL是URI的特例.
簡單理解: URI和URL都表示一個資源路徑.
建立URL物件:
URL(String protocol, String host, int port, String file)

URLEncoder和URLDecoder用於完成普通字串和application/x-www-form-urlencoded MIME字串之間的相互轉換.

application/x-www-form-urlencoded MIME編碼:
編碼和解碼:
  在Web的瀏覽器中,不同的瀏覽器的編碼和解碼規則是不一樣的.
   對於W3C瀏覽器:遵循W3C組織規範的瀏覽器,(非IE).
               編碼:byte[] data = “任小龍”.getByte(String charsetName);
               解碼:String  str = new String(data, String charsetName);
   對於IE瀏覽器:
              編碼使用的application/x-www-form-urlencoded MIME機制.

傳輸層協議:
TCP和UDP的區別:
TCP :面向連線(經歷三次握手)、傳輸可靠(保證資料正確性,保證資料順序)、用於傳輸大量資料(流模式)、速度慢,建立連線需要開銷較多(時間,系統資源)。 服務端和客戶端
UDP:面向非連線、傳輸不可靠(丟包[資料丟失])、用於傳輸少量資料(資料報包模式)、速度快。傳送端和接收端

TCP協議:

UDP協議:


相關推薦

java網路程式設計(分層,TCP/IP,網路基礎,協議)

計算機網路: 計算機網路,是指將地理位置不同的具有獨立功能的多臺計算機及其外部裝置,通過通訊線路連線起來,在網路作業系統,網路管理軟體及網路通訊協議的管理和協調下,實現資源共享和資訊傳遞的計算機系統。 從邏輯功能上看,計算機網路是以傳輸資訊為基礎目的,用通訊線路將多個計算機

Linux網路程式設計---TCP的三次握手和四次揮手

我們知道,在TCP/IP協議中,TCP協議提供可靠的連線服務,是因為它有許多保證可靠連線的機制。可以分為3個方面: 1.確認應答機制:指的是不管哪一端傳送資料都需要確認回覆一下。 2.超時重傳機制,傳送後等待一段時間,不管是傳送失敗或者是還沒有收到回覆,那麼就認為資料傳輸失敗了;此時將會

Java網路程式設計

1.網路程式設計   1.1計算機網路概述   網路程式設計的實質就是兩個(或多個)裝置(例如計算機)之間的資料傳輸。   按照計算機網路的定義,通過一定的物理裝置將處於不同位置的計算機連線起來組成的網路,這個網路中包含的裝置有:計算機、路由器、交換機等等

JAVA中的網路程式設計

1、網路程式設計 網路程式設計 網路程式設計對於很多的初學者來說,都是很嚮往的一種程式設計技能,但是很多的初學者卻因為很長一段時間無法進入網路程式設計的大門而放棄了對於該部分技術的學習。 在 學習網路程式設計以前,很多初學者可能覺得網路程式設計是

Linux網路程式設計---HTTP協議

HTTP 簡介 HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協議。。 HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案,

c++ 網路程式設計(九)TCP/IP LINUX/windows下 多執行緒超詳細教程 以及 多執行緒實現服務端

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <process.h> #include <winsock2.h> #include <win

c++ 網路程式設計(九)TCP/IP LINUX/windows下 多執行緒超詳細教程 以及 多執行緒實現服務端

原文作者:aircraft 原文連結:https://www.cnblogs.com/DOMLX/p/9661012.html  先講Linux下(windows下在後面可以直接跳到後面看): 一.執行緒基本概念 前面我們講過多程序伺服器,但我們知道它開銷很大

Netty網路程式設計

 Netty網路程式設計詳解 netty簡介: Netty是一個非同步的,事件驅動的網路程式設計框架和工具,使用Netty可以快速開發出可維護的,高效能、高擴充套件能力的協議服

網路程式設計-含一些開發總結

        開始介紹前,說點經驗之談,希望能有所幫助,在專案開發中肯定涉及到多程序/執行緒,這時使用網路程式設計的系統調應十分小心,也就是在程式設計時應注意:         (1)假如父程序服務端,子程序客

高效能網路程式設計總結及《TCP/IP Sockets程式設計(C語言實現) (第2版)》 程式碼下載(連結以及檔案打包)

這篇文章將試圖說明應用程式如何接收網路上傳送過來的TCP訊息流,由於篇幅所限,暫時忽略ACK報文的回覆和接收視窗的滑動。 為了快速掌握本文所要表達的思想,我們可以帶著以下問題閱讀: 1、應用程式呼叫read、recv等方法時,socket套接字可以設定為阻塞或者非阻塞,這兩種方式是如何工作的? 2、

最強Java併發程式設計:知識點梳理,BAT面試題等

本文原創,更多內容可以參考: Java 全棧知識體系。如需轉載請說明原處。 知識體系系統性梳理 Java 併發之基礎 A. Java進階 - Java 併發之基礎:首先全域性的瞭解併發的知識體系,同時瞭解併發理論基礎和執行緒基礎,併發關鍵字等,這些是你理解Java併發框架的基礎。@pdai Ja

Linux 網路程式設計(一)--------網路基礎協議

寫在前面:說一下寫這個系列的目的,隨著對網路開發的深入,越來越覺得自己網路基礎知識的薄弱,雖然開發過程中不需要對網路基礎有很深入的瞭解照樣能進行,但有一些問題仍然是不知其因,所以這個系列打算從最基本的網路知識展開記錄,也是一邊學習一邊整理筆記。歡迎大家共同學習,QQ:9936

輕量級深度學習網路(一):谷歌輕量級網路MobileNet-v1

目錄 4、小結 0、原文下載 這是谷歌在2017年4月份提出的一個網路, 目的是使得網路小型化,同時計算量得到優化,能夠方便的移植到手機等移動智慧終端。 1、前人的工作和模型簡介 深度學習在影象分類,目標檢

VMware網路配置:三種網路模式簡介

VMware網路配置詳解:三種網路模式簡介安裝好虛擬機器以後,在網路連線裡面可以看到多了兩塊網絡卡:其 中VMnet1是虛擬機器Host-only模式的網路介面,VMnet8是NAT模式的網路介面,

網路七層協議和TCP/IP五層協議

[網路七層協議]                                    [TCP/IP 協議] 7.應用層:具體文字賦予動作能力,如HTTP,TELNET                                 ===》4.應用層 6.表示層:定義資

Docker 網路模式及容器間網路通訊

  當專案大規模使用 Docker 時,容器通訊的問題也就產生了。要解決容器通訊問題,必須先了解很多關於網路的知識。Docker 作為目前最火的輕量級容器技術,有很多令人稱道的功能,如 Docker 的映象管理。然而,Docker 同樣有著很多不完善的地方,網路方面就是 Docker 比較薄弱的部分。因此,我

TCP/IP SOCKET程式設計

Linux的SOCKET程式設計詳解 1. 網路中程序之間如何通訊 進 程通訊的概念最初來源於單機系統。由於每個程序都在自己的地址範圍內執行,為保證兩個相互通訊的進 程之間既互不干擾又協調一致工作,作業系統為程序通訊提供了相應設施,如 UNIX BSD有:管道(pipe)、命名管道(named pip

OSI七層與TCP/IP五層網路架構

(1)OSI七層模型 OSI中的層 功能 TCP/IP協議族 應用層 檔案傳輸,電子郵件,檔案服務,虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示層 資料格式化,程式碼轉換,資料加密 沒有協議 會話層 解除或建立與別的接點的聯絡 沒有協

計網--OSI七層與TCP/IP五層網路架構

OSI和TCP/IP是很基礎但又非常重要的網路基礎知識,理解得透徹對運維工程師來說非常有幫助。今天偶又複習了一下: (1)OSI七層模型 OSI中的層 功能 TCP/IP協議族 應用層 檔案傳輸,電子郵件,檔案服務,虛擬終端 TFTP,HTTP,SNMP,FT

網路程式設計】深入理解TCP的工作機制

TCP的特點及其目的 為了通過IP資料報實現可靠性傳輸,需要考慮很多事情,例如資料的破壞、丟包、重複以及分片順序混亂等,TCP通過校驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制等實現可靠性傳輸。 通過序列號與確認應答提高可靠性 在TCP中,當傳送端的