关于端口109和110的问题,第1张

端口说明:109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,110端口是为POP3(邮件协议3)服务开放的,POP2、POP3都是主要用于接收邮件的,目前POP3使用的比较多,许多服务器都同时支持POP2和POP3。客户端可以使用POP3协议来访问服务端的邮件服务,如今ISP的绝大多数邮件服务器都是使用该协议。在使用电子邮件客户端程序的时候,会要求输入POP3服务器地址,默认情况下使用的就是110端口。

看一下这里,应该能找到你的答案呵呵http://hibaiducom/xintiancn/blog/item/ea6e88227d3bbcf2d7cae217html

先简单介绍一下代理的分类:

代理分:Level 1~Level 5 五个等级;

或者也可以分为3类:·

A 全匿名代理 不改变你的Request

Fields,使服务器端看来就像有个真正的客户浏览器在访问它。当然,你的真实IP是隐藏起来的。服务器的网管不会认为你使用了代理。

B· 普通匿名代理 能隐藏你的真实IP,但会更改你的Request

Fields,有可能会被认为使用了代理,但仅仅是可能,一般说来是没问题的。不过不要受它的名字的误导,其安全性可能比全匿名代理更高,有的代理会剥离你的部分信息(就好比防火墙的Stealth

Mode),使服务器端探测不到你的操作系统版本和浏览器版本。

C· 透明代理(简单代理) 改编你的Request Fields,并会传送真实IP。

你访问的网站会把你看的一清二楚,知道你用了代理,知道代理的IP,也知道你的真实IP。

一般Level3-Level5属于 透明代理; Level 1-Level3 属于匿名代理! 全匿名代理有时也称为超级代理!

不想让网管(国内代理服务器}或者ISP(国外代理服务器)知道我想去哪去过哪,那把你的连接请求用SSL加密就行了

有了匿名功能再加上加密的连接,隐身术终于练成!

制作和使用这个代理需要的软件是CCPROXY 62,STUNNEL,OPENSSL,SOCKSCAP都是免费软件,CC3个用户就够了

假设你已经有了一台远程机器A做代理服务器,你自己的机器为B

在A机上,我们要开一个SOCKS5的本地代理端口,并且用SSL加密他的传输首先,在CCPROXY里启用SOCKS5的代理服务,假设端口是 1080,创建一个用户,验证方式为用户名/密码/IP混合,假设用户名密码都是123,IP为127001,记得顺便把"禁止局域网外用户访问" 勾上,因为远程的B机不会直接访问这个服务,免得老人人来扫密码下面是关键,打开CCPROXYINI文件,修改并确认下面2个参数:

EnableProxyConnection=0

EnableReferer=0

这样别人就不知道你使用了代理,也不知道你从哪儿来好像CC60也支持这两个参数,不过官方是63才在FAQ里面写出来

然后配置STUNEELCONF文件,内容如下:

cert=stunnelpem

key = stunnelpem

taskbar=no #这个参数可以隐藏STUNELL的图标,如果做坏事就用$%#%#

client=no

[socks2ssl]

accept = 80 #在80端口监听,准备接受外部连接

connect = 127001:1080 #连接CCPROXY开的SOCKS5服务端口

把监听端口设为80的原因是极端的假设B机前面的防火墙只允许B机访问80端口,如果没这个限制,随便设一个

代理服务器做好了,我们要配置一下B机这个客户端

首先是客户端的STUNNELCONF

client = yes

[ssl2SOCKS]

accept = 127001:8282 #在本地启用8282端口的SOCKS5代理服务

connect = AAAAAAAAAAAA:80 #连接到你的代理服务器A,地址或者域名+端口

然后设置SOCKSCAP,设置代理类型SOCKS5,地址127001,端口8282,用户密码验证(启动SOCKSCAP会让你输入,就是前面设置的123了),DNS解析选先本地再远程

最后,把你的浏览器,例如IE,拉入SOCKSCAP,可以去 http://proxyjudgeorg/

验证你的匿名度了!通常就是下面这样的结果

REMOTE_HOST=AAAAAAAAAAAA

REMOTE_ADDR=AAAAAAAAAAAA

HTTP_ACCEPT=/

HTTP_ACCEPT_ENCODING=gzip, deflate

HTTP_ACCEPT_LANGUAGE=zh-cn

HTTP_CONNECTION=Keep-Alive

HTTP_HOST=proxyjudgenet

HTTP_REFERER=http://proxyjudgeorg/

HTTP_USER_AGENT=Mozilla/40 (compatible; MSIE 60; Windows NT 51;

Maxthon; SV1)

--------------------------------------------------------------------------------

REMOTE_HOST

Result

IP Addr

Comment

I have no idea because DNS lookup failure

HTTP Env value

Result

NoProxy!

Comment

Like no proxy server

AnonyLevel : 1

REMOTE_HOST that is IP addr is precious

或者B机上面装个个人防火墙例如ZONEALARM,启用它的隐私保护,那么

HTTP_ACCEPT_LANGUAGE

HTTP_USER_AGENT

这些本机信息也都会被隐藏

后记:最初只是通过CCPROXY+STUNNEL建一个HTTP的SSL服务器通道,然后本机也是直接用STUNNEL连接出来的HTTP代理,但是验证匿名度的时候始终是Level2,3,让人很不爽知道后来看了一些关于CCPROXY和SOCKS5的资料,试着转换角度弄一下,终于成功了其实用SOCKSCAP还有一个好处,他可以过滤某些数字开头的IP

跳过代理直接连接,如果你的代理服务器驾在国外,你只要把国内主要的一些IP数字开头例如:20296 61141等等加到那个过滤列表里面,就可以解决国外代理访问国内网站很慢的问题了

HP机器是没有系统光盘的(如果你没有把机器内的系统备份刻出盘来的话)

如果还想用自己正版的VISTA系统,只能F11恢复(电脑买来后如果没有被重新分过区,是一定能F11恢复的)

系统没有大问题的话也可以强行进入桌面试一下,打开任务管理器--文件--新建任务--浏览--windows(Win的系统文件夹)--explorerexe(运行这个文件)

如果没有就重别的VISTA COPY一个过来放到这个文件夹内

在不同的网络环境(带有摄像头/麦克风多媒体设备)中,为两个浏览器实现点对点实时视频/语音通信有什么困难

1、了解对方的媒体格式、支持的最大分辨率和其他媒体信息?

2、要了解彼此的网络,就有可能找到一条通信链路?

3、两个终端还没有建立连接时,如何交换“媒体信息”和“网络信息”呢

为了保证两端都有正确的编码和解码,最简单的方法就是取它们的交集H264

注:有一种特殊的协议叫做Session Description protocol (SDP),可以用来描述上述信息 。

在webrtc中,参与视频通信的双方必须首先交换SDP信息,这样双方才能了解基本的SDP交换过程。

同样,在复杂的网络环境中,要在两端之间建立连接,必须有一个双方都可以访问的链路。

从图中可以看出,他们可以使用公用网段192沟通。

在web brtc通信过程中,这些与网络相关的信息也必须进行交换,以找到共同的交集。这个过程也被称为“网络协商”。

两个终端还没有建立连接时,如何交换“媒体信息”和“网络信息”呢

此时,所谓信号服务器信号服务器应该出现:

如上图所示,两个浏览器可以抽象的上层一层信令服务器(可以是一个或多个,根据实际的应用程序中,如果两个浏览器可以访问公共网络环境,如公共如果没有公共网络环境中,您可以设置一组服务器两端,即信号服务器A和信号服务器B,但这两套信令服务器必须能够相互通信),在信令服务器的帮助下,可以实现上述SDP信息和网络信息的交换。

交换SDP的过程大致如图所示:

1 Amy(假设一个人的名字)通过setLocalDescription方法保存自己的SDP信息,然后通过offer方法发送给信令服务器。

2 信息服务器将Amy的SDP转发给另一端的Bob(另一个虚构的名字),Bob将首先调用setremotedescription来保存Amy的SDP。

3然后Bob调用setLocalDescription方法来保存他的SDP,然后使用answer方法通过信令服务器将他的SDP发送给Amy

4 Amy收到Bob的SDP后,调用setRemoteDescription进行保存,双方完成SDP交换,找到交集。如果他们能达成协议,他们就可以建立一个p2p连接并开始通信。

但现实往往是残酷的。在中国的网络环境下,据统计,至少有一半的网络不能直接连接。我个人认为根本原因是:在互联网发展的早期,绝大多数IP4地址资源都被国外所占据。当轮到中国等发展中国家使用IP地址时,大多数计算机没有公网IP地址,只能通过路由器和交换机进行NAT转换,相当一部分NAT是对称的。基本上,没有办法播放它。在这种情况下,您只能使用前一节提到的转向服务器进行转移。此外,在视频对话框中,通常会有房间(或组)的概念,用来隔离一些服务。这部分逻辑也在信号服务器中实现。对端、信令服务器、stun/转接服务器后,整个1对1实时视频通信顺序图如下:

主要流程如下:

1 双方首先调用getUserMedia打开本地摄像头

2 向信令服务器发送apply_join请求以加入房间

3信令服务器通知我成功加入(joined),同时向其他人广播加入消息(other_joined)

4 第二个端开始创建peerConnection连接

5 PeerB创建报价,同时将SDP保存到本地机器(setLocalDescription),并通过信令服务器将SDP传递给peerA

6 在setLocalDescription之后,PeerB将异步触发“候选网络链接”的集合,这大致决定了它自己所有的NAT映射通过Stun退出。如果Stun返回的NAT是“对称的”,它将基本上无法穿透。再次通过Turn得到中继应答地址,并通过信令服务器将网络候选链接信息发送给peerA(即:启动网络协商)

7 peerA收到peerB的SDP后,开始响应(createAnswer),仍然通过信令服务器将SDP发送给peerB

8 同时,peerA也会开始收集网络候选链路,并通过信令服务器(即网络协商)将自己的网络信息发送给peerB。

通过这种方式,peerA和peerB相互交换了媒体信息和网络信息。如果他们能达成一致(即找到交叉点),他们就能开始沟通。

   原生支持: iOS13开始,使用URLSessionWebSocketTask类可实现像发送HTTP请求一样的WebSocket功能。如果要对Web套接字(包括客户端和服务器支持)进行较低级别的控制,请查看Network框架: https://developerapplecom/documentation/network 。

一、Socket

    是对TCP/IP 协议的封装,本质并不是一个协议,是应用层与 TCP/IP 协议族通信的中间软件抽象层(类似于对底层的封装),它是一组接口,让你在使用的时候更方便操作。

二、WebSocket协议

    是HTML5下一种新的协议,也是基于TCP的一种网络协议,它实现了 浏览器/客户端 与 服务器 全双工(full-duplex)通信——连接成功以后允许服务器或客户端的任何一方主动发送信息给对方。WebSocket协议由两部分组成: 握手 和 数据传输 。Websocket是一个持久化的协议,只需要一次成功的HTTP握手,服务端会一直保留握手成功时的信息,直到客户端或服务端关闭请求。

    创建了WebSocket后,会有一个HTTP请求发送到服务器以发起连接。取得服务器响应后,建立的连接使用HTTP升级,从 HTTP协议 交换为 WebSocket协议 。WebSocket使用了自定义的协议,未加密的连接不再是 http:// ,而是 ws:// ,默认端口为 80 ;加密的连接也不是 https:// ,而是 wss:// ,默认端口为 443 。即,使用标准的HTTP服务器无法实现WebSocket,只有支持WebSocket协议的服务器才能正常工作。一旦WebSocket连接建立后,后续数据都以 帧序列 的形式传输。

    WebSocket协议的特点包括:

    (1)建立在 TCP 协议之上。

    (2)与 HTTP 协议有着良好的兼容性。握手阶段采用 HTTP 协议,默认端口也是80和443,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。如何体现通信高效?WebSocket通信格式没有HTTP协议那么多的固定报头,且不用重复建立连接。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。(什么是同源限制?协议相同,域名相同,端口相同。目的是为了保证用户信息的安全,防止恶意的网站窃取数据。)

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

(7)WebSocket通信协议于2011年被IETF定为标准RFC 6455,WebSocket API被W3C定为标准。

WebSocket如何实现长链接 ?创建了WebSocket后,会有一个HTTP请求发送到服务器以发起连接。取得服务器响应后,建立的连接使用HTTP升级,从HTTP协议交换为WebSocket协议。只需要一次成功的HTTP握手,服务端会一直保留握手成功时的信息,直到客户端或服务端关闭请求。WebSocket之所以能持久连接原因是它运行在TCP协议上,TCP协议自身是长连接协议,所以WebSocket当然可以长连接啦。

WebSocket如何管理连接 ?RFC6455-55意见稿指明:WebSocket协议定义了Control Frame 控制帧。WebSocket的控制帧有: Close 、 Ping 、 Pong 。

Close帧 :发起关闭请求;

Ping帧 :通信发起方确认链路是否畅通的报文;

Pong帧 :通信接收方回应链路是否畅通的报文。

WebSocket在建立连接之后,通信的基本数据帧格式如下图(来源RFC6455-52)没有Http协议那么多固定的报头,且不用重复建立连接,所以通信效率高:

WebSocket连接的生命周期:

CONNECTING :使用Http发起请求,RFC6455-4( https://toolsietforg/html/rfc6455#section-4 )规定了Client和Server的报文格式。Server在响应时使用Http状态码是101(切换协议)。在握手时,WebSocket连接处于CONNECTING状态。

OPEN :握手成功之后,进入OPEN状态。

CLOSING :如果一方发起了CLOSE帧,那么便标志着WebSocket连接进入了CLOSING状态;

CLOSED :当TCP连接关闭之后,那么WebSocet连接便进入了CLOSED状态。

三、WebRTC

    名称源自 网页实时通信 (Web Real-Time Communication)的缩写,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术,由Google、Mozilla和Opera等支持的、免费的开放式项目。通过简单的API为浏览器和移动应用程序提供跨平台的 音视频实时通信 (RTC:Real-Time Communications )功能。WebRTC使得开发者在浏览器无需安装任何插件就可以实现音视频通信。

    WebRTC提供了跨平台的音视频核心技术,包括音视频的采集、编解码、网络传输、显示等功能,支持的平台:Windows、Linux、Mac、Android及iOS。RTCPeerConnection是用于进行WebRTC调用以流式传输视频和音频以及交换数据的API,WebRTC使用RTCPeerConnection(对等连接)在浏览器之间传递 流数据 ,但也需要一种协调通信和发送控制消息的机制,这一过程称为 信令 。信令处理过程需要客户端之间来回传递消息,这个过程在WebRTC里面是没有实现的,需要自己创建。即WebRTC未指定信令方法和协议,需要开发者确保使用安全协议。所有WebRTC组件都必须进行加密,即 WebRTC是安全的 (如何保证安全?)。WebRTC这种技术可以让开发者的精力集中在用户体验上而不是媒体流本身,因为API就会处理好媒体引擎的相关工作。

    WebRTC 10 的重点是提供给开发者更多对媒体、数据通道的控制。而根据此前的提案(见后面的提案连接)显示,下一版本的 WebRTC 将有可能使数据处理脱离主线程。使用 RTCDataChannels 传输数据,相比使用 WebSocket 会有更好的拥塞控制。(该段内容笔者未确认)

参考连接: http://wwwsohucom/a/275427719_458408

提案连接: https://wwww3org/2011/04/webrtc/wiki/images/5/5c/WebRTCWG-2018-06-19pdf

如何保证安全 :当连通性检测完成后,WebRTC会开启 DTLS (Datagram TLS)握手,用于协商出SRTP中加密RTP包的 对称秘钥 。该过程称为DTLS-SRTP,保证了数据传输的安全性。

参考: https://imwebio/topic/5a4a6cb2a192c3b460fce37f

RTP/RTCP 和 SRTP/SRTCP协议是什么?参考: https://blogcsdnnet/thinkerleo1997/article/details/80233530

基本概念:

SDP : 即会话描述协议(Session Description Protocol ),主要保存当前会话的媒体和传输信息,其中媒体信息包括 媒体类型 、 传输协议 、 媒体格式 等,传输信息包括媒体的远程 地址信息 、 带宽 等;它由多行KV格式的文本信息组成,具体可参考这里( https://toolsietforg/pdf/draft-nandakumar-rtcweb-sdp-08pdf )。WebRTC通过 信令 建立一个SDP握手的过程,只有通过SDP握手,双方才知道对方的信息,这是建立p2p通道的基础。

Offer : 通信的发起方对自己的sdp描述

Answer : 通信的接收方对自己的sdp描述

信令 :协商通信过程,传递基本的数据信息,其中包括SDP描述信息、会话控制信息(节点加入、退出及各类的业务控制信息等)、网络信息、错误信息等。是指控制建立连接和断开连接的状态的数据。在建立连接之前,信令必须发生在 带外 (通过服务器),但一旦建立连接,就可以通过已经建立的通道发送更新信令(如挂断)。(这里要了解一下什么叫“带外(OOB:Out-Of-Band)”,: https://baikebaiducom/item/out-of-band/15801641fr=aladdin )

OOB概述 :传输层协议使用 带外数据 (out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方。为了发送这些数据,协议一般不使用与 普通数据 相同的通道,而是使用另外的通道。linux系统的套接字机制支持低层协议发送和接受带外数据。但是TCP协议没有真正意义上的带外数据。为了发送重要协议,TCP提供了一种称为 紧急模式 (urgent mode)的机制。TCP协议在数据段中设置 URG 位,表示进入紧急模式。接收方可以对紧急模式采取特殊的处理。很容易看出来,这种方式数据不容易被阻塞,并且可以通过在我们的服务器端程序里面捕捉 SIGURG 信号来及时接受数据。

信令通道 :与服务端建立连接和断开连接的通道,对于WebRTC而言就是信令通道。

STUN 服务器:是用来取外网地址的。

TURN 服务器:是在P2P失败时进行转发的,中继转发。

STUN 和 TURN 服务器的作用主要处理打洞与转发,配合完成 ICE协议 。

ICE :Interactive Connectivity Establishment,交互式连接建立。

WebRTC通信

基于WebRTC的点对点音视频通信流程如下:

1)客户端A初始化本地音视频设备,创建一个用于Offer的SDP对象,该对象中保存当前音视频的相关信息;

2)客户端A通过信令服务器将SDP信息发送给客户端B;

3)客户端B接收到A的SDP信息后保存,初始化本地音视频设备并创建用于Answer的SDP对象;

4)客户端B通过信令服务器将SDP信息发送给客户端A;

5)客户端A、B通过交换SDP等信息,建立P2P通道进行音视频传输;

示意图如下图所示:

WebRTC ICE(交互式连接建立)(ICE:Interactive Connectivity Establishment)

    以下是呼叫信令期间发生的消息交换的高级过程,即: WebRTC 信令交互流程图 :

开始

##关键词

--[SOMETHING]-->:表示从主叫方发送给被叫方的“SOMETHING”类型的消息。另一解释是: 主叫方所要执行操作 。

<--[SOMETHING]--:表示从被叫方发送给主叫方的“SOMETHING”类型的消息。另一解释是: 被叫方所要执行的操作 。

SS (Signal Service):通过服务器发送的信息(通过BCM 服务器发送的信息)

DC (Data Channel):通过WebRTC 数据通道 发送的消息

### Message Exchange / State Flow Overview (消息交换/状态流概述)

|          Caller(主叫方)          |          Callee(被叫方)    |

+----------------------------+-------------------------+

开始拨出电话:`handleOutgoingCall`

                        --[SSCallOffer]-->

…并开始生成iceCandidate候选,先保存在本地。iceCandidate里面包含了SDP、公网地址、用来标识当前ice中流媒体的id(sdpMid),这个公网地址是由STUN、TURN Server发过来的。

当生成iceCandidate候选后,将会调用方法`handleLocalAddedIceCandidate` ,并把这些iceCandidate保存起来。

                                                    被叫方收到来电,通过 `handleReceivedOffer` 发送呼叫应答

                                                    <--[SSCallAnswer]--

                                                    1 开始生成iceCandidate候选。

                                                    2 立即通过`handleLocalAddedIceCandidate` 将它们发送给主叫方。

                                                    <--[SSICEUpdate]-- (多次发送)

主叫方收到应答后调用方法: `handleReceivedAnswer`,接着发送所有前面保存的iceCandidate候选 (在此之后生成的iceCandidate候选会立即发送)

--[SSICEUpdates]--> (多次发送)

完成交换iceCandidate候选后…(此时表示双方身份已确认,接下来会通过P2P通道建立音视频会话,这里会涉及NAT技术,有可能失失败。如果失败,主叫方会一直显示呼叫中,被叫方不会显示任何界面)双方都调用方法: `handleIceConnected`

显示远程铃声用户界面

1连接到提供的数据通道

2显示来电界面

3如果被叫人接听电话

4发送连接消息

                                                    <--[DCConnectedMesage]--

接收到的连接消息后显示呼叫已连接。

主叫方挂断(被叫方同样可以挂断)调用方法:

--[DCHangup]-->

--[SSHangup]-->

结束

上面的消息交换可以整理为如下的简化版的WebRTC建立连接过程:

1)主叫方通过 createOffer 生成 SDP 描述

2)主叫方通过 setLocalDescription,设置本地的描述信息

3)主叫方将 offer SDP 发送给被叫方

4)被叫方通过 setRemoteDescription,设置远端的描述信息

5)被叫方通过 createAnswer 创建出自己的 SDP 描述

6)被叫方通过 setLocalDescription,设置本地的描述信息

7)被叫方将 anwser SDP 发送给主叫方

8)主叫方通过 setRemoteDescription,设置远端的描述信息。

只有通过 SDP握手 ,双方才知道对方的信息,这是建立p2p通道的基础。 通过SDP握手后,客户端之间就会建立起一个点对点的直接通讯通道。但是由于我们所处的网络环境错综复杂,用户可能处在私有内网内,使用p2p传输时,将会遇到 NAT (网络地址转换)以及防火墙等阻碍。这个时候我们就需要在SDP握手时,通过STUN/TURN/ICE相关 NAT穿透技术 (也有称为 打洞 或 穿墙 技术)来保障p2p链接的建立。

WebRTC的视频部分 ,包含采集、编解码(I420/VP8)、加密、媒体文件、图像处理、显示、网络传输与流控(RTP/RTCP)等功能。

    视频采集支持多种媒体类型,比如I420、YUY2、RGB、UYUY等,并可以进行帧大小和帧率控制。

    WebRTC采用I420/VP8编解码技术。VP8是Google收购ON2后的开源实现,并且也用在WebM项目中。VP8能以更少的数据提供更高质量的视频,特别适合视频会议这样的需求。

    视频加密是WebRTC的video_engine一部分,相当于视频应用层面的功能,给点对点的视频双方提供了数据上的安全保证,可以防止在Web上视频数据的泄漏。

    视频加密在发送端和接收端进行加解密视频数据,密钥由视频双方协商,代价是会影响视频数据处理的性能;也可以不使用视频加密功能,这样在性能上会好些。

视频加密的数据源可能是原始的数据流,也可能是编码后的数据流。估计是编码后的数据流,这样加密代价会小一些,需要进一步研究。

WebRTC的音频部分 ,包含设备、编解码(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、声音文件、声音处理、声音输出、音量控制、音视频同步、网络传输与流控(RTP/RTCP)等功能。

    WebRTC采用iLIBC/iSAC/G722/PCM16/RED/AVT编解码技术。

    WebRTC还提供NetEQ功能---抖动缓冲器及丢包补偿模块,能够提高音质,并把延迟减至最小。

    另外一个核心功能是基于语音会议的混音处理。

    声音处理针对音频数据进行处理,包括回声消除(AEC)、AECM(AEC Mobile)、自动增益(AGC)、降噪(NS)、静音检测(VAD)处理等功能,用来提升声音质量。

丢包补偿原理是什么?

自动增益(AGC:Automatic Gain Control)概念?

TCP协议 :属于传输层,是可靠的、面向连接的。主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。TCP连接的建立依靠“三次握手”,而释放则需要“四次握手”。

IP协议 :属于网络层,主要解决 网络路由和寻址 问题。

Http协议 :属于应用层协议,一个简单的请求-响应协议,是一种无状态、非持久的协议,是被动性的,也就是只能客户端发起。服务端不保留上一次与客户端交互时的任何状态,每次都要重新传输 identity info (鉴别信息),来告诉服务端你是谁。HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP11支持keep-alive。

Http与WebSocket区别与联系

(1)Http与WebSocket是两个完全不同的协议,都是基于TCP的。两者唯一的联系是WebSocket利用Http进行握手;具体说明请看:RFC6455-17( https://toolsietforg/html/rfc6455#section-55 )

(2)WS默认也使用80端口;WSS默认也使用443端口。

(3)Http协议局限性一大堆,比如明文传输、无法保证信息完整性、没有身份验证等。而WebSocket的出现则是为了解决Http协议只能由Client发起通信请求的问题。WebSocket是 全双工通信 。

(4)HTTP是运行在TCP协议传输层上的应用协议,而WebSocket是通过HTTP协议协商如何连接,然后独立运行在TCP协议传输层上的应用协议。

    WebSocket仅仅是利用了HTTP协议做连接请求。WebSocket相当于一个简化版的TCP传输子层(实际上WebSocket也是应用层协议)。WebSocket之所以能持久连接原因是它运行在TCP协议上,TCP协议自身是长连接协议,所以WebSocket当然可以长连接啦。如果你要问为什么HTTP不是长连接,原因是早期的HTTP在发起每个请求,响应完成后就会关闭Socket。但是后来加了多路复用KeepAlive协议后HTTP协议已经可以实现长连接了,可以处理长连接事务了。至于添加WebSocket特性,是为了更好、更灵活,轻量的与服务器通讯。因为WebSocket提供了简单的消息规范,可以更快的适应长连接的环境,其实现在HTTP协议自身就可以做,但是不太轻便,因为HTTP是一种无状态、非持久的协议,是被动性的,也就是只能客户端发起。服务端不保留上一次与客户端交互时的任何状态,每次都要重新传输 identity info (鉴别信息),来告诉服务端你是谁,每次请求和应答都带有完整的Http头,占用网络传输带宽,增加了每次传输的数据量。为什么HTML4不支持WebSocket?原因是WebSocket的协商机制HTML4底层API没有实现。

WebSocket与Socket是没什么关系的

WebSocket协议 和 Http协议: 都是基于TCP的,所以他们都是可靠的协议,是在应用层。

Socket: 是对TCP/IP 协议的封装,本质并不是一个协议,是应用层与 TCP/IP 协议族通信的中间软件抽象层(类似于对底层的封装),它是一组接口,让你在使用的时候更方便操作。

WebSocket与WebRTC(Web Real-Time Communication)是什么关系?

WebSocket: 是WebRTC的基础,为WebRTC负责客服端发现和数据转发。

TCP协议 :参考 https://blogcsdnnet/Awille/article/details/79748193

SocketRocket :Facebook的开源框架

WebRTC开发和VoIP开发之间有什么区别与联系?

待完善知识点:WebRTC移动端兼容性检测,如何配置MediaStreamConstraints, 信令(iceCandidate, sessionDescription)传输方式的选择,iceCandidate和sessionDescription设置的先后顺序,STUN和TURN的概念,如何实现截图及录制视频及上传和视频功能,如何高效跟踪错误?

WebRTC拥塞控制和码率调节策略是怎么样的?在弱网环境下如何保证图像不失真?

猜:好像是改RTCRtpEncodingParameters这个类里的ssrc参数。是改采样频率?

参考资料:

WebRTC百科: https://baikebaiducom/item/WebRTC/5522744fr=aladdin

WebRTC基础知识: https://webrtcorgcn/category/basic/

GoogleWebRTC-pod安装文档:https:// cocoapodsorg/pods/GoogleWebRTC

GoogleWebRTC-iOS官网: https://webrtcorg/native-code/ios/

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 关于端口109和110的问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情