日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 課堂 > 網(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)對(duì)點(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)對(duì)點(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對(duì)數(shù)據(jù)的干擾。

  session-id用于標(biāo)識(shí)通信雙方建立的連接,并確定通信時(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,他會(huì)把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)識(shí)這個(gè)session,并且session中的每個(gè)packet都會(huì)包含這個(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對(duì)應(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對(duì)應(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”作為對(duì)稱key來加解密,而不是使用新生成的非對(duì)稱的key來加解密,非對(duì)稱的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)識(shí),varlen類型

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

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

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

  next user data包的payload格式如下:

  payload = flags | data

 

  字段定義同上

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产在线拍揄自揄拍| 一区二区三区四区五区视频在线观看| 日韩视频一区| 国产一级在线免费观看| 国产亚洲人成a一在线v站| 日韩国产在线不卡视频| 一区二区三区视频网站| 91精品国产91久久| 婷婷中文字幕一区三区| 国产天堂素人系列在线视频| 视频在线一区二区| 欧美日韩中文在线| 99亚洲视频| 国产蜜臀在线| wwww亚洲| 亚洲成人7777| 国产亚洲一级| 日韩精品在线网站| 一区视频在线播放| 国产不卡视频在线| 区日韩二区欧美三区| av免费在线不卡| 国产欧美日韩久久| 欧美日韩中文字幕| 午夜精品一区二区三区免费视频| 日韩欧美高清在线视频| 欧美亚洲免费高清在线观看| 日本一欧美一欧美一亚洲视频| 美女黄a一级视频| 日韩av一区在线| 国产在线二区| 免费看日韩精品| 日韩国产专区| 国产午夜精品一区二区三区视频| 粉嫩喷白浆久久| 日韩在线播放一区二区| 国产一卡2卡3卡4卡网站免费| aaa欧美日韩| 久久久精品免费免费| wwwww亚洲| 日韩欧美综合在线| 日韩国产欧美在线视频| 日韩在线视频二区| 欧美中文字幕在线| 伊人亚洲视频| 国产欧美日韩亚州综合| 日韩www在线| 久久91精品久久久久久秒播| 欧美日韩国产在线观看| 99精品电影| 精品调教chinesegay| 不卡一二三区| 日韩在线视频一区| 国产美女主播视频一区| 中文字幕在线视频第一页| 黄色一区二区在线观看| 在线视频日韩欧美| 欧美日韩免费高清| av免费看在线| 视频一区中文字幕国产| 国产中文伊人| 欧美日韩一级黄| 久久香蕉精品| 日韩在线视频观看正片免费网站| 欧美日韩在线播放视频| 美日韩精品免费视频| 亚洲精品中文字幕乱码三区不卡| 精品国产乱码一区二区| 影音先锋一区二区资源站| 最新中文字幕在线| 精品久久久网| lutube成人福利在线观看| 欧美激情视频一区二区三区在线播放| 国产在线拍偷自揄拍精品| 国产亚洲污的网站| 亚洲一区导航| 免费国产成人看片在线| 欧美日韩视频在线| 精品国自产在线观看| 日韩在线视频在线观看| 国产小视频免费在线观看| 91麻豆视频网站| 日韩欧美一级视频| 欧美日韩高清| 视频一区不卡| 精品欧美久久久| 欧美日韩国产一区在线| 欧美日韩国产大片| 国产一级在线播放| 红桃视频亚洲| 精品视频资源站| 色欧美日韩亚洲| 国产日韩在线视频| 亚洲娇小xxxx欧美娇小| 黄色国产网站在线观看| 国产免费一级| 日韩欧美在线网址| 一区二区日韩视频| 91精品国产色综合久久不卡蜜臀| 在线欧美一级视频| 欧美日韩精品在线| 精品国产免费视频| 国产一二三四| 久久欧美中文字幕| 国产羞羞视频在线播放| 欧美日韩精品免费看| 一区三区二区视频| 精品三级在线| 国产区高清在线| 伊人永久在线| 国产免费电影网站入口| 综合激情一区| 国产一区不卡精品| 大香一本蕉伊线亚洲网| 一区二区在线观| 亚洲一区中文字幕在线观看| 一级片免费网站| 91精品国产综合久久香蕉最新版| 日韩精品在线网站| 国产超级va在线视频| 高清一区二区| 久久精品人妻一区二区三区| 在线日韩中文字幕| 一区二区三区精品99久久| 亚洲制服一区| 亚洲国产欧美日韩在线| 国产小视频免费在线网址| www.尤物.com| 欧美日韩国产观看视频| 亚洲三级免费看| 91精品视频在线| 免费在线视频一级不卡| 国产一二三区精品视频| 日韩欧美一级在线播放| 久久麻豆视频| 日韩av在线中文字幕| 欧美亚洲专区| 91麻豆视频网站| 国产在线看一区| 香蕉av一区| 福利在线国产| 国产日韩在线亚洲字幕中文| 欧美午夜精品在线| 不卡福利视频| 精人妻一区二区三区| 欧美日韩精品免费看| 欧美日韩精品综合在线| 国产免费不卡av| 精品日韩在线| 欧美1区免费| 欧美日韩一级视频| 1024国产在线| 国产三级中文字幕| 天天综合天天综合| 欧美日韩高清在线播放| 久久视频在线免费观看| 1区2区在线| 国产一级视频| 欧美片网站免费| 午夜av一区二区| av影视在线看| 精品乱人伦一区二区三区| 日韩欧美不卡| 国产 日韩 欧美 综合 一区| 久久久久久99精品| 欧美一级日韩一级| 国内精品99| 久久精品免费看| 日韩 欧美 中文| 欧美性极品xxxx做受| 日韩欧美中文字幕一区| 一区二区在线观看不卡| 欧美乱大交xxxxx免费| 婷婷中文字幕一区三区| 99久久www免费| 欧美日韩一二三四| 国产福利不卡| 国产免费不卡av| www.精品av.com| 92久久精品| 国产视频二区| 一区二区三区在线播放欧美| 精品久久久网| 欧美色视频一区二区三区在线观看| 国产 欧美在线| 日韩欧美亚洲日产国| 国产日韩成人精品| 国产欧美日韩三级| 亚洲黄色片在线观看| 欧美在线视频二区| 欧美日韩视频不卡| 国产高清精品二区| 久久婷婷国产| 欧美日韩高清在线播放| 中文在线视频观看| 亚亚洲欧洲精品| 欧美日韩精品是欧美日韩精品| 日韩中文在线视频| 久久精品夜夜夜夜久久| 丰满少妇一区| 色99中文字幕| 国产欧美综合在线观看第十页| 亚洲免费在线视频一区 二区| 国产乱国产乱300精品| 国产欧美日韩综合| 拍真实国产伦偷精品| 欧美日韩国产专区| 久久99久久99精品中文字幕| 日韩视频不卡中文| 日韩精品一级| 欧美日韩国产综合视频在线观看中文| 国产色综合网| 欧美日韩亚洲综合| a级在线免费观看| 日韩亚洲欧美中文三级| 精品日韩av| 日韩欧美在线中字| 日韩精品在线视频观看| 香蕉人人精品| 亚洲伊人婷婷| 国产不卡一区| 欧美日韩综合色| 久久精品不卡| 99久久婷婷| 国产在线高清精品| 中文字幕综合在线| 久久riav| 国产高潮久久久| 亚洲乱码视频| 国产欧美高清在线| 91精品免费在线观看| 国产字幕在线看| 国产成人精品日本亚洲专区61| 在线免费播放av| 亚洲高清不卡一区| 精品九九久久| 中文字幕在线看精品乱码| 成人a在线视频免费观看| 亚洲成年人影院在线| 国产在线视频不卡| 精品久久电影| 中文字幕精品在线| 亚洲一区在线观看网站| 久久精品在线免费观看| 天堂在线一区二区三区| 国产调教精品| 亚洲中文字幕一区| a√免费观看在线网址www| 欧美日韩高清不卡| 精品日韩欧美| 亚洲伊人婷婷| 亚洲小说春色综合另类网蜜桃| 内射国产内射夫妻免费频道| 在线视频色在线| 欧美亚洲另类制服自拍| 最新中文在线视频| 77777_亚洲午夜久久多人| 欧美日韩性视频一区二区三区 | 国产伦精品免费视频| 1区2区3区在线视频| 欧美日韩在线综合| 不卡视频一区二区| 亚洲一区日韩在线| 国产三级精品网站| 日韩在线a电影| 国产区高清在线| 欧美亚洲天堂| 蜜桃久久av一区| 97久久精品午夜一区二区| 久久99久久久欧美国产| 国产一卡2卡3卡四卡网站| 国产色综合网| 亚洲一区导航| 天堂在线视频中文网| 精品久久九九| 亚洲精品欧美二区三区中文字幕| 日本精品福利视频| 91精品久久久久| 国产aa精品| 日韩精品视频在线观看免费| 国产中文在线视频| 欧美不卡123| 一区二区视频在线| 91精品国产综合久久福利| 亚洲国产一区自拍| 91精品视频播放| 日韩精品一级| 欧美 中文字幕| 中文字幕在线精品| 免费高清特黄a大片| 91精品国产91久久久久久三级| 日韩欧美综合在线视频| 欧美日韩精品高清| 日韩网站中文字幕| 欧美日韩精品在线| 亚洲一区三区在线观看| 91日韩中文字幕| 在线看av的网址| 91久久精品午夜一区二区| 国产91欧美| 欧美日韩高清在线| 亚洲黄色一区二区| 日本一级一片免费视频| 国产欧美日韩91| 国产成人精品免费网站| 亚洲福利视频在线| 91精品国产91久久久久久久久 | 99综合精品久久| 国产v日产∨综合v精品视频| 欧美性生交大片免费| 国产在线第一页| 在线视频三区| 国产视频1区| 欧美1234区| 午夜高潮免费视频| 欧美日韩综合色| 中文在线视频| 欧美国产三级| 一区二区视频在线| 欧美 日韩 中文字幕| 欧洲精品在线视频| 在线一区av| 欧美三级精品| 国产69精品久久久久孕妇国产69久久 | 天堂在线www天堂中文在线 | 久久 天天综合| 在线观看一区| 国产高清精品二区| 91www成人久久| 91精品国产自产在线观看永久∴| 国产123在线| 日韩在线视频二区| 九一久久久久久| 91精品国产乱码久久蜜臀| 国产黄在线看| 欧美日韩性视频一区二区三区| 一区二区视频免费看| 亚洲一级网站| 欧美日韩国产在线| 日韩精品在线私人| 一区二区三区免费看视频| 国产婷婷色一区二区三区在线| 国产卡1卡2卡三卡在线| 亚洲福利视频在线| 一区二区不卡在线播放| 欧美中文字幕第一页| 欧美日韩高清| 日韩国产欧美| av免费不卡国产观看| 精品国产综合久久| 欧美日韩国产首页在线观看| 国产在线小视频| 精品不卡一区二区| 国产欧美日韩中文久久| 日本a级黄色| 二区三区不卡不卡视频| 国产一级在线免费观看| 91精品啪在线观看国产60岁| 欧美不卡视频| 欧美一级手机免费观看片| 国产一级在线播放| av三级在线观看| 深夜福利一区| 欧美日韩国产在线观看| 国产 欧美 日韩 在线| 亚洲国产无线乱码在线观看 | 国产h片在线观看| 中文字幕在线精品| 中文字幕亚洲一区二区av在线| 精品久久蜜桃| 日韩欧美国产片| 精品国内自产拍在线视频| 国产一区成人| 精品乱人伦一区二区三区| 美日韩精品免费视频| 九九精品调教| 精品国自产在线观看| 欧美亚洲天堂网| 中文精品在线观看| 免费在线国产| 久久久久久99精品| 99国产成 人 综合 亚洲欧美| 日韩av一区在线| 国产成人精品免费久久久久| 欧美日韩国产免费| 久久99精品久久久久婷婷| 一本久久a久久精品亚洲| 亚洲va韩国va欧美va精品| 91精品国产91久久久久久久久| 日本va欧美va精品发布| 久久久精品免费免费| 日韩视频一区在线观看| 国产在线视频不卡| 久草视频观看| 中文字幕亚洲乱码| 欧美日韩综合在线| 樱花草www在线| 欧美日韩亚洲综合| 久久精品久久精品亚洲人| 日韩视频在线观看一区|