計算機網絡是鏈接全球計算機資源的網絡環境能夠資源共享,通訊等最簡單的網絡形式由兩臺計算機組成。java
協議:在網絡上進行數據通訊(數據交換)時所使用的規範(標準)。不一樣層具備各自不一樣的協議。編程
物理層:二進制傳輸,肯定如何在通訊信道上傳遞比特流;
數據鏈路層:增強物理層的傳輸功能,創建一條無差錯的傳輸線路;
網絡層:在網絡中數據到達目的地有不少線路,網絡層就是負責找出最佳的傳輸路;
傳輸層:傳輸層爲源端計算機到目的端計算機提供可靠的數據傳輸服務,隔離網絡的上下層協議,使得上層網絡應用的協議與下層無關;
會話層:在兩個相互通訊的應用進程之間創建、 組織和協調其相互之間的通訊;
表示層:處理被傳送數據的表示問題,也就是信息的語法和語義,若有必要將使用一種通用的格式在多種格式中進行轉換;
應用層:爲用戶的應用程序提供網絡通訊服務;數組
OSI(Open System Interconnection)參考模型並非物理實體上存在這七層,這只是功能的劃分,是一個抽象的參考模型。進行網絡通訊時,每層提供本層對應的功能;
1)通訊實體的對等層之間不容許直接通訊,
它們之間是虛擬通訊,實際通訊在最底層完成;
2)各層之間是嚴格單向依賴;
3)上層使用下層提供的服務 — Service user;
4)下層向上層提供服務 — Service provider。
5)對等層實體之間虛擬通訊;
6)下層向上層提供服務,實際通訊在最底層完成。服務器
OSI各層所使用的協議
1)應用層:遠程登陸協議Telnet、文件傳輸協議FTP(網上下載一個軟件或者資料的時候就會使用該協議)、 超文本傳輸協議HTTP(使用較多,經過IE瀏覽一個網頁的時候就使用該協議)、域名服務DNS(使用較多,經過網絡訪問一個計算機通常不使用該主機的IP地址,而是經過該主機的域名訪問)、簡單郵件傳輸協議SMTP(經過Foxmail發送郵件)、郵局協議POP3等(經過Foxmail收郵件);網絡
2)傳輸層:傳輸控制協議TCP、用戶數據報協議UDP;
TCP:面向鏈接的可靠的傳輸協議;在利用TCP協議進行通訊的時候,首先要通過三步握手創建起通訊雙方的鏈接,一旦鏈接創建後就能夠通訊了。TCP協議提供數據確認和重傳的機制,保證數據必定可以到達數據接收端。像打電話。socket
UDP:是無鏈接的,不可靠的傳輸協議;採用UDP協議進行通訊時,不須要創建鏈接,能夠直接向一個IP地址發送數據,至因而不是可以收到不能保證,發送過程當中數據有可能丟失、IP地址可能不存在、再者IP地址表明的主機沒有運行等緣由均可能致使不能接收到數據。tcp
TCP/IP:有保障,成本較高。是一種可靠的協議,通訊以前先創建鏈接。適合較小的數據量,保障通訊質量。
如:上傳和下載文件。
UDP:無保障,通訊成本較低。是一種不可靠的協議,通訊以前不會創建鏈接,發數據包中包含目的地的地址。適合於大數據量,不介意丟失少許數據的通訊。
如:視頻聊天ide
3)網絡層:網際協議IP、Internet互聯網控制報文協議ICMP、Internet組管理協議IGMP。大數據
IP地址:最重要的路由尋址
1)網絡中每臺主機都必須有一個唯一的IP地址;
2)IP地址是一個邏輯地址;
3)因特網上的IP地址具備全球惟一性;
4)32位,4個字節,經常使用點分十進制的格式表示,例如:192.168.0.16。計算機網絡
端口:用來標識惟一的應用程序使用一個16位的數字來表示,它的範圍是0--65535
,1024如下的端口號保留給預約義的服務。例如:23-telnet,21-ftp,25-郵件傳輸,http使用80端口
套接字:表明通訊節點
1)服務器程序編寫:
①調用ServerSocket(int port)建立一個服務器端套接字,並綁定到指定端口上;
②調用accept(),監聽鏈接請求,若是客戶端請求鏈接,則接受鏈接,返回通訊 套接字;
③調用Socket類的getOutputStream()和getInputStream獲取輸出流和輸入流, 開始網絡數據的發送和接收;
④最後關閉通訊套接字。
2)客戶端程序編寫:
①調用Socket()建立一個流套接字,並鏈接到服務器端;
②調用Socket類的getOutputStream()和getInputStream獲取輸出流和輸入流, 開始網絡數據的發送和接收;
③最後關閉通訊套接字。
1)服務器端基於UDP編程:
a)調用DatagramSocket(int port)建立一個數據報套接字,並綁定到指定端口上;
b)調用DatagramPacket(byte[] buf, int length),創建一個字節數組以接收客戶端 的UDP包 ;
c)調用DatagramSocket類的receive(),接收客戶端的UDP包並放在上一步建立的 數據包中; 經過調用DatagramPacket的getData獲取數據。
d)建立數據包,用來存放發送給客戶端響應數據。
int port = dp.getPort(); InetAddress address=dp.getAddress(); String msg=new Date().toString(); buf=msg.getBytes(); DatagramPacket dp1=new DatagramPacket(buf,buf.length,address,port);
e)向客戶端發送數據包DatagramSocket.send(DatagramPacket)
f)最後關閉數據報套接字。其中第四,五是選擇性的。
2)客戶端程序編寫:
a)調用DatagramSocket()建立一個數據報套接字。
b)調用DatagramPacket(byte[] buf, int length,
InetAddress address, int port),創建要發送的UDP包;
包含發給服務器的數據,服務器地址,服務器的端口。
c)調用DatagramSocket類的send(dp),發送UDP包;
d)建立數據包,用來存放服務器端返回響應數據。
DatagramPacket dp1=new DatagramPacket(buf,buf.length);
e)接收服務器端響應數據ds.receive(dp1);
f)最後關閉數據報套接字。
其中第四,五是選擇性的。
URI:統一資源標識符
URL:統一資源定位符
http://www.baidu.com
URN:統一資源命名符
喜歡我就關注個人公衆號吧~