廖雪峯Java13網絡編程-1Socket編程-1網絡編程概念

1.計算機網絡

1.1 什麼是計算機網絡?

  • 兩臺或更多計算機組成的網絡
  • 同一網絡內的任意2臺計算機均可以直接通訊
  • 全部計算機必須遵循同一種網絡協議

1.2 什麼是互聯網

  • 互聯網是網絡的網絡
  • 互聯網採用TCP/IP協議
    * TCP/IP協議泛指互聯網協議
    * 其中最重要的2個協議是TCP協議和IP協議

2. IP地址

  • IP地址用於惟一標識一個網絡接口(Network Interface)
    * IPv4採用32位地址,相似101.202.99.12
    * IPv6採用128位地址,相似2001:0DA8:100A:0000:0000:1020:F2F3:1428
  • 公網IP能夠直接被訪問
  • 內網IP只能在內網訪問
    * 192.168.x.x
    * 10.x.x.x
  • 本機地址:127.0.0.1java

  • IPv4地址其實是一個32位整數
    * 4個整數,每個在0-255(2^8-1)之間,即32位整數
import java.math.BigInteger;

public class IPCalculator {
    public static void main(String[] args) throws NumberFormatException{
        int[] ip = {101,202,99,12};
        String[] listaddr16=new String[4];
        for(int i=0;i<ip.length;i++){
            String hex = Integer.toHexString(ip[i]);
            if(hex.length()<2){
                hex="0"+hex;
            }
            listaddr16[i]=hex;
        }
        String address16 ="";
        for(String addr:listaddr16){
            address16 += addr;
        }
        System.out.println("IP地址轉化爲16進制:"+ address16);
        System.out.println(new BigInteger(address16,16));
    }
}


若是1臺計算機有1個網卡,而且接入了網絡,它會擁有2個IP地址,本地地址127.0.0.1和一個IP地址,並經過這個IP地址鏈接網絡。
若是計算機有2個網卡,除了本地地址,還有2個IP地址,分別接入2個網絡。一般鏈接2個網絡的設備是交換機和路由器,其至少有2個IP地址,分別接入不一樣的網絡,讓網絡之間鏈接起來。

若是2臺電腦位於同一個網絡下,它們能夠直接通訊,由於其IP地址前段是相同的,網絡號也是相同的。
網絡號是IP地址經過子網掩碼之後過濾獲得的。每臺計算機都配備了IP地址和子網掩碼,根據IP地址和子網掩碼能夠計算出網絡號。
計算方法:按組對齊,作與運算。

若是計算出的網絡號相同,證實在同一個網絡,能夠直接通訊。

若是2臺計算機計算出的網絡號不一樣,2臺計算機不在同一個網絡,不能直接通訊。必須經過路由器或交換機等網絡設備間接通訊,咱們把這種設備成爲網關。

網關的做用:鏈接多個網絡,負責把來自一個網絡的數據包發到另外一個網絡,這個過程成爲路由。

因此一臺計算機的網卡會有IP地址、子網掩碼、網關的IP地址這3個關鍵的配置。服務器

直接記憶IP地址很是困難,因此咱們一般使用域名來訪問某個特定的服務。域名解析器DNS負責把域名翻譯爲對應的IP地址,客戶端再根據IP地址來訪問服務器。網絡

3. TCP/IP協議

TCP/IP協議:繁殖互聯網協議簇,最重要的2個協議是TCP/IP協議。tcp

3.1 OSI模型(Open System Interconnect)

OSI模型是ISO組織定義的一個計算機互聯的標準模型。只是一個定義,目的是簡化網絡各層的操做,提供標準的接口,便於實現和維護。
應用層:提供應用層序之間的通訊
表示層:處理數據格式、加減密
會話層:負責建議和維護會話
傳輸層:提供端到端的可靠傳輸
網絡層:負責根據目標地址來選擇路由
鏈路層和物理層:負責把數據進行分片,而且真正經過物理網絡進行傳輸,例如無線網、光線等計算機網絡

互聯網實際使用的TCP/IP模型大體對應OSI的5層模型

4. IP協議和TCP協議

4.1 IP協議

  • 分組交換 一個大的數據包想要經過IP協議傳輸的時候,被自動分紅若干個小的數據包,而後經過網絡進行傳輸。
  • 不保證可靠傳輸翻譯

    4.2 TCP協議:

    TCP協議也是應用最廣的協議,許多高級協議都是創建在TCP協議之上的。
  • 傳輸控制協議 創建在IP協議上的,IP協議只負責發數據包,而TCP控制數據包的傳輸
  • 面向鏈接 TCP在傳輸數據以前,須要先創建鏈接,而後才能傳輸數據,傳輸完後還須要斷開鏈接
  • 可靠傳輸 TCP是一個可靠傳輸的協議,之因此能保證這一點,是經過接受確認、超時重傳這些機制實現的
  • 雙向通訊 TCP容許雙向通訊,雙方能夠同時發送接受數據code

4.3 UDP協議(User Datagram Protocol)數據報文協議:

  • 數據報文協議
  • 無鏈接
  • 不保證可靠傳輸
  • 傳輸效率高

UDP比TCP簡單的多。UDP協議不須要鏈接,不保證可靠傳輸,發送方發送數據後,沒法得知接收方是否收到,由於UDP協議比TCP要簡單的多,因此一樣的數據用UDP傳輸要比TCP效率高。
選擇UDP協議的時候,傳輸的數據,一般是可以容忍丟失一部分的,例如一些語音、視頻通信的應用會選擇UDP協議orm

5. 總結:

計算機網絡的基本概念:視頻

  • 互聯網:網絡的網絡
  • IP地址:計算機在網絡中的標識
  • 網關:負責鏈接多個網絡
  • 協議:TCP/IP協議
  • TCP協議:面向鏈接,可靠傳輸
相關文章
相關標籤/搜索