《Java TCP/IP Socket編程》讀書筆記(1)

來源:互聯網
上載者:User
1.1 電腦網路、協議和報文

電腦網路是由一組通過通訊通道相互串連的機器組成。我們把這些機器成為主機和路由器。

1、主機是指運行應用程式的電腦,這些應用程式套件組合括網路瀏覽器、即時通訊代理或者檔案共用程式。

2、路由器是指將資訊從一個通訊通道傳遞或者轉寄到另一個通訊通道。

3、通訊通道指將位元組序列從一個主機傳遞到另一個主機的手段。

4、資訊是指電腦建立和解釋的位元組序列。

協議是指相互連信的程式間達成的一種約定,規定了分組報文的交換方式和他們包含的意義。一組協議規定了報文的結構以及怎樣對報文進行解析。

協議也稱協議族。TCP/IP協議族包含IP協議(Internet Protocol,互連網協議)、TCP協議(Transmission Control Protocol,傳輸控制通訊協定)和UDP協議(User Datagram Protocol,使用者資料包通訊協定)。

將各種協議分層組織是一個非常好的方式。

Application:應用程式;Socket:通訊端;Host:主機;Channel:通訊通道;Ethernet:乙太網路;Router:路由器;Network Layer:網路層;Transport Layer:傳輸層。

在TCP/IP協議族中,底層由基礎的通訊通道構成,如乙太網路或數據機撥號連線。這些通道由網路層(network layer)使用,而網路層則完成將分組報文傳輸到它們的目的地址的工作(也就是路由器的功能)。TCP/IP協議族中屬於網路層的唯一協議是IP協議,它使兩個主機間的一系列通訊通道和路由器看起來像是一條單一的主機到主機的通道。

IP協議提供了一種資料報服務:每組分組報文都由網路獨立處理和分發。為了實現這個功能,每個IP報文必須包含一個儲存其目的地址(address)的欄位。IP協議只是一個"儘力而為"(best-effort)的協議:它試圖分發每一個分組報文,但在網路傳輸過程中,偶爾也會發生丟失報文,使報文順序被打亂,或重複發送報文的情況。

IP協議層之上稱為傳輸層(transport layer)。它提供了兩種可選擇的協議:TCP協議和UDP協議。這兩種協議都建立在IP層所提供的服務基礎上,但根據應用程式協議(application protocols)的不同需求,它們使用了不同的方法來實現不同方式的傳輸。TCP協議和UDP協議有一個共同的功能,即定址。回顧一下,IP協議只是將分組報文分發到了不同的主機,很明顯,還需要更細粒度的定址將報文發送到主機中指定的應用程式,因為同一主機上可能有多個應用程式在使用網路。TCP協議和UDP協議使用的地址叫做連接埠號碼(port numbers),都是用來區分同一主機中的不同應用程式。TCP協議和UDP協議也稱為端到端傳輸協議(end-to-end transport protocols),因為它們將資料從一個應用程式傳輸到另一個應用程式,而IP協議只是將資料從一個主機傳輸到另一主機。

TCP協議能夠檢測和恢複IP層提供的主機到主機的通道中可能發生的報文丟失、重複及其他錯誤。TCP協議提供了一個可信賴的位元組流(reliable byte-stream)通道,這樣應用程式就不需要再處理上述的問題。TCP協議是一種連線導向(connection-oriented)的協議:在使用它進行通訊之前,兩個應用程式之間首先要建立一個TCP串連,這涉及到相互連信的兩台電腦的TCP組件間完成的握手訊息(handshake messages)的交換。另一方面,UDP協議並不嘗試對IP層產生的錯誤進行修複,它僅僅簡單地擴充了IP協議"儘力而為"的資料報服務,使它能夠在應用程式之間工作,而不是在主機之間工作。因此,使用了UDP協議的應用程式必須為處理報文丟失、順序混亂等問題做好準備。

1.2 關於地址

1. 在TCP/IP中有兩部分資訊來指定一個程式:連接埠和互連網地址。

2. 互連網地址由位元字組成,由IPV4(32位)和IPV6(128位)兩種形式。

3. 連接埠號碼的範圍是1--65535.

4. 迴環地址:是一種虛擬設備,將發送給他的報文直接返回給寄件者。IPV4的迴環 地址是127.0.0.1,IPV6的迴環地址是0.0.0.0.0.0.0.1 .

5. IPv4地址中的另一種特殊用途的保留地址包括那些"私人用途"的地址。它們包括IPv4中所有以10或192.168開頭的地址,以及第一個數是172,第二個數在16到31的地址。(在IPv6中沒有相應的這類地址)這類地址最初是為了在私人網路中
使用而設計的,不屬於公用互連網的一部分。現在這類地址通常被用在家庭或小 型辦公室中,這些地方通過NAT(Network Address Translation,網路位址轉譯)設 備串連到互連網。

6. 相關的類型的地址包括本地連結(link-local),或稱為"自動設定"地址。IPv4中,
這類地址由169.254開頭,在IPv6中,前16位由FE8開頭的地址是本地連結地
址。這類地址只能用來在串連到同一網路的主機之間進行通訊,路由器不會轉寄這 類地址的資訊。

7. 多播(multicast)地址組成。普通的IP地址(有時也稱為"單播"地址)只與唯一
一個目的地址相關聯,而多播地址可能與任意數量的目的地址關聯。IPv4中的多 播地址在點分格式中,第一個數字在224到239之間。IPv6中,多播地址由FF開始。

1.3 關於名字

首先應該明確的是,使用主機名稱而不使用地址是出於方便性的考慮,這與TCP/IP提供的基本服務是相互獨立的。你也可以不使用名字來編寫和使用TCP/IP應用程式。當使用名字來定位一個通訊終端時,系統將做一些額外的工作把名字解析成地址。有兩個原因證明這額外的步驟是值得的:第一,相對於點分形式(或IPv6中的十六進位數字串),人們更容易記住名字;第二,名字提供了一個間接層,使IP地址的變化對使用者不可見。

名字解析服務可以從各種各樣的資訊源擷取資訊。兩個主要的資訊源是網域名稱系統(DNS,Domain Name System)和本地設定資料庫。DNS是一種分散式資料庫,它將網域名稱映射到真實的互連網地址和其他資訊上。DNS協議[允許串連到互連網的主機通過TCP或UDP協議從DNS資料庫中擷取資訊。本地設定資料庫通常是一種與具體作業系統相關的機制,用來實現本地名稱與互連網地址的映射。

1.4 用戶端和伺服器1.5通訊端

Socket(通訊端)是一種抽象層,應用程式通過它來發送和接收資料,就像應用程式開啟一個檔案控制代碼,將資料讀寫到穩定的儲存空間上一樣。一個socket允許應用程式添加到網路中,並與處於同一個網路中的其他應用程式進行通訊。一台電腦上的應用程式向socket寫入的資訊能夠被另一台電腦上的另一個應用程式讀取,反之亦然。

不同類型的socket與不同類型的底層協議族以及同一協議族中的不同協議棧相關聯。現在TCP/IP協議族中的主要socket類型為流通訊端(sockets sockets)和資料通訊端(datagram sockets)。流通訊端將TCP作為其端對端協議(底層使用IP協議),提供了一個可信賴的位元組流服務。一個TCP/IP流通訊端代表了TCP串連的一端。資料通訊端使用UDP協議(底層同樣使用IP協議),提供了一個"儘力而為"(best-effort)的資料報服務,應用程式可以通過它發送最長65500位元組的個人資訊。一個TCP/IP通訊端由一個互連網地址,一個端對端協議(TCP或UDP協議)以及一個連接埠號碼唯一確定。

Applications:應用程式;TCP sockets:TCP通訊端;TCP ports:TCP連接埠;Socket References:通訊端引用;UDP sockets:UDP通訊端;Sockets bound to ports:通訊端綁定到連接埠;UDP ports:UDP連接埠。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.