xmpp即時通信的筆記(摘抄)

xmpp的使用:程序員

即時通信 instant messaging(IM) :  -->實時收發信息!算法

即時通信相關軟件: **QQMSNGoogleTalkAIMJabber(XMPP別名),百度hi,網易泡泡,盛大圈圈,淘寶旺旺,易信,iChat**等等。數據庫

即時通信另外一類是: **企業用IM,簡稱EIM*,如:E話通,UCEC企業即時通訊軟件,UcSTAR、商務通**等。瀏覽器

 一.前奏: >> 傳輸協議梳理,Socket終極奧義,CoreData緩存

## 傳輸協議梳理安全

**Q:傳輸層協議和傳輸協議同樣嗎?**服務器

> A:傳輸層(Transport Layer)是OSI中最重要, 最關鍵的一層,是惟一負責整體的數據傳輸和數據控制的一層.傳輸層提供端到端的交換數據的機制,檢查分組編號與次序。傳輸層對其上三層如會話層等,提供可靠的傳輸服務,對網絡層提供可靠的目的地站點信息.網絡

### 傳輸層中的協議併發

> 傳輸層(又稱主機到主機傳輸層)爲應用層提供會話和數據報通訊服務。傳輸層承擔OSI傳輸層的職責。傳輸層的核心協議是TCPUDPTCP提供一對一的、面向鏈接的可靠通訊服務。TCP創建鏈接,對發送的數據包進行排序和確認,並恢復在傳輸過程當中丟失的數據包。與TCP不一樣,UDP提供一對一或一對多的、無鏈接的不可靠通訊服務。app

> 不管是TCP/IP仍是在OSI參考模型中,任意相鄰兩層的下層爲服務提供者,上層爲服務調用者。下層爲上層提供的服務可分爲兩類:面向鏈接服務和無鏈接服務。

1. 面向鏈接的網絡服務

> 面向鏈接的網絡服務又稱爲虛電路(Virtual Circuit)服務,它具備網絡鏈接創建、數據傳輸和網絡鏈接釋放三個階段。是按順序傳輸可靠的報文分組方式,適用於指定對象、長報文、會話型傳輸要求。

> 面向鏈接服務以電話系統爲模式。要和某我的通話,首先拿起電話,撥號碼,通話,而後掛斷。一樣在使用面向鏈接的服務時,用戶首先要創建鏈接,使用鏈接,而後釋放鏈接。鏈接本質上像個管道:發送者在管道的一端放入物體,接收者在另外一端按一樣的次序取出物體;其特色是收發的數據不只順序一致,並且內容也相同。

2. 無鏈接的網絡服務

> 無鏈接網絡服務的兩實體之間的通訊不須要事先創建好一個鏈接。無鏈接網絡服務有3種類型:數據報(Datagram)、確認交付(Confirmed Delivery)與請求回答(Request reply)。

> 無鏈接服務以郵政系統爲模式。每一個報文(信件)帶有完整的目的地址,而且每個報文都獨立於其餘報文,由系統選定的路線傳遞。在正常狀況下,當兩個報文發往同一目的地時,先發的先到。可是,也有可能先發的報文在途中延誤了,後發的報文反而先收到;而這種狀況在面向鏈接的服務中是絕對不可能發生的。

#### 傳輸控制協議(TCP

1. TCP全稱是Transmission Control Protocol,中文名爲傳輸控制協議,它能夠提供可靠的、面向鏈接的網絡數據傳遞服務。傳輸控制協議主要包含下列任務和功能:

- 確保IP數據報的成功傳遞。

- 對程序發送的大塊數據進行分段和重組。

- 確保正確排序及按順序傳遞分段的數據。

- 經過計算校驗和,進行傳輸數據的完整性檢查。

- 根據數據是否接收成功發送確定消息。經過使用選擇性確認,也對沒有收到的數據發送否認確認。

爲必須使用可靠的、基於會話的數據傳輸程序,如客戶端/服務器數據庫和電子郵件程序,提供首選傳輸方法。

2. TCP工做原理

*TCP的鏈接創建過程*又稱爲TCP*三次握手*

- 首先發送方主機向接收方主機發起一個創建鏈接的同步(SYN)請求;

- 接收方主機在收到這個請求後向發送方主機回覆一個同步/確認(SYN/ACK)應答;

- 發送方主機收到此包後再向接收方主機發送一個確認(ACK),此時TCP鏈接成功創建.

一旦初始的三次握手完成,在發送和接收主機之間將按順序發送和確認段。關閉鏈接以前,TCP使用相似的握手過程驗證兩個主機是否都完成發送和接收所有數據。

 

TCP工做過程比較複雜,包括的內容以下。

 

*TCP鏈接關閉*:發送方主機和目的主機創建TCP鏈接並完成數據傳輸後,會發送一個將結束標記置1的數據包,以關閉這個TCP鏈接,並同時釋放該鏈接佔用的緩衝區空間。

*TCP重置*TCP容許在傳輸的過程當中忽然中斷鏈接。

*TCP數據排序和確認*:在傳輸的過程當中使用序列號和確認號來跟蹤數據的接收狀況。

*TCP重傳*:在TCP的傳輸過程當中,若是在重傳超時時間內沒有收到接收方主機對某數據包的確認回覆,發送方主機就認爲此數據包丟失,並再次發送這個數據包給接收方。

*TCP延遲確認*TCP並不老是在接收到數據後當即對其進行確認,它容許主機在接收數據的同時發送本身的確認信息給對方。

*TCP數據保護*(校驗):TCP是可靠傳輸的協議,它提供校驗和計算來實現數據在傳輸過程當中的完整性。

- TCP與端口號

> TCPUDP都是IP層面的傳輸協議,是IP與上層之間的處理接口。TCPUDP端口號被設計來區分運行在單個設備上的多重應用程序的IP地址。因爲同一臺計算機上可能會運行多個網絡應用程序,因此計算機須要確保目標計算機上接收源主機數據包的軟件應用程序的正確性,以及響應可以被髮送到源主機的正確應用程序上。該過程正是經過使用TCPUDP端口號來實現的。

> TCPUDP頭部分,有源端口目標端口段,主要用於顯示發送和接收過程當中的身份識別信息。IP 地址和端口號合在一塊兒被稱爲套接字TCP端口比較複雜,其工做方式與UDP端口不一樣。UDP端口對於基於UDP的通訊做爲單一消息隊列和網絡端點來操做,而全部TCP通訊的終點都是惟一的鏈接。每一個TCP鏈接由兩個端點惟一識別。因爲全部TCP鏈接由兩對 IP 地址和TCP端口惟一識別(每一個所連主機都有一個地址/端口對),所以每一個TCP服務器端口都能提供對多個鏈接的共享訪問

#### 用戶數據報協議(UDP

> UDP全稱是User Datagram Protocol,中文名爲用戶數據報協議。UDP 提供無鏈接的網絡服務,該服務對消息中傳輸的數據提供不可靠的、最大努力傳送。這意味着它不保證數據報的到達,也不保證所傳送數據包的順序是否正確。

也許你會問:既然UDP是一種不可靠的網絡協議,那麼還有什麼使用價值或必要呢?其實否則,在有些狀況下UDP可能會變得很是有用。由於UDP具備TCP所可望不可即的速度優點。雖然TCP中植入了各類安全保障功能,可是在實際執行的過程當中會佔用大量的系統開銷,無疑使速度受到嚴重的影響。反觀UDP因爲排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應用來完成,極大地下降了執行時間,使速度獲得了保證。

傳輸協議概念普遍的多,基本上全部的協議都是作數據傳輸的。

#### **Q:常見的傳輸協議有哪些?**

A:

*ARP(Address Resolution Protocol)地址解析協議*  

  它是用於映射計算機的物理地址和臨時指定的網絡地址。

    啓動時它選擇一個協議(網絡層)地址,並檢查這個地址是否已經有別的計算機使用,

    若是沒有被使用,此結點被使用這個地址,若是此地址已經被別的計算機使用,

    正在使用此地址的計算機會通告這一信息,只有再選另外一個地址了。

*DHCP(Dynamic Host Configuration Protocol)動態主機配置協議*  

  它是在TCP/IP網絡上使客戶機得到配置信息的協議,它是基於BOOTP協議,

    並在BOOTP協議的基礎上添加了自動分配可用網絡地址等功能。

    這兩個協議能夠經過一些機制互操做。

    DHCP協議在安裝TCP/IP協議和使用TCP/IP協議進行通迅時,

    必須配置IP地址、子網掩碼、缺省網關三個參數,這三個參數能夠手動配置,也可使用DHCP自動配置。

 

*Discard Protocol拋棄協議*  

  它的做用就是接收到什麼拋棄什麼,它對調試網絡狀態的必定的用處。

    基於TCP的拋棄服務,若是服務器實現了拋棄協議,服務器就會在TCP端口9檢測拋棄協議請求,

    在創建鏈接後並檢測到請求後,就直接把接收到的數據直接拋棄,直到用戶中斷鏈接。

    而基於UDP協議的拋棄服務和基於TCP差很少,檢測的端口是UDP端口9,功能也同樣。

  

  *Echo Protocol協議*  

  這個協議主要用於調試和檢測中。這個協議的做用也十分簡單,接收到什麼原封發回就是了。

    它能夠基於TCP協議,服務器就在TCP端口7檢測有無消息,若是有發送來的消息直接返回就是了。

    若是使用UDP協議的基本過程和TCP同樣,檢測的端口也是7

  

  *FTP(File Transfer Protocol)文件傳輸協議*  

  它是一個標準協議,是在計算機和網絡之間交換文件的最簡單的方法。

    像傳送可顯示文件的HTTP和電子郵件的SMTP同樣,FTP也是應用TCP/IP協議的應用協議標準。

    FTP一般用於將網頁從創做者上傳到服務器上供人使用,

    而從服務器上下傳文件也是一種很是廣泛的使用方式。

    做爲用戶,您能夠用很是簡單的DOS界面來使用FTP

    也可使用由第三方提供的圖形界面的FTP來更新(刪除,重命名,移動和複製)服務器上的文件。

    如今有許多服務器支持匿名登陸,容許用戶使用FTPANONYMOUS做爲用戶名進行登陸,

    一般可以使用任何口令或只按回車鍵。

  

  *HDLC(High-Level Data Link Control)高層數據鏈路協議*  

  它是一組用於在網絡結點間傳送數據的協議。

    HDLC中,數據被組成一個個的單元(稱爲幀)經過網絡發送,並由接收方確認收到。

    HDLC協議也管理數據流和數據發送的間隔時間。HDLC是在數據鏈路層中最普遍最使用的協議之一。

    如今做爲ISO的標準,HDLC是基於IBMSDLC協議的,SDLC被普遍用於IBM的大型機環境之中。

    HDLC中,屬於SDLC的被稱爲通響應模式(NRM)

    在一般響應模式中,基站(一般是大型機)發送數據給本地或遠程的二級站。

    不一樣類型的HDLC被用於使用X.25協議的網絡和幀中繼網絡,

    這種協議能夠在局域網或廣域網中使用,不管此網是公共的仍是私人的。

  

  *HTTP1.1(Hypertext Transfer Protocol Vertion 1.1)超文本傳輸協議-版本1.1*  

  它是用來在Internet上傳送超文本的傳送協議。

    它是運行在TCP/IP協議族之上的HTTP應用協議,它可使瀏覽器更加高效,使網絡傳輸減小。

    任何服務器除了包括HTML文件之外,還有一個HTTP駐留程序,用於響應用用戶請求。

    您的瀏覽器是HTTP客戶,向服務器發送請求,

    當瀏覽器中輸入了一個開始文件或點擊了一個超級連接時,瀏覽器就向服務器發送了HTTP請求,

    此請求被送往由IP地址指定的URL。駐留程序接收到請求,在進行必要的操做後回送所要求的文件。

  

  *HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協議*  

  它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操做,

    並返回網絡上傳送回的結果。

    HTTPS實際上應用了Netscape的徹底套接字層(SSL)做爲HTTP應用層的子層。

   (HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通訊。)

    SSL使用40 位關鍵字做爲RC4流加密算法,這對於商業信息的加密是合適的。

    HTTPSSSL支持使用X.509數字認證,若是須要的話用戶能夠確認發送者是誰。

  

  *ICMP(Internet Control Message Protocol)Internet控制信息協議*  

  它是一個在主機和網關之間消息控制和差錯報告協議。

    ICMP使用IP數據報,但消息由TCP/IP軟件處理,對於應用程序使用者是不可見的。

    在被稱爲Catenet的系統中,IP協議被用做主機到主機的數據報服務。網絡鏈接設備稱爲網關。

    這些網關經過網關到網關協議(GGP)相互交換用於控制的信息。

    一般,贍養或目的主機將和源主機通訊,例如,爲報告在數據報過程當中的錯誤。

    爲了這個目的才使用了ICMP,它使用IP作於底層支持,好象它是一個高層協議,

    而實際上它是IP的一部分,必須由其它IP模塊實現。

    ICMP消息在如下幾種狀況下發送:當數據報不能到達目的地時,

    當網關的已經失去緩存功能,當網關可以引導主機在更短路由上發送。

    IP並不是設計爲設計爲絕對可靠,這個協議的目的是爲了當網絡出現問題的時候返回控制信息,

    而不是使IP協議變得絕對可靠,並不保證數據報或控制信息可以返回。

    一些數據報仍將在沒有任何報告的狀況下丟失。

  

  *IMAP4(Internet Mail Access Protocol Version 4)Internet郵件訪問協議-版本4   *  它是用於從本地服務器上訪問電子郵件的標準協議,它是一個C/S模型協議,

    用戶的電子郵件由服務器負責接收保存。

    IMAP4改進了POP3的不足,用戶能夠經過瀏覽信件頭來決定是否是要下載此信,

    還能夠在服務器上建立或更改文件夾或郵箱,刪除信件或檢索信件的特定部分。

    在用戶訪問電子電子郵件時,IMAP4須要持續訪問服務器。

    POP3中,信件是保存在服務器上的,當用戶閱讀信件時,全部內容都會被馬上下載到用戶的機器上。

    咱們有時能夠把IMAP4當作是一個遠程文件服務器,把POP3能夠當作是一個存儲轉發服務。

  

 *IPv6(Internet Protocol Version 6)Internet協議-版本6*  

  它是Internet協議的最新版本,已做爲IP的一部分並被許多主要的操做系統所支持。

    IPv6也被稱爲「Ipng」(下一代IP),它對現行的IP(版本4)進行重大的改進。

    使用IPv4IPv6的網絡主機和中間結點能夠處理IP協議中任何一層的包。

    用戶和服務商能夠直接安裝IPv6而不用對系統進行什麼重大的修改。

    相對於版本4,新版本的最大改進在於將IP地址從32位改成128位,

    這一改進是爲了適應網絡快速的發展對IP地址的需求,也從根本上改變了IP地址短缺的問題。

    簡化IPv4首部字段被刪除或者成爲可選字段,減小了通常狀況下包的處理開銷以及IPv6首部佔用的帶寬。

    改進IP 首部選項編碼方式的修改致使更加高效的傳輸,在選項長度方面更少的限制,

    以及未來引入新的選項時更強的適應性。加入一個新的能力,

    使得那些發送者要求特殊處理的屬於特別的傳輸流的包可以貼上標籤,

    好比非缺省質量的服務或者實時服務。

    爲支持認證,數據完整性以及(可選的)數據保密的擴展都在IPv6中說明。

    本文描述IPv6基本首部以及最初定義的IPv6 擴展首部和選項。

    還將討論包的大小問題,數據流標籤和傳輸類別的語法,以及IPv6對上層協議的影響。

    IPv6 地址的格式和語法在其它文章中單獨說明。IPv6版的 ICMP 是全部IPv6應用都須要包含的。

  

  *IPX/SPX(Internetwork Packet Exchange/Sequential PacketExchange)*

*   互連網包交換/順序包交換*  

  它是由Novell提出的用於客戶/服務器相連的網絡協議。

    使用IPX/SPX協議能運行一般須要NetBEUI支持的程序,經過IPX/SPX協議能夠跨過路由器訪問其餘網絡。

  

  *MIME(Multi-Purpose Internet Mail Extensions)多功能Internet郵件擴展*  

  MIME是擴展SMTP協議,是1991Nathan BorensteinIETF提出。

    在傳輸字符數據的同時,容許用戶傳送另外的文件類型,

    如聲音,圖像和應用程序,並將其壓縮在MIME附件中。

    所以,新的文件類型也被做爲新的被支持的IP文件類型。

  

  *POP3(Post Office Protocol Version 3)郵局協議-版本3*  

  它是一個關於接收電子郵件的客戶/服務器協議。

    電子郵件由服務器接收並保存,在必定時間以後,由客戶電子郵件接收程序檢查郵箱並下載郵件。

    POP3它內置於IENetscape瀏覽器中。另外一個替代協議是交互郵件訪問協議(IMAP)

    使用IMAP您能夠將服務器上的郵件視爲本地客戶機上的郵件。

    在本地機上刪除的郵件還能夠從服務器上找到。

    E-mail 能夠被保存在服務器上,而且能夠從服務器上找回。

  

 * PPP(Point to Point Protocol)點對點協議*  

  它是用於串行接口的兩臺計算機的通訊協議,

    是爲經過電話線鏈接計算機和服務器而彼此通訊而制定的協議。

    網絡服務提供商能夠提供您點對點鏈接,這樣提供商的服務器就能夠響應您的請求,

    將您的請求接收併發送到網絡上,而後將網絡上的響應送回。

    PPP是使用IP協議,有時它被認爲是TCP/IP協議族的一員。

    PPP協議可用於不一樣介質上包括雙絞線,光纖和衛星傳輸的全雙工協議,它使用HDLC進行包的裝入。

    PPP協議既能夠處理同步通訊也能夠處理異步通訊,能夠容許多個用戶共享一個線路,

    又可發進行SLIP協議所沒有的差錯控制。

  

  *RIP(Routing Infomation Protocol)路由信息協議*  

  RIP是最先的路由協議之一,並且如今仍然在普遍使用。

    它從類別上應該屬於內部網關協議(IGP)類,它是距離向量路由式協議,

    這種協議在計算兩個地方的距離時只計算通過的路由器的數目,

    若是到相同目標有兩個不等速或帶寬不一樣的路由器,可是通過的路由器的個數同樣,

    RIP認爲二者距離同樣,而實際傳送數據時,很明顯一個快一個慢,

    這就是RIP協議的不足之處,而OSPF在它的基礎上克服了RIP的缺點。

  

  *SLIP(Serial Line Internet Protocol)串行線路Internet協議*  

  它是一個TCP/IP協議,它用於在兩臺計算機之間通訊。

    一般計算機與服務器鏈接的線路是串行線路,而不是如T1的多路線路或並行線。

    您的服務器提供商能夠向您提供SLIP鏈接,這樣他的服務器就能夠響應您的請求,

    並將請求發送到網絡上,而後將網絡返回的結果送至您的計算機。

    現已逐漸被功能更好的PPP點對點協議所取代。

  

  *SMTP(Simple Mail Transfer Protocol)簡單郵件傳送協議*  

  它是用來發送電子郵件的TCP/IP協議。它的內容由IETFRFC 821定義。

    另一個和SMTP相同功能的協議是X.400

    SMTP的一個重要特色是它可以在傳送中接力傳送郵件,傳送服務提供了進程間通訊環境(IPCE)

    此環境能夠包括一個網絡,幾個網絡或一個網絡的子網。

    理解到傳送系統(IPCE)不是一對一的是很重要的。

    進程可能直接和其它進程經過已知的IPCE通訊。郵件是一個應用程序或進程間通訊。

    郵件能夠經過鏈接在不一樣IPCE上的進程跨網絡進行郵件傳送。

    更特別的是,郵件能夠經過不一樣網絡上的主機接力式傳送。

  

  *Talk協議*  

  Talk協議能使遠程計算機上的兩個用戶以實時方式進行通訊。

  

  *TCP/IP(Transmission Control Protocol/Internet Protocol)傳輸控制協議/Internet協議*  

  TCP/IP協議起源於美國國防高級研究計劃局。

    提供可靠數據傳輸的協議稱爲傳輸控制協議TCP,比如貨物裝箱單,保證數據在傳輸過程當中不會丟失;

    提供無鏈接數據報服務的協議稱爲網絡協議IP,比如收發貨人的地址姓名,保證數據到達指定的地點。

    TCP/IP協議是互聯網上普遍使用的一種協議,

    使用TCP/IP協議的因特網等網絡提供的主要服務有:

    電子郵件、文件傳送、遠程登陸、網絡文件系統、電視會議系統和萬維網。

    它是Interent的基礎,它提供了在廣域網內的路由功能,並且使Internet上的不一樣主機能夠互聯。

    從概念上,它能夠映射到四層:

    網絡接口層,這一層負責在線路上傳輸幀並從線路上接收幀;Internet層,這一層中包括了IP協議,

    IP協議生成Internet數據報,進行必要的路由算法,

    IP協議實際上能夠分爲四部分:ARPICMPIGMPIP;

    再上向就是傳輸層,這一層負責管理計算機間的會話,這一層包括兩個協議TCPUDP

    由應用程序的要求不一樣可使用不一樣的協議進行通訊;最後一層是應用層,

    就是咱們熟悉的FTPDNSTELNET等。熟悉TCP/IP是熟悉Internet的必由之路。

  

  *TELNET Protocol虛擬終端協議*  

  TELNET協議的目的是提供一個相對通用的,雙向的,面向八位字節的通訊方法,

    它主要的目標是容許接口終端設備的標準方法和麪向終端的相互做用。

    是讓用戶在遠程計算機登陸,並使用遠程計算機上對外開放的全部資源。

  

  *Time Protocol時間協議*  

  該協議提供了一個獨立於站點的,機器可讀的日期和時間信息。

    時間服務返回的是以秒數,是從190011日午夜到如今的秒數。

    設計這個協議的一個重要目的在於,網絡上的許多主機並無時間的觀念,在分佈式的系統上,

    咱們能夠想想,北京的時間和東京的時間如何分呢?

    主機的時間每每能夠人爲改變,並且由於機器時鐘內的偏差而變得不一致,

    所以須要使用時間服務器經過選舉方式獲得網絡時間,讓服務器有一個準確的時間觀念。

    不要小看時間,這對於一些以時間爲標準的分佈運行的程序簡單是過重要了。

    這個協議能夠工做在TCPUDP協議下。

    時間是由32位表示的,是自1900110時到當前的秒數,咱們能夠計算一下,

    這個協議只能表示到2036年就不能用了,可是咱們也知道計算機發展速度這麼快,

    到時候可能就會有更好的協議代替這個協議.

  

  *TFTP(Trivial File Transfer Protocol)小文件傳輸協議*  

  它是一個網絡應用程序,它比FTP簡單也比FTP功能少。

    它在不須要用戶權限或目錄可見的狀況下使用,它使用UDP協議而不是TCP協議。

  

  *UDP(User Datagram Protocol)用戶數據報協議*  

  它是定義用來在互連網絡環境中提供包交換的計算機通訊的協議,

    此協議默認認爲網路協議(IP)是其下層協議。

    UDPTCP的另一種方法,象TCP同樣,UDP使用IP協議來得到數據單元(叫作數據報),不象TCP的是,

    它不提供包(數據報)的分組和組裝服務。

    並且,它還不提供對包的排序,這意味着,程序程序必須本身肯定信息是否徹底地正確地到達目的地。

    若是網絡程序要加快處理速度,那使用UPD就比TCP要好。

    UDP提供兩種不禁IP層提供的服務,它提供端口號來區別不一樣用戶的請求,並且能夠提供奇偶校驗。

    OSI模式中,UDPTCP同樣處於第四層,傳輸層。

  

  *UUCP(UNIX-to-UNIX Copy Protocol)UNIXUNIX拷貝協議*  

  它是一組用於在不一樣UNIX系統之間複製(傳送)文件或傳送用於其它UNIX系統執行命令的一組指令,

    UNIX網絡的基礎。

  

   *X.25協議*  

  它是CCITT標準的通信協議,制定於1976年,用於定義同步傳輸的數據包。

    是國際上分組數據網(PDN)上使用的一種協議。

    它容許不一樣網絡中的計算機經過一臺工做在網絡層的中間計算機進行相互通訊。

  

   *X.400協議*  

  它是一個電子郵件協議,它由ITU-TS制定,它能夠發揮和SMTP相同的功能。

    X.400在歐洲和加拿大使用比較多,它其實是一個標準集,每一個標準的序號都在此400499之間。

    X.400地址可以提供許多SMTP地址所不可以提供的功能,所以X.400的地址會比較長並且比較麻煩。

    X.400的確提供了比SMTP更多的功能,然而這些功能卻不多可以用到。

    X.400的主要部分有如下幾個:用戶代理(UA),消息傳送代理(MTA)和消息傳輸系統(MTS)

   

  *Z39.50協議*  

  它是一個標準的通訊協議,它用於檢索和得到在線數據庫中的著書目錄。

    Z39.50用於在互聯網上檢索圖書館的在線公共訪問目錄(Online Public Access CataloguesOPAC)

    也能夠用於把多個分離的OPAC鏈接起來,它是ANSI/NISO標準

## Socket終極奧義

**Q:本地上的兩個進程如何通訊?**

1. 內存共享

2. 消息隊列

3. 管道  NSPipe NSTask

4. RPC  remote  protocol control

5. 本地Socket

 

**Q:網路上的兩個進程如何通訊?**

- 本地進程間通訊(IPC)經過PID能夠惟一肯定彼此,而後經過共享內存,消息隊列來通訊

- 網絡上的兩個進程肯定彼此須要IP與端口號,經過傳輸層(TCP/UDP)協議進行通訊

socket的特色—\>TCP/UDP 加一個端口綁定

 

因爲端口號每每被進程獨佔,所以**socket通訊**常常與**進程通訊**畫上等號

### Socket原意爲插座,意譯爲套接字

假設電腦是一個大插座,有不一樣的插座型號,socket就是遍及在上面的插孔,能夠爲不一樣的插頭提供服務

這個比喻不恰當的地方是一個插孔可讓多個插頭插進來

 

反過來

 

上述比喻中,服務端進程即爲服務自己,區別一臺主機的不一樣服務則是經過端口來區分

所以只要是在這個特定的端口創建起來的TCP/IP鏈接就應該通往對應的進程

因此惟一肯定這個socket的前提是找到這個插板(主機IP),找到這個插孔(端口)

 

> Socket通訊就是一種肯定了端口號的TCP/IP通訊

上面那句話寫成這樣也要認識:

> Socket通訊與IP通訊差異就是端口肯定,協議肯定

 

端口的打開是雙方的,不少人在C/S結構的TCP鏈接中只注意到S的端口(監聽的),實際上C也開了一個端口,而C端的端口是動態端口,TCP鏈接創建的時候,C端的端口會在三次握手結束後肯定,動態打開一個,這個端口不受用戶/程序員的控制

 

### Ssocket通訊步驟

0. 提供一些服務

1. 將這個服務與本身的IP地址、端口綁定

2. 監放任何到這個IP+端口的TCP請求

3. 接受/拒絕創建這個TCP鏈接

4. 讀寫

5. 斷開TCP鏈接

 

BSD提供了一套底層API來處理這些過程

 

目前基本上互聯網的全部服務都基於socketAPI,所以咱們能夠說一切皆socket

 

### 操練:

GCDAsyncSocket  .XMPP的框架就是用的她

咱們把TCPSocket 叫作 stream   UDP socket 叫作報式Socket 

 動態端口是大於49151

1. 服務器(MAC應用)和客戶端(MAC+iOS)之間可以進行數據傳輸

2. 服務器可以將全部消息轉發給其餘的客戶端

### 即時通訊中除了基本信息,特殊指令如何傳輸?

即時通信相關的指令。在之前這些命令要麼用2進制的形式發送(好比QQ),要麼用純文本指令加空格加參數加換行符的方式發送(好比MSN)。而XMPP傳輸的即時通信指令的邏輯與以往相仿,只是協議的形式變成了XML格式的純文本。

## CoreData

CoreData的本質是經過操做對象來完成對數據庫裏面的數據的操做

 

Objective - Relational Mapping 提供一個XML格式的模型文件 ,用途是用做對象到數據庫表結構的一一映射綁定

缺點 不能直接執行 SQL語句

相關文章
相關標籤/搜索