亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 網(wǎng)絡(luò)協(xié)議 > 正文

flashP2P協(xié)議rtmfp解析

2020-05-13 13:28:14
字體:
供稿:網(wǎng)友

   1 協(xié)議介紹

  Real-Time Media Flow Protocol(簡稱RTMFP)是Flash和Flash之間基于UDP的點(diǎn)對點(diǎn)傳輸協(xié)議,由Adobe公司在2008年在Flash 10.0中發(fā)布,隨后在Flash10.1中加入了Groups功能。

  2 常見用法

  rtmfp在Flash 10中的典型使用場景如下圖:

flashP2P協(xié)議rtmfp解析

 

  它有如下特點(diǎn):

  l 使用Cirrus或者開源的Cumulus來提供Rendezvous服務(wù)

  l Cirrus或者Cumulus并不提供Peer ID的交換服務(wù),需要提供其它的方式來交換客戶端之間的Peer ID

  l Flash客戶端之間使用NetStream來做點(diǎn)對點(diǎn)傳輸,Publisher需要給每一個(gè)Subscriber單獨(dú)傳輸一份數(shù)據(jù),這也限制集群的規(guī)模。

  為了解決這個(gè)問題,Adobe在Flash 10.1中提出了Groups的概念,典型的架構(gòu)如下:

flashP2P協(xié)議rtmfp解析

 

  它有如下特點(diǎn):

  l Cirrus或者開源的Cumulus提供Rendezvous服務(wù)并提供所有連接client列表

  l client從Cirrus或者開源的Cumulus獲取鄰居節(jié)點(diǎn)之后,就可以組成一個(gè)完整的P2P架構(gòu),所有的audio、video和data數(shù)據(jù)都在peer之間交互。

  3 協(xié)議解析

  3.1 基本概念

  l session:session是兩個(gè)UDP地址之間的雙向管道。

  l flow:flow是從一個(gè)實(shí)體到另一個(gè)實(shí)體之間的邏輯路徑。一個(gè)session可以包括多個(gè)flow。

  l packet:網(wǎng)絡(luò)中實(shí)際傳輸?shù)臄?shù)據(jù),一個(gè)packet可以包含多個(gè)message。數(shù)據(jù)傳輸時(shí)都經(jīng)過了128 bit的AES加密

  l message:audio、video和data數(shù)據(jù)。

  3.2 Scrambled Session ID

  rtmfp協(xié)議中每個(gè)包的格式如下:

  packet := scrambled-session-id | encrypted-part

  其中scrambled-session-id是4字節(jié),其后是經(jīng)過AES加密的數(shù)據(jù)體。

  scramble-session-id的生成規(guī)則如下:

  scrambled-session-id = a ^ b ^ c

  這里^代表XOR操作,a是session-id,b和c是encrypted-part的頭8個(gè)bytes。

  當(dāng)目標(biāo)收到這個(gè)包后,unscramble的操作如下:

  session-id = x ^ b ^ c

  其中x是scrambled-session-id,b和c同上。

  使用scramble-session-id的目的為了減少數(shù)據(jù)包流經(jīng)的NAT設(shè)備和layer-4 packet inspector對數(shù)據(jù)的干擾。

  session-id用于標(biāo)識通信雙方建立的連接,并確定通信時(shí)使用的加密和解密的key,這些key是通過DH key exchange算法獲得。但在session建立之前,雙方使用一個(gè)公有加密key,即128 bit的字符串”Adobe System 02”。

  3.3 raw part

  encrypted-part經(jīng)過解密之后就得到了raw-part,它的格式如下:

  raw-part := checksum | network-layer-data | padding

  其中checksum有16字節(jié),network-layer-data是變長數(shù)據(jù),padding都是0xFF,并把network-layer-data補(bǔ)齊為16字節(jié)的倍數(shù),這是因?yàn)閞tmfp使用的是16字節(jié)的加解密key。

  checksum基于network-layer-data和padding計(jì)算。

  3.4 network layer data

  network-layer-data的格式如下:

  network-layer-data = flags | timestamp | timestamp-echo | chunks

  其中flags為1個(gè)字節(jié),其格式如下:

  7 6 5 4 3 2 1 0

  TC TCR reserved reserved TS TSE mode

  l mode:11代表握手包,01代表initiator發(fā)送包,10代表responder發(fā)送包,00不是合法值

  l TSE:包中是否包含timestamp-echo域

  l TS:包中是否包含timestamp域

  l TCR:time critical reverse notification表明發(fā)送方正在從其它地方收到timecritical包

  l TC:time critical forward notification表明發(fā)送方發(fā)送的是timecritical包

  timestamp域有2字節(jié),精度是4ms,他的計(jì)算方式如下:

  timestamp = int(time * 1000 / 4) & 0xFFFF

  timestamp-echo域是server收到包的時(shí)間戳,當(dāng)發(fā)送放收到這個(gè)值之后,發(fā)送方就可以計(jì)算RTT值了。

  chunk類型的格式如下:

  chunk = type | size | payload

  type字段為1個(gè)字節(jié),其中0xFF不可用,這個(gè)是用來區(qū)分chunk數(shù)據(jù)和padding數(shù)據(jù)的標(biāo)記。type的定義如下:

  typemeaning

  0x30initiator hello

  0x70responder hello

  0x38initiator initial keying

  0x78responder initial keying

  0x0fforwarded initiator hello

  0x71forwarded hello response

  0x10normal user data

  0x11next user data

  0x0csession failed on client side

  0x4csession died

  0x01reset keepalive request

  0x41reset keepalive response

  0x5enegative ack

  0x51some ack

  size是2字節(jié)payload長度。

  payload根據(jù)type的不同有不同的數(shù)據(jù)體。

  3.5 message flow

  session中包括3類消息:

  l handshake:握手包,包括initiator hello, responder hello, initiator initial keying,responder initial keying, responder hello cookie change和responderredirect

  l control:控制包,包括ping, ping reply, rekeying initiate, rekeying response, close, closeacknowledge, forwarded initiator hello.

  l flow:流消息,包括user data, next user data, buffer probe, user data ack, user dataack, flow exception report.

  session的建立是通過握手(handshake)來完成的,正常的messageflow如下:

  如果是在NAT打洞是,cumulus server就作為一個(gè)forwarder,他會把initiatro hello包轉(zhuǎn)發(fā)到其它的client:

  另外,cumulus server還可以讓client重定向到其它server:

  這里所說的client是Flash Player,而server是cumulus server或者Flash media server。當(dāng)然server也可以給client發(fā)送initiator hello請求,這個(gè)在cumulus中被稱為man in the middle,不過這個(gè)特性還不穩(wěn)定。

  session的建立包括4次握手:

  1 initiator -> target:initiator hello

  2 target -> initiator: responder hello

  3 initiator -> target:initiator initial keying

  4 target -> initiator: responder initial keying

  這個(gè)4次握手過程可以阻止Dos攻擊和syn-flooding攻擊。

  每個(gè)session都有一個(gè)session-id來唯一標(biāo)識這個(gè)session,并且session中的每個(gè)packet都會包含這個(gè)session-id,但是在session建立的4個(gè)握手包中,initiator-hello, responder hello和initiator initialkeying的session-id字段都是0,在發(fā)送最后一個(gè)包responder initial keying時(shí),session建立成功并且session-id確定,所以responderinitial keying包含合法的session-id。

  我們接下來詳細(xì)介紹一下這4個(gè)握手包

  3.5.1 initiator hello

  initiator hello包的格式如上所述,這里只說明payload部分的格式:

  initiator-hello payload = first | epd type | epd value| tag

  其中:

  l first:1 byte magic number

  l epd type:1 byte,只有兩個(gè)合法值:

  n 0x0a:client-server模式,epd value是想要連接的server的rtmfp url

  n 0x0f:peer-to-peer模式,epd value是想要連接的client的peer id,一般是固定的32字節(jié)

  l epd value:varlen + body

  l tag:16 bytes隨機(jī)數(shù)

  3.5.2 responder hello

  responder hello包的payload格式如下:

  responder hello payload = tag-echo | cookie | responder-certificate

  其中:

  l tag-echo:和initiator hello中的tag一致,但和initiator hello中不同的是,這里在前面有一個(gè)varlen來表明tag的長度

  l cookie:responder產(chǎn)出的64 bytes隨機(jī)數(shù),用來防止syn-flooding攻擊

  l responder certificate:diffie-hellman key exchange算法交換的信息,它的格式如下:

  certificate= x01x0Ax41x0E | dh-public-num | x02x15x02x02x15x05x02x15x0E

  dh-public-num是一個(gè)64 byte(128 byte)隨機(jī)數(shù)。

  dh-public-num的生成規(guī)則為

  y2 = g ^ x2 % p

  其中g(shù)和p是公開的兩個(gè)數(shù),其中g(shù)等于2,p是一個(gè)1024 bits的數(shù),x2是responder隨機(jī)生成的數(shù),y2就是在網(wǎng)絡(luò)中傳輸?shù)膁h-public-num。

  3.5.3 initiator initial keying

  initiator initial keying包的payload格式如下:

  payload = initiator-session-id | cookie-echo | initiator-certificate| initiator-component | ‘X’

  其中:

  l initiator-session-id:initiator選擇的session-id,responder用它來發(fā)送數(shù)據(jù)給initiator(生成scrambled session id)

  l cookie-echo:和上一個(gè)包中的cookie一致

  l initiator-certificate:格式和上面的responder certificate一致

  和上述的一樣,這里的dh-public-num的生成規(guī)則如下:

  y1 = g ^ x1 % p

  其中g(shù)和p的定義和上述一致,x1是initiator隨機(jī)生成的數(shù),y1就是傳輸?shù)膁h-public-num。這時(shí)initiator知道了y2和x1,就可以生成sharedsecret:

  shared secret = y2 ^ x1 % p

  這時(shí)就可以生成這個(gè)session對應(yīng)的加解密key了:

  decode key = HMAC-SHA256(shared-secret, HMAC-SHA256(responder nonce,initiator nonce))

  encode key = HMAC-SHA256(shared-secret, HMAC-SHA256(initiator nonce,responder nonce))

  這些加解密key都只使用低位的128bit

  l initiator-component:在DH算法中使用的initiator nonce。

  3.5.4 responder initial keying

  responder initial keying的payload的格式如下:

  payload = responder session id | responder’s nonce | ‘X’

  其中:

  l responder session id:responder生成的session id,initiator用它來生成scrambled session id,這個(gè)值和initiator session id不一樣。

  l responder’s nonce:

  這時(shí)responder知道了y1和x2,就可以生成sharedsecret:

  shared secret = y2 ^ x1 % p

  DH算法保證這個(gè)responder的sharedsecret和initiator的shared secret是一樣的。

  這時(shí)就可以生成這個(gè)session對應(yīng)的加解密key了:

  encode key = HMAC-SHA256(shared-secret, HMAC-SHA256(responder nonce,initiator nonce))

  decode key = HMAC-SHA256(shared-secret, HMAC-SHA256(initiator nonce,responder nonce))

  這些加解密key都只使用低位的128bit。

  可以看到responder的encode key和initiator的decode key是一樣的,同樣,responder的decode key和initiator的encode key是一樣的。

  注意responder initial keying依然使用”Adobe System 02”作為對稱key來加解密,而不是使用新生成的非對稱的key來加解密,非對稱的key僅在session建立之后使用。

  3.5.5 user data

  至此session就建立好了,后續(xù)傳輸?shù)木褪菙?shù)據(jù)消息,主要包括兩類:

  l normal user data:正常的flow中數(shù)據(jù)消息

  l next user data:和normal user data在一個(gè)packet中傳輸,不能單獨(dú)使用。

  normal user data包的payload格式如下:

  payload = flags | flow-id | seq | forward-seq-offset | options |data

  其中:

  l flags:1 byte,各bit的意義如下:

  bitmeaning

  0x80options域是否存在

  0x40

  0x20這個(gè)包前面還有包

  0x10這個(gè)包后面還有包

  0x08

  0x04

  0x02丟棄包

  0x01結(jié)束包

  l flow-id:flow標(biāo)識,varlen類型

  l forward-seq-offset:用于滑窗的標(biāo)識,varlen類型

  l options:一些選項(xiàng)

  l data:audio、video和data數(shù)據(jù)

  next user data包的payload格式如下:

  payload = flags | data

 

  字段定義同上

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日韩精品一区在线| 99久久久精品免费观看国产| 国产精品久久久久久久天堂第1集| 国产伦精品一区二区三区高清版禁| 国产精品久久久久免费a∨大胸| 欧美人与性动交| 国产精品卡一卡二卡三| 欧美精品aaaa| 五月天色网站| 国产成人免费xxxxxxxx| 欧美午夜网站| 97精品国产福利一区二区三区| 日韩欧美亚洲综合| 久久久久久久久久久网站| 每日更新成人在线视频| www.天天干.com| 美女任你摸久久| 欧美成人禁片在线观看网址| 午夜精品久久久久久99热软件| 你懂得视频网站| 国内国产精品天干天干| 国产suv精品一区| 男人在线视频资源| 在线成人激情视频| av手机天堂| 国产米奇在线777精品观看| 国产一区在线播放| 亚洲av中文无码乱人伦在线视色| 136福利视频导航| 国产亚洲婷婷免费| 一级全黄肉体裸体全过程| 欧美色综合网站| 在线观看欧美日本| 四虎影视一区二区| 国产日韩欧美综合| 噜噜噜久久亚洲精品国产品麻豆| 中文字幕字幕中文在线中不卡视频| 97人人做人人人难人人做| 毛片av一区二区三区| 亚洲色婷婷久久精品av蜜桃| 午夜免费精品视频| 精品日韩av| 日韩一区二区三区国产| 在线观看一区| 亚洲另类在线视频| 在线观看一区二区视频| 欧美视频在线观看免费网址| 国产精品久久久久久av公交车| 色哟哟一区二区在线观看| 91精品久久久久久久99蜜桃| 亚洲a级在线观看| 日韩夫妻性生活xx| 蜜臀国产一区| 特级西西444www大精品视频免费看| 亚洲精品成人精品456| 影音先锋在线亚洲| 最近免费中文字幕视频2019| 日韩av有码在线| 99亚洲男女激情在线观看| 羞羞视频网站在线观看| 一级黄色小视频| 91黄色在线看| 亚洲欧洲精品成人久久奇米网| 日韩人妻无码精品久久久不卡| 波多野结衣之无限发射| 91精品欧美综合在线观看最新| 欧美国产一区二区在线| 精品国产人成亚洲区| 精品国产中文字幕| 国产精品精品软件视频| 麻豆一区二区三| 亚洲男人影院| 欧美影院在线播放| 精品少妇久久久| 天堂av在线免费观看| 非洲一级黄色片| 亚洲人精品午夜射精日韩| 九九久久久久99精品| 91成人在线观看喷潮蘑菇| 欧美日韩色综合| 成人一区二区三区视频| 国产精品视频大全| 福利视频在线播放| 中文字幕乱码一区二区三区| 青青草原成人在线视频| 97久久精品人人做人人爽| 亚洲永久字幕| 人妻少妇无码精品视频区| 欧美老女人bb| 手机成人在线| 国产精品无码天天爽视频| 欧美精选视频一区二区| 91精品国产乱码| 美女胸又www又黄的网站| 亚洲va码欧洲m码| 中文字幕一区二区三区电影| 亚洲无码久久久久| 四虎久久免费| 国产精品免费av| 男人天堂网视频| 欧美亚洲免费高清在线观看| 精品午夜福利视频| 一区二区三区四区久久| 色香蕉在线视频| 精产国品自在线www| 亚洲老板91色精品久久| 麻豆蜜桃在线观看| 精品国产一区一区二区三亚瑟| 欧美影院一区二区三区| 亚洲妇熟xx妇色黄蜜桃| 日韩av在线一区二区| 色综合久久综合中文综合网| 91干在线观看| 精品人妻一区二区三区香蕉| 免费在线观看毛片网站| 天天干天天摸天天操| 五月婷婷伊人网| 成人免费黄色大片| av电影成人| 免费网站观看电影入口| 成人国产精品免费观看| 91夜夜未满十八勿入爽爽影院| 无遮挡又色又刺激的女人视频| 国产精品亚洲а∨天堂免在线| 动漫一区二区三区| 日韩欧美中文字幕一区二区| 欧美成人精品福利网站| 天天好比中文综合网| 亚洲国产无线乱码在线观看| wwww.国产| 99久久精品一区| 日韩有码片在线观看| 欧美小视频在线观看| 国产小视频免费观看| 一区二区三区电影大全| a级片在线观看视频| 国产高潮国产高潮久久久91| 国产美女视频免费看| 国产乱码精品一区二区三区五月婷| 国产精品特级毛片一区二区三区| 尤物在线免费视频| 免费无码毛片一区二区app| 美女高潮网站| 欧美freesex交免费视频| 中文字幕 自拍| 亚洲天堂av一区| 国产亚洲精品自在线观看| 欧美日韩中字| 日本伊人精品一区二区三区观看方式| 免费日韩av片| 国产伦精品一区二区三区照片91| 91香蕉国产在线观看软件| 成人在线免费观看91| 日本在线免费网| 欧美性videos| 中文字幕一区二区三区四区五区六区| 不卡毛片在线看| 国产精品白浆流出视频| 91欧美激情另类亚洲| 国产一区二区三区四区五区在线| 国产视频一区在线| 99视频只有精品| 国产精品永久在线| 大色综合视频网站在线播放| 白白色 亚洲乱淫| 国产精品乱码视频| 精品日本一区二区| 欧美喷水一区二区| 中文在线8资源库| 在线免费观看一区二区| 伊人成人开心激情综合网| 精品人妻一区二区乱码| 污视频免费在线观看| 国产天堂在线播放视频| 在线观看制服搞黄视频| 各处沟厕大尺度偷拍女厕嘘嘘| 西西裸体人体做爰大胆久久久| 欧美日韩在线免费视频| 人妻91麻豆一区二区三区| 日本国产中文字幕| www插插插无码视频网站| 8x8x8国产精品| 在线免费av导航| 欧美电影免费看| 亚洲一区二区精品在线| 国产在线91| 99热这里只有精品在线| 欧美一区二区三区四区夜夜大片| 少妇太紧太爽又黄又硬又爽小说| 亚洲精品suv精品一区二区| 欧美极品第一页| 国产精品99久久久久久www| 中文字幕在线永久| 国内精品不卡一区二区三区| 欧美mv日韩mv国产网站app| 性欧美高清视频| 欧美美女一区二区| 不卡的av一区| 欧美**字幕| 色综合一区二区| 亚洲免费观看在线视频| 97超碰人人模人人爽人人看| 欧美精品一区二区三区很污很色的| 国产suv精品一区二区69| 欧美大喷水吹潮合集在线观看| 久久人人爽爽爽人久久久| xxx欧美尤物xxx| 亚洲伊人成综合成人网| 福利电影一区二区三区| 国产精品一区电影| 在线成人综合色一区| 92国产在线视频| 欧美色国产精品| 日本一区二区在线不卡| 欧美专区在线视频| 精品国产一区二区三区忘忧草| 欧美性猛交xxxx免费看蜜桃| 最新在线黄色网址| 国产精品成人69xxx免费视频| 在线国产视频一区| 中文字幕第一页在线视频| 中文字幕免费高| 神马影院一区二区| 伊人国产在线视频| 亚洲精品美女视频| 五月婷婷之综合激情| 欧美激情久久久久久久| 99久久精品国产一区二区小说| 国产精品视区| 国产一区二区精品福利地址| 久久这里只有| 热99精品只有里视频精品| 亚洲国产精品影视| 噜噜噜久久亚洲精品国产品麻豆| 高清不卡一区二区在线| 国产91色在线|| 国产精品区一区二区三含羞草| 亚洲国产精品一区二区三区| 天天综合狠狠精品| www.eeuss影院| 国产欧美一区二区| 日本色图欧美色图| 最近2018中文字幕免费在线视频| 男人天堂免费视频| 欧美成人精品激情在线观看| 亚洲国产91视频| 美女视频免费观看网站在线| 日韩在线一区二区| 先锋资源中文字幕| 亚洲婷婷在线视频| 黑人巨大精品欧美一区| 国产欧美久久久精品影院| 678五月天丁香亚洲综合网| 超碰免费在线观看| bbw丰满大肥奶肥婆| 欧美午夜免费| 一区二区三区视频在线看| 精品众筹模特私拍视频| 日韩在线播放一区二区| 欧美日韩国产精品一区二区亚洲| 亚洲第一av在线| 麻豆资源在线| 牛牛热在线视频| 九九精品在线视频| www.99re6| 婷婷精品久久久久久久久久不卡| 91美女片黄在线观| 97超碰成人| 欧美老女人性生活视频| 国产精品久久不卡| 日韩伦理片在线观看| 亚洲精品一区二区三区蜜桃| 老司机在线精品视频| 成片免费观看| 国产在线观看免费视频今夜| 美女被啪啪一区二区| 国产三级在线看| 亚洲视频久久| 91一区二区视频| 青青草免费观看视频| 国产三级电影| aaa一区二区| 免费成人美女女在线观看| 免费成人在线观看视频| 丁香花电影在线观看完整版| 可以免费看的黄色网址| 中文字幕欧美激情极品| 亚洲国产精品视频一区| 91亚洲精华国产精华| 久久在线视频| 国产在线不卡视频| 九色蝌蚪av新入口| www在线播放| 成网站在线观看人免费| 亚洲一区国产一区| 在线观看亚洲区| 3d成人动漫在线| 日韩视频免费观看高清| 久久影视电视剧免费网站| 久久久久久国产精品免费免费| 国产高清在线免费观看| va婷婷在线免费观看| 国产精品久久久久999| 国产网站一区二区三区| 黄瓜视频污app| 午夜精品在线视频| 国产精品久久久精品| 一区二区成人在线| 国产高清视频在线播放| 三上悠亚在线免费观看| 男人天堂va| 精品久久久久久中文字幕人妻最新| 欧美hentaied在线观看| 五月天婷婷视频| www.日日夜夜| 粉嫩欧美一区二区三区高清影视| 精品一区二区三区在线观看| 亚洲同志网站入口| 国产精品久久久久一区二区| 国产极品嫩模在线观看91精品| 极品美女一区二区三区| 精品一区二区在线免费观看| 99re视频| 成人天堂入口网站| 97婷婷大伊香蕉精品视频| 国产成人调教视频在线观看| 一本一道久久久a久久久精品91| 青青在线视频|