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语句

相关文章
相关标签/搜索