java基礎-網絡編程1

1.OSI分層模型和TCP/IP分層模型的對應關係


   SOI參考模型           TCP/IP
    
    7 應用層                應
    6 表示層                用
    5 會話層                層
    4 傳輸層<------------>傳輸層
    3 網絡層<------------>網絡層
    2 數據鏈路層          數據鏈路層
    1 物理層<------------>物理層


2、七層模型與協議的對應關係


       網絡層   ------------     IP(網絡之間的互聯協議)


       傳輸層   ------------     TCP(傳輸控制協議)、UDP(用戶數據報協議)


       應用層   ------------     Telnet(Internet遠程登錄服務的標準協議和主要方式)、FTP(文本傳輸協議)、HTTP(超文本傳送協議)


3、IP地址和端口號


1、ip地址用於唯一標示網絡中的一個通信實體,這個通信實體可以是一臺主機,可以是一臺打印機,或者是路由器的某一個端口。而在基於IP協議網絡中傳輸的數據包,必須使用IP      地址來進行標示。ip地址就像寫一封信,必須指定收件人的地址一樣。每個被傳輸的數據包中都包括了一個源IP和目標IP。


2、ip地址唯一標示了通信實體,但是一個通信實體可以有多個通信程序同時提供網絡服務。這個時候就要通過端口來區分開具體的通信程序。一個通信實體上不能有兩個通信程序        使用同一個端口號。


    IP地址和端口號,就像一個出差去外地入住酒店一樣,IP地址表示了酒店在具體位置,而端口號則表示了這個人在酒店的房間號。


4、TCP和UDP


1、TCP是一種面向連接的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的數據流。它能夠提供兩臺計算機之間的可靠的數據流,HTTP、FTP、Telnet等應      用都需要這種可靠的通信通道。


2、UDP是一種無連接的協議,每個數據報都是一個獨立的信息,包括完整的源地址或目的地址,它在網絡上以任何可能的路徑傳送目的地,至於能夠達到目的地,達到目的地的時     間以及內容的正確性都是不能保證的。


既然有了保證可靠傳輸的TCP協議,爲什麼還要非可靠傳輸的UDP協議呢?原因有兩個:


1、可靠的傳輸是要付出代價的,對數據內容的正確性的檢驗必然會佔用計算機處理時間和網絡帶寬。因此TCP的傳輸效率不如UDP高。


2、許多應用中並不需要保證嚴格的傳輸可靠性,比如視頻會議系統,並不要求視頻音頻數據絕對正確,只要能夠連貫就可以了。所以在這些場景下,使用UDP更合適些。


5、URL訪問網上資源


1、URL對象代表統一資源定位器,是指向互聯網“資源”的指針。它是用協議名、主機、端口和資源組成,即滿足如下格式:


     protocol://host:port/resourceName


     http://www.crazyit.org/index.php


2、通過URL對象的一些方法可以訪問該URL對應的資源:


     String getFile():獲取該URL的資源名


     String getHost():獲取主機名


     String getPath():獲取路徑部分


     int   getPort():獲取端口號


public static void main(String[] args) throws IOException
    {
        URL url = new URL("https://i.cnblogs.com/EditPosts.aspx?opt=1");
        String file = url.getFile();
        System.out.println(file);
        String host = url.getHost();
        System.out.println(host);
        int port = url.getPort();
        System.out.println(port);
        String query = url.getQuery();
        System.out.println(query);
        String protocol = url.getProtocol();
        System.out.println(protocol);
    }


執行結果:


1 /EditPosts.aspx?opt=1
2 i.cnblogs.com
3 -1
4 opt=1
5 https


上面展示了URL對象的常用方法,下面來看看URL最重要的兩個方法:openConnection()、openStream()


public static void main(String[] args) throws IOException
    {
        URL url = new URL("http://www.baidu.com");
        URLConnection connection = url.openConnection();
        InputStream is = connection.getInputStream();
        OutputStream os = new FileOutputStream("c:/data.txt");
        byte[] buffer = new byte[1024];
        int flag = 0;
        while (-1 != (flag = is.read(buffer, 0, buffer.length)))
        {
            os.write(buffer, 0, flag);
        }
        os.close();
        is.close();
    }
1、代碼第4行openConnection()該方法用於返回URLConnection對象,表示到URL所引用的遠程連接。


2、代碼第5行getInputStream方法,用於返回從此打開的連接讀取的輸入流。


3、後面的代碼就是我們已經很熟悉的從輸入流中讀到數據,再通過輸出流寫入文件。


4、執行的結果就是我們通過瀏覽器訪問http://www.baidu.com,百度服務器返回的內容。


5、這裏是文本文件,我們將後綴修改爲html,然後用瀏覽器訪問,這樣看起來更直觀:


6、InetAddress


 JAVA提供了InetAddress類來代表IP地址。


public static void main(String[] args) throws IOException
    {
        InetAddress address = InetAddress.getLocalHost();
        System.out.println(address);
        address = InetAddress.getByName("www.baidu.com");
        System.out.println(address);
        
    }



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