1. 程式人生 > >TCP/IP總結

TCP/IP總結

tag 負責 toc 都是 線程 center true 不能 app

.TCP/IP協議概述:

1.TCP/IP模型有四層結構:

①應用層(Application Layer):應用層為用戶提供所需要的各種服務,負責傳送各種最終形態的數據,是直接與用戶打交道的層,典型協議包含HTTPFTP等。

②傳輸層(Transport Layer):傳輸層為應用層實體提供端到端的通信功能,該層定義了兩個主要的協議:傳輸控制協議(TCP)和用戶數據報協議(UDP)。其中,TCP協議提供的是一種可靠的、面向連接的數據傳輸服務;而UDP協議提供的是不可靠的、無連接的數據傳輸服務。

③網絡層(Internet Layer):網絡層主要解決主機到主機的通信問題。該層有四個主要協議:網絡協議(

IP)、地址解析協議(ARP)、互聯網組管理協議(IGMP)和互聯網控制報文協議(ICMP)。其中,IP協議是網絡層最重要的協議。

④鏈路層(Link Layer):鏈路層負責建立電路連接,是整個網絡的物理基礎,典型的協議包括以太網、ADSL等。

2.進行網絡編程主要需要解決兩個問題:

①如何在網絡中找到一臺或多臺主機:可以依靠網絡層的IP解決,即提供主機的IP地址找到主機。

②當通信雙方成功連接後,如何進行可靠的數據傳輸:針對傳輸層進行編程,傳輸層主要的兩個協議是TCPUDP

3.TCPUDP

TCPTranfer Control Protocol):面向連接的,可靠的傳輸協議。

UDPUser Datagram Protocol):無連接的,不可靠的傳輸協議。

.單客戶Socket編程

1.IP地址

①網絡中有多臺計算機,它們必須通過某種標識來區分每一臺機器,這就是IP地址;

IP地址由4個字節共32位二進制數組成,類似於:192.168.0.8

③在網絡尋找某一臺計算機都是依靠它的IP地址(用域名或計算機名定位主機其實也是通過某種服務轉成IP地址後再找到該主機)。

④許多網絡地址被保留用於特殊用途;

0.0.0.0127.0.0.1就是兩個此類地址,第一個稱為缺省路由,後一個是環回地址;

127.0.0.1被保留用於用戶主機的本地IP話務,它被分配給一個特殊接口,即起到閉合電路作用的環回接口。

2.端口

①在一臺物理性的計算機中,往往運行著多個網絡程序,一個IP地址並不足以完整標識一個服務器,因此,端口是機器內部獨一無二的場所;

②一臺計算機上可能同時運行多個網絡程序,IP地址只能確保把數據送到指定的計算機,但不能保證把這些數據傳遞給哪個網絡程序;

③端口使用一個16位的數字來表示,它的範圍是0~655351024以下的端口號保留給預定義的服務,如:http使用80端口;

④網絡間通信其實是在網絡應用程序端口之間進行的。

3.①客戶端

Socket(InetAddress address, int port);

Socket(InetAddress address, int port, boolean stream);

Socket(String host, int prot);

Socket(String host, int prot, boolean stream);

②服務器端:

ServerSocket(int port);

③獲得輸入輸出流,Socket類中的方法

getInputStream,獲得基於當前Socket的輸入流

getOutputStream,獲得基於當前Socket的輸出流

4.Socket編程步驟:

①服務器端創建ServerSocket對象,調用accept方法返回Socket對象。

②客戶端創建Socket對象,通過端口連接到服務器。

③客戶端、服務器端都使用Socket中的getInputStream方法和getOutputStream方法獲得輸入流和輸出流,進一步進行數據讀寫操作。

5.總結:①網絡上的計算機通過IP地址來區分不同的機器;端口是數據的通道,使得多個應用程序在同一主機上進行網絡通信;應用程序由一個IP地址和一個端口號唯一確定。

InetAddress用來描述主機地址;

Socket用來創建兩臺主機之間的連接;

ServerSocket用來偵聽來自客戶端的請求;

Socket通常稱作“套接字”,通常通過“套接字”向網絡發出請求或者應答網絡請求。

.單一服務器對多客戶端:

1.服務器:

①創建套接字。

②將套接字綁定到一個本地地址和端口上。

③將套接字設為監聽模式,準備接收客戶請求。

④等待客戶請求到來;當請求到來後,接受連接請求,返回一個新的對應於此次連接的套接字。啟動線程為當前的連接服務。

⑤返回,等待另一客戶請求。

⑥關閉套接字。

2.客戶端:

①創建套接字。

②向服務器發出連接請求。

③和服務器端進行通信。

④關閉套接字。

3.程序:public class Server {

public static void main(String[] args) throws IOException {

ServerSocket ss = new ServerSocket(10086);

System.out.println("服務器正常啟動。。。");

while(true){

Socket socket = ss.accept();

System.out.println("用戶接入成功。。。");

new ServerThread(socket).start();

}

}

}

TCP/IP總結