1. 程式人生 > >基礎複習4-網路

基礎複習4-網路

一、網路的集中工作模式:

1.專用伺服器結構(Server-Based)

又稱為“工作站/檔案伺服器”結構,由若干太微機工作站與一臺或多型檔案伺服器通過通訊線路連線起來組成工作站存取伺服器檔案,共享儲存裝置。

2.客戶機/伺服器模式(client/server)

   其中一臺或幾臺較大的計算機集中進行共享資料庫的管理和存取,稱為伺服器,而將其它的應用處理工作分散到網路中其他微機上去做,構成分散式的處理系統。

3.對等式網路(Peer-to-Peer)

   在對等式網路結構中,沒有專用伺服器,每一個工作站既可以既可以起客戶機作用也可以起伺服器作用。

二、網路通訊協議:

計算機網路中實現通訊必須有一些約定即通訊協議,對速率、傳輸程式碼、程式碼結構、傳

輸控制步驟、出錯控制等指定標準。

網路通訊結構:

為了使兩個結點之間能進行對話,必須在它們之間建立通訊工具(即介面),使彼此之間能進行資訊交換。介面包括兩部分:

硬體裝置:實現結點之間的資訊傳送(網絡卡)

軟體裝置:規定雙方進行通訊的約定協議

                              OSI的七層模型

 

 

三、IP地址的分配:32位,由4個8位的二進位制陣列成,圓點隔開

IP地址被分為A、B、C、D、E五類,A類用八位表示網路地址。

 

四、埠

五、InetAdress類方法:

  

         

六、URL類方法

       

七、URLEncoder、URLDecoder相關方法

八、HttpURLConnection相關方法

九、套接字Socket(裝的埠號和IP地址)(readLine()、accept()方法會阻塞)

TCP/IP裡面服務端和客戶端擁有不同的Socket,因為Socket裝的是埠號和IP地址,所以服務端和客戶端擁有不同額Socket裝自己的埠號和IP地址

                             

十、傳輸層協議(TCP/IP、 UDP)--------交通工具

TCP/IP(打電話,只有通了才能開始交流ServerSocket、Socket,有伺服器和客戶端概念)

IP:Internet Protocol 網路協議,支撐主機之間通訊的基本協議,如果需要實現主機之間訊息安全傳輸,通常會結合TCP協議共同使用,全稱為TCP/IP  都屬於傳輸層協議

TCP傳輸控制協議,能保證資料訊息在主機之間安全傳輸,三次握手,四次揮手是一個安全傳輸資料協議,所以一般用於對資料傳輸的準確性,安全性較高的應用,但是效率較低,比如:視屏通話

 

伺服器(ServerSocket)/客戶端(Socket):要求通訊雙方之間必須存在一個伺服器

使用:client->1、new Socket(“伺服器地址”,伺服器埠);

2、獲取輸入流socket.getInpustStream()

Server->1、new ServerSocket(伺服器埠);

2、接受客戶端Socket,socket = server.accept();

3、獲取輸出流socket.getOutputStream

TCP/IP實現群發原理:client1傳送1份給交換機,交換機發送1份給伺服器,伺服器傳送n份給交換機,交換機發送n份給n個客戶端

 

UDP資料廣播實現群發原理:client1傳送1份給交換機,交換機發送1份給伺服器,伺服器傳送1份給交換機,交換機發送n份給n個客戶端

UDP -》(需要  群聊組播地址(D類地址) 實現群發)IP一共有ABCDE類地址

 

MulticastSocket.joinGroup(groupId);

 

 

 

UDP(快遞,收不收得到不管,發出去就行DatagramSocket、DatagramPacket,只有資料的接收方和傳送方,建立socket時傳送方可以不用定義埠,直接發給埠,接收方建立socket時要定義埠)

UDP:User Datagram Protocol 使用者資料報協議,無法保證資料的安全性,但是可以提高資料傳輸的效率

//飛秋識別訊息的基本格式   埠號2425
static final String BASE_FORMAT = "1:100:狗蛋:徘徊在牛A和牛C之間的人:32:";

使用:Send->1、建立網路通道new DatagramSocket();

2、建立資料報包New DatagramPacket(

msg.getBytes(),

0,

msg.getBytes().length,

InetAddress.getByName(“接收方IP地址”),

接收方埠);

3、socket.send(packet);

Receiver->1、new DatagramSocket (傳送方埠);

2、建立空的資料報包準備接收讀取到的資料packet = new Packet(b, 1024)【如果b陣列不夠大,可能造成資料接受不全】

Socket.receiver(packet),

接受到的資料str = new String(packet.getData(),

packet.getOffset(),

packet.getLength())

傳送廣播:MulticastSocket(飛秋)

  1. 建立多播網路通道socket = new MulticastSocket();
  2. 將通道加入多播地址socket.joinGroup(InetAddress.getByName("226.81.9.8"));

將需要傳送的資料打包成資料報包New DatagramPacket(

msg.getBytes(),

0,

msg.getBytes().length,

InetAddress.getByName(“226.81.9.8”),//飛秋組播地址

2425);//飛秋埠

  1. socket.send(packet);

 

 

 

十一、應用層協議(HTTP、FTP、Echo)------交通工具中運送的貨物型別

                          

 

伺服器:

 

客戶端:

區域網聊天室

 

HomeWork:

一 服務端提供一個公開的目錄,裡面包含可以被下載的檔案(全部是標準檔案)

* 如何實現客戶端任意下載指定檔案

 

二 完成一個區域網聊天室

1.能夠群聊(1對多發訊息)

2.能夠實現真正的私聊

3.儲存聊天記錄

4.將所有ip地址與暱稱對應,在顯示訊息時,同時顯示傳送人(暱稱)

map.put("192.168.46.254","mrchai")

 

技術引數:

IO流:訊息傳送與接收,聊天記錄儲存

多執行緒:多多個Socket同時提供通訊服務

Socket程式設計

 

十二、NIO,非阻塞通訊(應用於推送服務)

NIO是jdk1.4之後引入的一套全新的IO API,處理資料的方式不同於傳統IO,傳統IO處理資料的方式以位元組單位;而NIO是以一個Buffer(資料塊)為單位,傳統IO屬於阻塞式(流在讀取資料時如果未讀取到時,程式會處於阻塞狀態);而NIO處理的方式為非阻塞式方式執行(底層原理為訊號的處理),NIO可以在單執行緒的應用中處理多個客戶端請求