自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java Socket編程:基本的術(shù)語(yǔ)和概念

開發(fā) 后端
計(jì)算機(jī)程序能夠相互聯(lián)網(wǎng),相互通訊,這使一切都成為可能,這也是當(dāng)今互聯(lián)網(wǎng)存在的基礎(chǔ)。那么程序是如何通過(guò)網(wǎng)絡(luò)相互通信的呢?這就是我記錄這系列的筆記的原因。

計(jì)算機(jī)程序能夠相互聯(lián)網(wǎng),相互通訊,這使一切都成為可能,這也是當(dāng)今互聯(lián)網(wǎng)存在的基礎(chǔ)。那么程序是如何通過(guò)網(wǎng)絡(luò)相互通信的呢?這就是我記錄這系列的筆記的原因。Java語(yǔ)言從一開始就是為了互聯(lián)網(wǎng)而設(shè)計(jì)的,它為實(shí)現(xiàn)程序的相互通信提供了許多有用API,這類應(yīng)用編程接口被稱為套接字(Socket)。在開始學(xué)習(xí)Java Socket之前我們需要先來(lái)了解一下基本的術(shù)語(yǔ)和概念。

1.計(jì)算機(jī)網(wǎng)絡(luò)

計(jì)算機(jī)網(wǎng)絡(luò)由一組通過(guò)通信信道(Communication channel)相互連接的機(jī)器組成。這些機(jī)器被稱為:主機(jī)(hosts)和路由器(routers):

  • 通信信道 —— 是將字節(jié)序列從一個(gè)主機(jī)傳輸?shù)搅硪粋€(gè)主機(jī)的一種手段(有線、無(wú)線(WiFi)等方式)。
  • 主機(jī) —— 作用是運(yùn)行程序的計(jì)算機(jī)。
  • 路由器 —— 作用是將信息從一個(gè)通信信道傳遞或轉(zhuǎn)發(fā)到另一個(gè)通信信道。

TCP/IP網(wǎng)絡(luò)通信流程圖:

2.分組報(bào)文

  • 分組報(bào)文 —— 在網(wǎng)絡(luò)環(huán)境中由程序創(chuàng)建和解釋的字節(jié)序列。

3.協(xié)議

協(xié)議相當(dāng)于相互通信的一種約定,協(xié)議規(guī)定了分組報(bào)文的交換方式和它們包含意義。

互聯(lián)網(wǎng)所使用的協(xié)議是 TCP/IP 協(xié)議,TCP/IP 協(xié)議族主要包括:

  • IP 協(xié)議(Internet Protocol,互聯(lián)網(wǎng)協(xié)議)
  • TCP 協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)
  • UDP 協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)

IP協(xié)議

  • IP 協(xié)議 —— 是TCP/IP協(xié)議中唯一屬于網(wǎng)絡(luò)層的協(xié)議。將數(shù)據(jù)從一臺(tái)主機(jī)傳輸?shù)搅硪慌_(tái)主機(jī)。
  • IP 協(xié)議 —— 提供了一種數(shù)據(jù)服務(wù):每組分組報(bào)文都有網(wǎng)絡(luò)獨(dú)立處理和分發(fā),類似于信件或包裹通過(guò)郵政系統(tǒng)發(fā)送一樣。
  • IP 協(xié)議 —— 是一個(gè)"盡力而為"(best-effort)的協(xié)議:它試圖分發(fā)每一個(gè)分組報(bào)文,在網(wǎng)絡(luò)傳輸過(guò)程中,偶爾也會(huì)發(fā)生丟失報(bào)文是報(bào)文順序打亂,或者重復(fù)發(fā)送報(bào)文的情況?! ?/li>

在IP協(xié)議層之上是傳輸層(transport layer),它提供了兩種可選的協(xié)議:TCP協(xié)議和UDP協(xié)議,兩種協(xié)議都建立在IP層所提供的服務(wù)基礎(chǔ)上,二者也被稱為"端到端傳輸協(xié)議(end-to-end transport protocol)"根據(jù)應(yīng)用程序協(xié)議(Application protocol)的不同需求,使用了不同的方式傳輸數(shù)據(jù)。二者都有一個(gè)共同的功能:尋址。TCP協(xié)議和UDP協(xié)議使用的地址叫做端口號(hào)(port number),是用來(lái)區(qū)分同一主機(jī)不同應(yīng)用程序的。

TCP 協(xié)議

TCP協(xié)議能夠檢測(cè)和恢復(fù)IP層提供的主機(jī)到主機(jī)的信道中可能發(fā)生的報(bào)文丟失、重復(fù)以及其他錯(cuò)誤。TCP協(xié)議是一種面向連接(connection oriented)協(xié)議:在使用它進(jìn)行通信之前,兩個(gè)應(yīng)用程序之間首先要建立一個(gè)TCP連接,這涉及兩臺(tái)相互通信的主機(jī)的TCP部件間完成的握手消息(handshake message)的交換。

UDP 協(xié)議

UDP協(xié)議并不嘗試對(duì)IP層產(chǎn)生的錯(cuò)誤進(jìn)行修復(fù),它僅僅簡(jiǎn)單拓展了IP協(xié)議,"盡力而為"的數(shù)據(jù)服務(wù),使它能夠在應(yīng)用程序之間工作,而不是在主機(jī)之間工作。使用UDP協(xié)議的應(yīng)用程序需要對(duì)處理報(bào)文丟失、順序混亂等問(wèn)題做好準(zhǔn)備。

4.關(guān)于地址

在TCP/IP協(xié)議中,有兩部分信息用來(lái)定位一個(gè)指定的程序:互聯(lián)網(wǎng)地址(Internet address)和端口號(hào)(port number,范圍1-65535)。前者由IP協(xié)議使用,后者由傳輸協(xié)議(TCP/UDP)對(duì)其進(jìn)行解析。

互聯(lián)網(wǎng)地址有二進(jìn)制數(shù)字組成,有兩種形式:IPv4(32位)和IPv6(128位)。為了方便使用,兩個(gè)版本的IP協(xié)議有不同的表示方法:

  • IPv4地址被表示為一組為4個(gè)十進(jìn)制數(shù),每?jī)蓚€(gè)數(shù)之間用圓點(diǎn)隔開,這種表示方法叫做:點(diǎn)分形式(dotted-quad)。
  • IPv6地址的16個(gè)字節(jié)由幾組16進(jìn)制的數(shù)字表示,這些十六進(jìn)制數(shù)之間有分號(hào)隔開,每組數(shù)字分別代表了地址中的兩個(gè)字節(jié)。

回環(huán)地址

回環(huán)地址(loopback address)是被分配的一個(gè)特殊的回環(huán)接口(loopback interface),回環(huán)接口是一種虛擬設(shè)備,它的功能只是簡(jiǎn)單的把發(fā)送給它的報(bào)文立即返回給發(fā)送者。如IPv4中的:127.0.0.1

5.域名系統(tǒng)(Domain Name System,DNS)和本地配置數(shù)據(jù)庫(kù)

DNS是一種分布式數(shù)據(jù)庫(kù),它將向www.baidu.com這樣的域名映射到真實(shí)的互聯(lián)網(wǎng)地址和其他信息上。DNS協(xié)議允許連接到互聯(lián)網(wǎng)的主機(jī)通過(guò)TCP或者UDP協(xié)議從DNS數(shù)據(jù)庫(kù)獲取信息。

本地配置數(shù)據(jù)庫(kù)通常是一種與具體操作系統(tǒng)相關(guān)的機(jī)制,用來(lái)實(shí)現(xiàn)本地與互聯(lián)網(wǎng)地址的映射?! ?/p>

6.客戶端和服務(wù)器

客戶端(client)和服務(wù)器(server)這兩個(gè)術(shù)語(yǔ)分別代表了兩種角色:

  • 客戶端是通信的發(fā)起者,而服務(wù)器程序則被動(dòng)等待客戶端發(fā)起通信,并對(duì)其作出響應(yīng)。
  • 客戶端和服務(wù)器組成了應(yīng)用程序。

7.什么是Socket(套接字)

Socket(套接字)是一種抽象層,應(yīng)用程序通過(guò)它來(lái)發(fā)送和接受數(shù)據(jù),就像應(yīng)用程序打開一個(gè)文件句柄,將數(shù)據(jù)讀寫到穩(wěn)定的存儲(chǔ)器上一樣。

在TCP/IP協(xié)議族中的主要Socket類型為:

  • 流套接字(stream socket):傳輸層使用TCP協(xié)議,提供了一個(gè)可信賴的字節(jié)流服務(wù)
  • 數(shù)據(jù)報(bào)套接字(datagram socket):傳輸層使用UDP協(xié)議,提供了一個(gè)"盡力而為"的數(shù)據(jù)報(bào)服務(wù),最長(zhǎng)一次可以發(fā)送65500個(gè)字節(jié)的數(shù)據(jù)。

 

參考資料:《TCP/IP Socket in Java》

原文鏈接:http://www.cnblogs.com/IPrograming

【編輯推薦】

  1. Java集合類ArrayList循環(huán)中刪除特定元素
  2. Java集合框架總結(jié):Set接口的使用
  3. Java的位移運(yùn)算巧方法
  4. Java7的一個(gè)新類JLayer:裝飾的Swing組件
  5. 關(guān)于Java中內(nèi)存溢出的解決辦法
責(zé)任編輯:林師授 來(lái)源: 晴天豬的博客
相關(guān)推薦

2019-06-19 09:00:00

GitLinux開源

2012-03-19 11:41:30

JavaSocket

2013-05-27 14:05:16

2009-08-21 14:47:39

C#網(wǎng)絡(luò)編程

2009-06-11 10:00:05

Java Socket

2017-07-10 16:40:09

2009-09-07 04:29:28

SDI MDI

2010-06-21 18:04:08

2017-05-02 14:45:11

深度學(xué)習(xí)機(jī)器學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)

2010-04-19 10:08:46

Oracle視圖

2010-06-08 16:11:10

SPI總線協(xié)議

2016-10-31 20:46:22

函數(shù)式編程Javascript

2009-08-18 10:34:31

Java入門基本概念

2010-07-20 09:05:08

Perl類

2023-06-05 07:56:10

線程分配處理器

2015-09-08 10:06:18

JavaSocket編程通信

2010-03-22 10:42:37

Java Socket

2015-03-10 13:43:00

JavaSocket編程編程

2010-03-19 16:51:53

Java Socket

2017-07-12 14:23:25

遺傳算法java自然選擇
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)