会话的原理,我本来想写一篇文章作说明,但是现在已经有一篇文章把原理性的东西解释清楚了,我在这里不再作这部分的重复,可以参见这里:
关于采用UDP协议进行打洞以进行P2P会话的原理,我本来想写一篇文章作说明,但是现在已经有一篇文章把原理性的东西解释清楚了,我在这里不再作这部分的重复,可以参见这里:
私有地址/端口和公有地址/端口:我们知道,现在大部分网络采用的都是NAPT(Network Address/Port Translator)了,这个东东的作用是一个对外的对话在经过NAT之后IP地址和端口号都会被改写,在这里把一次会话中客户自己认为在使用的IP地址和端口号成为私有地址/端口,而把经过NAPT之后被改写的IP地址和端口号称为公有地址/端口.或者可以这么理解,私有地址/端口是你家里人对你的昵称而公有地址/端口则是你真正对外公开的名字.如何获得用户的私用地址/端口号,这个很简单了,而要得到公有地址/端口号就要在连接上另一台机器之后由那台机器看到的IP地址和端口号来表示.
客户端首先得到自己的私有地址/终端,然后向server端发送登陆请求,server端在得到这个请求之后就可以知道这个client端的公有地址/终端,server会为每一个登陆的client保存它们的私有地址/端口和公有地址/端口.
OK,下面开始关键的打洞流程.假设client A要向client B对话,但是A不知道B的地址,即使知道根据NAT的原理这个对话在第一次会被拒绝,因为client B的NAT认为这是一个从没有过的外部发来的请求.这个时候,A如果发现自己没有保存B的地址,或者说发送给B的会话请求失败了,它会要求server端让B向A打一个洞,这个B-A的会话意义在于它使NAT B认为A的地址/端口是可以通过的地址/端口,这样A再向B发送对话的时候就不会再被NAT B拒绝了.打一个比方来说明打洞的过程,A想来B家做客,但是遭到了B的管家NAT B的拒绝,理由是:我从来没有听我家B提过你的名字,这时A找到了A,B都认识的朋友server,要求server给B报一个信,让B去跟管家说A是我的朋友,于是,B跟管家NAT B说,A是我认识的朋友,这样A的访问请求就不会再被管家NAT B所拒绝了.简而言之,UDP打洞就是一个通过server保存下来的地址使得彼此之间能够直接通信的过程,server只管帮助建立连接,在建立间接之后就不再介入了.
好了,原理性的东西解释到这里,附件中有一个完整的P2P演示程序,命令行模式下,包括server端和client端,在运行的时候首先启动server端,然后打开几个client端分别登陆,之后彼此之间就可以相互通信了.程序在本机上测试通过,也就是测试的环境server和client都是一台机器,还没有在不同的机器上测试过,不知道会不会有问题:)
建立穿越NAT设备的p2p的TCP连接只比UDP复杂一点点,TCP协议的打洞从协议层来看是与UDP的打洞过程非常相似的。尽管如此,基于TCP协议的打洞至今为止还没有被很好的理解,这也造成了对其提供支持的NAT设备不是很多。在NAT设备支持的前提下,基于TCP的打洞技术实际上与基于UDP的打洞技术一样快捷、可靠。实际上,只要NAT设备支持的线p技术的健壮性将比基于UDP的技术的更强一些,因为TCP协议的状态机给出了一种标准的方法来精确的获取某个TCP session的生命期,而UDP协议则无法做到这一点。
实现基于TCP协议的p2p打洞过程中,最主要的问题不是来自于TCP协议,而是来自于来自于应用程序的API接口。这是由于标准的伯克利(Berkeley)套接字的API是围绕着构建客户端/服务器程序而设计的,API允许TCP流套接字通过调用connect()函数来建立向外的连接,或者通过listen()和accept函数接受来自外部的连接,但是,API不提供类似UDP那样的,同一个端口既可以向外连接,又能够接受来自外部的连接。而且更糟的是,TCP的套接字通常仅允许建立1对1的响应,即应用程序在将一个套接字绑定到本地的一个端口以后,任何试图将第二个套接字绑定到该端口的操作都会失败。
为了让TCP打洞能够顺利工作,我们需要使用一个本地的TCP端口来监听来自外部的TCP连接,同时建立多个向外的TCP连接。幸运的是,所有的主流操作系统都能够支持特殊的TCP套接字参数,通常叫做SO_REUSEADDR,该参数允许应用程序将多个套接字绑定到本地的一个endpoint(只要所有要绑定的套接字都设置了SO_REUSEADDR参数即可)。BSD系统引入了SO_REUSEPORT参数,该参数用于区分端口重用还是地址重用,在这样的系统里面,上述所有的参数必须都设置才行。
假定客户端A希望建立与B的TCP连接。我们像通常一样假定A和B已经与公网上的已知服务器S建立了TCP连接。服务器记录下来每个联入的客户端的公网和内网的endpoints,如同为UDP服务的时候一样。从协议层来看,TCP打洞与UDP打洞是几乎完全相同的过程。
2、S将B的公网和内网的TCP endpoint返回给A,同时,S将A的公网和内网的endpoint发送给B。
3、客户端A和B使用连接S的端口异步地发起向对方的公网、内网endpoint的TCP连接,同时监听各自的本地TCP端口是否有外部的连接联入。
4、A和B开始等待向外的连接是否成功,检查是否有新连接联入。如果向外的连接由于某种网络错误而失败,如:连接被重置或者节点无法访问,客户端只需要延迟一小段时间(例如延迟一秒钟),然后重新发起连接即可,延迟的时间和重复连接的次数可以由应用程序编写者来确定。
5、TCP连接建立起来以后,客户端之间应该开始鉴权操作,确保目前联入的连接就是所希望的连接。如果鉴权失败,客户端将关闭连接,并且继续等待新的连接联入。客户端通常采用先入为主的策略,只接受第一个通过鉴权操作的客户端,然后将进入p2p通信过程不再继续等待是否有新的连接联入。
与UDP不同的是,使用UDP协议的每个客户端只需要一个套接字即可完成与服务器S通信,并同时与多个p2p客户端通信的任务,而TCP客户端必须处理多个套接字绑定到同一个本地TCP端口的问题,如图所示。
现在来看更加实际的一种情景,A与B分别位于不同的NAT设备后面,并且假定端口号是TCP协议的端口号,而不是UDP的端口号。客户端向彼此公网endpoint发起连接的操作,会使得各自的NAT设备打开新的洞允许A与B的TCP数据通过。如果NAT设备支持TCP打洞操作的话,一个在客户端之间的基于TCP协议的流通道就会自动建立起来。如果A向B发送的第一个SYN包发到了B的NAT设备,而B在此前没有向A发送SYN包,B的NAT设备会丢弃这个包,这会引起A的连接失败或无法连接问题。而此时,由于A已经向B发送过SYN包,B发往A的SYN包将被看作是由A发往B的包的回应的一部分,所以B发往A的SYN包会顺利地通过A的NAT设备,到达A,从而建立起A与B的p2p连接。
从应用程序的角度来看,在进行TCP打洞的时候都发生了什么呢?假定A首先向B发出SYN包,该包发往B的公网endpoint,并且被B的NAT设备丢弃,但是B发往A的公网endpoint的SYN包则通过A的NAT到达了A,然后,会发生以下的两种结果中的一种,具体是哪一种取决于操作系统对TCP协议的实现:
(1)A的TCP事先会发现收到的SYN包就是其发起连接并希望联入的B的SYN包,通俗一点来说就是说曹操,曹操到的意思,本来A要去找B,结果B自己找上门来了。A的TCP协议栈因此会把B做为A向B发起连接connect的一部分,并认为连接已经成功。程序A调用的异步connect()函数将成功返回,A的listen()等待从外部联入的函数将没有任何反映。此时,B联入A的操作在A程序的内部被理解为A联入B连接成功,并且A开始使用这个连接与B开始p2p通信。
由于收到的SYN包中不包含A需要的ACK数据,因此,A的TCP将用SYN-ACK包回应B的公网endpoint,并且将使用先前A发向B的SYN包一样的序列号。一旦B的TCP收到由A发来的SYN-ACK包,则把自己的ACK包发给A,然后两端建立起TCP连接。简单的说,第一种,就是即使A发往B的SYN包被B的NAT丢弃了,但是由于B发往A的包到达了A。结果是,A认为自己连接成功了,B也认为自己连接成功了,不管是谁成功了,总之连接是已经建立起来了。
(2)另外一种结果是,A的TCP实现没有像(1)中所讲的那么智能,它没有发现现在联入的B就是自己希望联入的。就好比在机场接人,明明遇到了自己想要接的人却不认识,误认为是其它的人,安排别人给接走了,后来才知道是自己错过了机会,但是无论如何,人已经接到了任务已经完成了。然后,A通过常规的listen()函数和accept()函数得到与B的连接,而由A发起的向B的公网endpoint的连接会以失败告终。尽管A向B的连接失败,A仍然得到了B发起的向A的连接,等效于A与B之间已经联通,不管中间过程如何,A与B已经连接起来了,结果是A和B的基于TCP协议的p2p连接已经建立起来了。
第一种结果适用于基于BSD的操作系统对于TCP的实现,而第二种结果更加普遍一些,多数linux和windows系统都会按照第二种结果来处理。
有一点需要说明,在我看来所谓的端口有两种形式,一种是主动连接的,一种是被动连接的.也就是说当我去连接某服务器的某端口的时候,我自身也会开启一个端口,这样才能进行通讯.我们一般知道的都是被动连接的端口,而主动连接的端口是由系统随机分配的.不信的话你可以打开一个网页,然后开启CMD窗口输入netstat -an,你会发现有一个或者几个信息,意思就是本地的XXX端口连接到远程的80端口(Web服务),我说的也就是这个意思了.但,实际情况却更复杂,本地开的端口在外部的访问不到的,因为从本地端口发送的数据要经过路由,而路由经过分析包后知道是建立连接,所以路由又开了一个端口用于接收外部的包,那么自己的端口(内网端口)和路由开的端口(外网端口)会形成一个映射,是这个样子.
两个电脑A和B与服务器S,A和B都与S建立连接,此时有两个SOCKET,A和S算一个(叫做S_AS),B和S算一个(叫做S_BS),这两个都设置了端口复用
A和B分别创建新的SOCKET(设置端口复用)并调用listen(),就是A创建新的SOCKET绑定到S_AS的端口上监听(内网端口),B也一样
此时A和B分别去连接对方,就是,A去连接S_BS的外网端口,B去连接S_AS的外网端口,至少有一方可以连接到另一方,连接建立.
做过网络编程的人都应该知道,TCP之所以可靠是因为在建立连接的时候要经过三次握手(当然还有其他因素),要事先打好招呼,这三个数据包分别叫做SYN/ACK/RST(说错了别怪我),由于A和B都是处在内网,彼此相隔两个路由器(自己这边一个,对方那边一个),建立连接的时候自己发送的SYN包能通过自己的路由,却不能通过对方的路由,所以包被丢弃,而此时对方也发送一个SYN包过来,因为自己已经发送了SYN包,所以自己这边的路由会认为对方发来的SYN包是回应我的SYN包,所以不会丢弃包,继续传递给自己,而自己也会把对方发来的包当做回应自己的包,所以做处理(当然不是正常的三次握手,SYN和SYN),还会发送ACK给对方,然后对方给我RST包,再然后,连接建立......
在服务器的配置文件“AnyChatCoreServer.ini”中网络配置部分,“RoutingPolicy”字段表示了P2P数据路由传输策略的配置信息,可取值分别表示:
2P2P直传模式,NAT穿透成功的用户之间互传,穿透失败的用户由服务器转发,该策略适用于局域网使用;(默认)
3P2P路由模式,P2P网格传输,由服务器以房间为单位,根据当前房间各用户NAT穿透情况、网络带宽等情况,动态生成一份网格路由表,流媒体数据按路由表传输,该策略适用于互联网使用。(目前还处于测试阶段)
该模式下所有数据均由服务器转发,客户端之间不进行P2P网络连接和数据传输,适用于局域网带宽充足、要求低延迟的应用场景,该模式下对服务器的带宽要求较高,但延迟较小。
该模式下,客户端之间会互相尝试P2P连接,如果P2P连接成功,则数据走P2P通道传输,如果P2P连接失败,则数据走服务器转发,该模式相对于“服务器转发模式”,将节约一部分服务器端的网络带宽,而且延迟也相对较低,适合于互联网上同一个房间在线用户)的应用场景,因为如果在线人数过多,将会造成用户端的网络拥塞。举一个极限情况下的例子:如果一个房间10个用户,而且用户之间P2P全部是可以连通的,则其中一人的数据需要复制9份,分别传给其它9个用户,这种情况下对服务器几乎无网络带宽压力,而用户端的网络带宽占用却很高。
P2P路由模式是一种适用于大规模即时通讯应用(如同一个房间上百人的视频聊天室、网络视频在线互动直播等)的数据传输模式,目前在网络电视、在线直播等非实时性领域应用较多,其基本原理是数据从A用户传递出来,传到B用户,然后B用户再传给C用户,而不需要A用户直接传给C用户。使用该模式将极大的优化网络带宽压力,让数据走P2P传输,较少的占用服务器带宽的同时,又不会阻塞用户端的网络通道,但其副作用便是延迟的成倍增加。目前网络电视直播便是采用P2P路由模式,但是在播放前均会缓冲30s-60s的数据,然后才开始播放,目前国内很少有产品能实现即时通讯领域应用P2P路由模式,AnyChat便首开先河,在国内率先推出及时通信领域的P2P路由模式应用,将延迟控制在1-3s,该项技术的成功应用,将使得AnyChat的核心竞争力更加增强。
AnyChat针对可不经过服务器中转的音视频应用,采用了P2P通信技术,该技术的核心在于防火墙的穿越。使用P2P通信技术,可以大大的减轻系统服务器的负荷,并成几何倍数的扩大系统的容量,且并不会因为在线用户数太多而导致服务器的网络阻塞。支持UPNP协议,自动搜索网络中的UPNP设备,主动打开端口映射,提高P2P通信效率。AnyChat采用佰锐科技拥有自主知识产权的“MultiPath”P2P网络路由算法,将服务器上的用户组成一个P2P互通的网络,流媒体数据在用户之间传递,减少对服务器的网络带宽占用,实现了一个高性能P2P网络核心。传统的P2P网络应用(如P2P在线影院)所采用的算法需要长时间(如30秒,或更长)的缓冲,不适合即时通讯领域所要求的低延迟的目标,“MultiPath”P2P网络路由算法便是针对即时通讯领域专门设计的P2P网络算法,它保留了P2P网络原有的网络带宽优势,同时又极大的降低了中间的缓冲时间。
在P2P路由模式下,有两项重要的配置参数“RoutingTTL”和“RoutingMTN”,客户可根据应用进行调节,这两项配置参数的详细说明如下:
RoutingTTL:流媒体数据经过网格传输时的最大生存期,每经过一个中间用户转发,生成期减一,为0将不再继续转发,该配置项当RoutingPolicy=3时有效,设置较大时,会较大的减轻服务器带宽压力,但会带来末端用户接收数据延迟时间增加的后果。
RoutingMTN:流媒体数据经过网格传输时,中间节点最大包转发路数(通俗的讲,就是任意节点最多可服务的后续节点个数,如当设置为4时,表示任意用户可向其它4个用户转发数据),该配置项当RoutingPolicy=3时有效,设置较大时,会较大的减轻服务器带宽压力,但会占用用户较多的出口带宽(因为需要向其它用户转发数据),当用户本身网络状况较差时,会影响后续用户的接收效果。
最近对p2p(peer to peer)技术十分感兴趣,以前用VB的时候曾尝试过学习穿透NAT方面的知识,很可惜那时候并没有成功(由于我当时的兴趣并不大),现在大学开始教 C++,突然间对p2p技术产生兴趣,这有很多方面的原因
现在基本上很多网络应用的软件都涉及p2p技术(QQ,PPS,对战平台...),p2p技术旨在于摒弃以前只能从服务器获得资源的观念,每台电脑都是一个peer,都可以从其他peer上获取自己想要的资源,而同时自己也在向他人共享自己的资源.这里有一个很大的优势就是可以极大程度节省服务器的带宽.
打个比喻,优酷和pps,一个是基于服务器-客户端的模式,一个是p2p技术,优酷要想为用户提供高清视频只能通过优化视频压缩(例如最新的H.264)和增大自身服务器带宽.而pps完全不用担心带宽问题,只要用户数量多的话基本上可以满速观看视频. 在这里在停停,pps采用的是rmvb压缩封装,体积比h264flv大上十倍,但是pps依然可以流畅观看.这就是p2p技术的优势.
当然,我感兴趣的不是p2p在网络视频方面的应用,而是他的穿透NAT的技术,只需要提供一个服务器(当然在p2p下服务端本身可以是客户端)就能令两台或多台处于不同局域网内的电脑通信.另一方面这也算是我学习C++网络编程的入门口.
在中国大部分用户都使用路由器或交换器之类的其他NAT设备来共享网络,这使得不同内网的用户之间的交流变得十分困难,p2p技术的出现确实另其变得可行和简便.
首先,在写这第二篇文章时我对现今的p2p技术的成熟度仍不完全了解,基于udp协议的p2p技术可以很确定的说已经完全成熟了,但基于tcp协议的p2p技术是否成熟在我这几天的搜索资料中仍然未能得知.虽然最近得到了一份通过p2p使用tcp协议传输文件的源码,但其真实性仍然未检测,由于有许多可能会影响实验成败的干扰因素(例如NAT设备类型的不同,其结果可能不同),我想我会在接下来的时间主要去验证tcp应用于p2p的可行性.
可能有很多人问,现在不是有很多软件采用p2p技术传输文件么.这说明tcp用于p2p是可以的.但至少我搜索的资料中很少这方面的消息.我想现在用于文件可靠传输有两个方法(就我知道而言,听说还有raw等其他方法),一个或许就是tcp,这是传输协议上实现的,另一个就是利用udp模仿tcp的确保文件准确完整传输的功能(大概是什么滑动窗口?).
或许还有人不知道NAT是什么,NAT是英文Network Address Translators的缩写,翻译过来就是网络地址转化器,为什么会出现NAT呢?主要是因为ipv4提供的全球唯一ip已经日渐枯竭,也就是ipv4提供的(x.x.x.x)的地址已经不足以让全球每一台电脑都拥有唯一的ip地址,所以就有NAT的出现(当然,是先出现了NAT才开始慢慢枯竭,因为人们已经预料到ip迟早会用完),NAT可使多台电脑使用同一个全球唯一ip,(当然最近ipv6就要出了).
而且,类似路由等NAT设备还可以防止内网主机受到外网的攻击,这也就是我们需要穿透NAT的原因,,因为路由只允许内网用户主动连接外网用户,而不允许外网用户主动连接内网用户
需注意的是只有留下记录后外网特定方向的数据包(上面第四条的方向)才可以传给内网机器,而且这条记录只能由内网用户先向外网发送第一个数据包才可以产生.最重要的是这条记录只能用于123.123.123.123:123,其他地址发来的数据包NAT是会抛弃掉的!
了解到这点就可以知道外网和内网的通讯的十分简单的,只要内网用户事先知道服务器的地址,而且先向服务器请求服务就可以建立连接了!
但是内网与内网的用户该如何实现通讯??? 试想一下,就算你事先知道对方的外网ip,但是你发过去的消息会被对方NAT抛弃掉,好吧,你说可以两个人同时向对方发包,但你画出图来看看会发现也是实现不了的!
试想一下,如果clientA和clientB都同时向对方的 520端口发送数据包(当然,两边的NAT都会抛弃掉他),虽然两边都会留下记录,但是由于NAT修改了端口号为某个数,这样导致下面两条记录:
这两条记录明显不能使clientA和clientB建立起连接,因为双方的NAT都将只接收对方来自520端口的数据包,而对方发送数据包时NAT都会将原始的端口改为62000,75000(这两个数是随机的),这样当然不会建立起连接!
再回过来想想,如果有一个处在外网的服务器可以同时记录下双方的端口号的话,这样A与B的通讯不是可以建立了么!!!!
P2P、P2C 、O2O 、B2C、B2B、 C2C,每天看着这些常见又陌生的名词,如果有人跟你说让你解释它的含义,金融的小伙伴们是不是瞬间石化了,是不是欲言又止了,哑口无言了,它的概念意义你真的懂吗?下面真正的了解下它们的含义和区别吧!
P2P 借贷是一种将非常小额度的资金聚集起来借贷给有资金需求人群的一种民间小额借贷模式。P2P 是“Peer-to-Peer”的简写,个人对个人的意思,P2P 借贷指个人通过第三方平台(P2P 公司)在收取一定服务费用的前提下向其他个人提供小额借贷的金融模式。
第一种是纯线P,在这种平台模式上纯粹进行信息匹配,帮助资金借贷双方更好的进行资金匹配,但缺点明显,这种线上模式并不参与担保;
第二种是债权转让模式,平台本身先行放贷,再将债权放到平台进行转让,很明显能让企业提高融资端的工作效率,但容易出现资金池,不能让资金充分发挥效益。
O2O 是目前微信二维码营销的超火概念,即 online To Offline,也即将线下商务的机会与互联网结合在了一起,让互联网成为线下交易的前台。
这样线下服务就可以用线上来揽客,消费者可以用线上来筛选服务,还有成交可以在线上结算,很快达到规模。
O2O 的优势在于把网上和网下的优势完美结合。通过网购导购机,把互联网与地面店完美对接,实现互联网落地。让消费者在享受线上优惠价格的同时,又可享受线下贴身的服务。同时,O2O 模式还可实现不同商家的联盟。
O2O 营销模式的核心是在线预付,在线支付不仅是支付本身的完成,是某次消费得以最终形成的唯一标志,更是消费数据唯一可靠的考核标准。其是对提供 online 服务的互联网专业公司而言,只有用户在线上完成支付,自身才可能从中获得效益,
B2C 是 Business-to-Customer 的缩写,而其中文简称为“商对客”。“商对客”是电子商务的一种模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。这种形式的电子商务一般以网络零售业为主,主要借助于互联网开展在线C 即企业通过互联网为消费者提供一个新型的购物环境——网上商店,消费者通过网络在网上购物、在网上支付。
B2B (也有写成 BTB)是指企业对企业之间的营销关系,它将企业内部网,通过 B2B 网站与客户紧密结合起来,通过网络的快速反应,为客户提供更好的服务,从而促进企业的业务发展(Business Development)。近年来 B2B 发展势头迅猛,趋于成熟。
B2B 是指进行电子商务交易的供需双方都是商家(或企业、公司),她(他)们使用了互联网的技术或各种商务网络平台,完成商务交易的过程。电子商务是现代 B2Bmarketing 的一种具体主要的表现形式。
1. 买卖:B2B 网站平台为消费者提供质优价廉的商品,吸引消费者购买的同时促使更多商家的入驻。
2. 合作:与物流公司建立合作关系,为消费者的购买行为提供最终保障,这是 B2B 平台硬性条件之一。
阿里巴巴是国内也是全球最大的 B2B 电子商务网站。是中小企业首选的 B2B 平台,主要提供“诚信通”服务,但由于所有用户基本上都是“诚信通”客户。所以没有专业的电子商务运营能力和做阿里巴巴的其它推广业务,很难取得显著效果。
中国制造网是 B2B 电子商务行业网站后起之秀,干净的网站风格,实用的网站类容,深受用户喜爱。虽然位居中国 B2B 网站行业第三位,但由于“百销通”付费用户还不算多,听说效果还算不错,推荐做电子商务的企业尝试一下。
是由中国互联网新闻中心主办的 B2B 贸易平台。提供多种样式的广告服务,但网站以免费普通会员居多,好好运营商铺,效果还可以。反正不要钱,建议多注册一个 B2B 平台尝试一下。
C2c 实际是电子商务的专业用语,是个人与个人之间的电子商务。C2c 即消费者间 ,因为英文中的 2 的发音同 to,所以 c to c 简写为 C2c。c指的是消费者,因为消费者的英文单词是 Customer (Consumer),所以简写为c,而 C2C 即 Customer (Consumer) to Customer (Consumer)。C2C 的意思就是个人与个人之间的电子商务。比如一个消费者有一台电脑,通过网络进行交易,把它出售给另外一个消费者,此种交易类型就称为 C2C 电子商务。
毫无疑问,淘宝在 C2C 领域的领先地位暂时还没有人能够撼动。然而,淘宝却也不得不承受这份领先带来的沉甸甸压力。在领先与压力之间,淘宝在奋力往前走
P2C 即 Production to Consumer 简称为商品和顾客,产品从生产企业直接送到消费者手中,中间没有任何的交易环节。是继 B2B、B2C、C2C 之后的又一个电子商务新概念。在国内叫做:生活服务平台。
P2C 具体表现为:如果哪天家乐福、沃尔玛、大中电器等这些零售业巨头也进军电子商务,通过互联网开展商务活动,这种商务活动的可能性一直是存在的,并且随着互联网技术的平台发展,还会向中小企业逐步渗透。
P2C 把老百姓日常生活当中的一切密切相关的服务信息,如房产、餐饮、交友、家政服务、票务、健康、医疗、保健等聚合在平台上,实现服务业的电子商务化。
该理论是国内首个 P2C 互联网金融服务,对债权转让企业进行资质审核、实地考察,筛选出具有投资价值的优质债权项目在平台上向投资者公开;并提供在线投资的交易平台,实时为投资者生成具有法律效力的债权转让及服务协议;监督企业的项目经营,管理评估风险,确保投资者资金安全。
B2C 是 Business to consumer 是商家对个人,这个就很多了卓越、当当、京东等等都是。
结构:没有永远在线的服务器,任意端系统/结点之间可直接通信,高度可伸缩,难于管理 混合结构:既有中心服务器存在,又有对等端间的直接通信 2.为
如果你是一名资深的比特币矿工或商人,你一定听说过POW和POS,但是当前在国内,却几乎没有人明白这到底是
,也几乎没有相关的中文资料,小编吐血撰写,是为了让大家更好理解这些概念。 读完本文,相信会让...
通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的
客户端在无论以何种有效的公网ip都无法访问的问题。虽 然目前已经发展出多种穿越NAT...
通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的
如果你是一名资深的比特币矿工或商人,你一定听说过POW和POS,但是当前在国内,却几乎没有人明白这到底是
,也几乎没有相关的中文资料,小编吐血撰写,是为了让大家更好理解这些概念。 读完本文,...
呢?我将结合自己的理解,为大家全面解释一下,这些令人费解的词汇。B=Business...
易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程 前言 互联网金融(ITFIN)就是互联网技术和金融功能的有机结合,依托大数据和云计算在开放的互联网平台上形成的功能化金融业态...
通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的
O2O与B2B、B2C、C2C之间的区别 收藏到:7 时间:2014-12-16 文章来源:马海祥博客 访问次数:6682 O2O引用较多的一种解释是:O2O(online To Offline)即线上到线下,其核心是把线上的消费者带到现实的商店中...
,银联的支付清算包括清分和资金划拨两个环节。清分是指对交易日志中记录的成功交易,逐笔计算交易本金及交易费用(手续费、分润等),然后按清算对象汇总扎差习惯应收或应付金额,简言之,就是搞清楚...
SNS,全称Social Networking Services,即社会性网络服务,专指旨在帮助人们建立社会性网络的互联网应用服务。也应加上目前社会现有已成熟普及的...严格
总所周知就算你家网速是千兆的,在百度网盘里下东西也就一二百kb,这是因为百度有意限速让更多的用户购买会员以提速。今天百度网盘新推出的下载提速功能...那么这个下载提速的原理是
Redis Cluster架构优化在《全面剖析Redis Cluster原理和应用》中,我们已经详细剖析了现阶段Redis Cluster的缺点: 无中心化架构 Gossip消息的开销 不停机升级困难 无法根据统计区分冷热数据 客户端的挑战 ...


