久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 課堂 > 網絡協議 > 正文

flashP2P協議rtmfp解析

2020-05-13 13:28:14
字體:
來源:轉載
供稿:網友

   1 協議介紹

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

  2 常見用法

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

flashP2P協議rtmfp解析

 

  它有如下特點:

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

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

  l Flash客戶端之間使用NetStream來做點對點傳輸,Publisher需要給每一個Subscriber單獨傳輸一份數據,這也限制集群的規模。

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

flashP2P協議rtmfp解析

 

  它有如下特點:

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

  l client從Cirrus或者開源的Cumulus獲取鄰居節點之后,就可以組成一個完整的P2P架構,所有的audio、video和data數據都在peer之間交互。

  3 協議解析

  3.1 基本概念

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

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

  l packet:網絡中實際傳輸的數據,一個packet可以包含多個message。數據傳輸時都經過了128 bit的AES加密

  l message:audio、video和data數據。

  3.2 Scrambled Session ID

  rtmfp協議中每個包的格式如下:

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

  其中scrambled-session-id是4字節,其后是經過AES加密的數據體。

  scramble-session-id的生成規則如下:

  scrambled-session-id = a ^ b ^ c

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

  當目標收到這個包后,unscramble的操作如下:

  session-id = x ^ b ^ c

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

  使用scramble-session-id的目的為了減少數據包流經的NAT設備和layer-4 packet inspector對數據的干擾。

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

  3.3 raw part

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

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

  其中checksum有16字節,network-layer-data是變長數據,padding都是0xFF,并把network-layer-data補齊為16字節的倍數,這是因為rtmfp使用的是16字節的加解密key。

  checksum基于network-layer-data和padding計算。

  3.4 network layer data

  network-layer-data的格式如下:

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

  其中flags為1個字節,其格式如下:

  7 6 5 4 3 2 1 0

  TC TCR reserved reserved TS TSE mode

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

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

  l TS:包中是否包含timestamp域

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

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

  timestamp域有2字節,精度是4ms,他的計算方式如下:

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

  timestamp-echo域是server收到包的時間戳,當發送放收到這個值之后,發送方就可以計算RTT值了。

  chunk類型的格式如下:

  chunk = type | size | payload

  type字段為1個字節,其中0xFF不可用,這個是用來區分chunk數據和padding數據的標記。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字節payload長度。

  payload根據type的不同有不同的數據體。

  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就作為一個forwarder,他會把initiatro hello包轉發到其它的client:

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

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

  session的建立包括4次握手:

  1 initiator -> target:initiator hello

  2 target -> initiator: responder hello

  3 initiator -> target:initiator initial keying

  4 target -> initiator: responder initial keying

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

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

  我們接下來詳細介紹一下這4個握手包

  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,只有兩個合法值:

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

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

  l epd value:varlen + body

  l tag:16 bytes隨機數

  3.5.2 responder hello

  responder hello包的payload格式如下:

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

  其中:

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

  l cookie:responder產出的64 bytes隨機數,用來防止syn-flooding攻擊

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

  certificate= x01x0Ax41x0E | dh-public-num | x02x15x02x02x15x05x02x15x0E

  dh-public-num是一個64 byte(128 byte)隨機數。

  dh-public-num的生成規則為

  y2 = g ^ x2 % p

  其中g和p是公開的兩個數,其中g等于2,p是一個1024 bits的數,x2是responder隨機生成的數,y2就是在網絡中傳輸的dh-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用它來發送數據給initiator(生成scrambled session id)

  l cookie-echo:和上一個包中的cookie一致

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

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

  y1 = g ^ x1 % p

  其中g和p的定義和上述一致,x1是initiator隨機生成的數,y1就是傳輸的dh-public-num。這時initiator知道了y2和x1,就可以生成sharedsecret:

  shared secret = y2 ^ x1 % p

  這時就可以生成這個session對應的加解密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,這個值和initiator session id不一樣。

  l responder’s nonce:

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

  shared secret = y2 ^ x1 % p

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

  這時就可以生成這個session對應的加解密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就建立好了,后續傳輸的就是數據消息,主要包括兩類:

  l normal user data:正常的flow中數據消息

  l next user data:和normal user data在一個packet中傳輸,不能單獨使用。

  normal user data包的payload格式如下:

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

  其中:

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

  bitmeaning

  0x80options域是否存在

  0x40

  0x20這個包前面還有包

  0x10這個包后面還有包

  0x08

  0x04

  0x02丟棄包

  0x01結束包

  l flow-id:flow標識,varlen類型

  l forward-seq-offset:用于滑窗的標識,varlen類型

  l options:一些選項

  l data:audio、video和data數據

  next user data包的payload格式如下:

  payload = flags | data

 

  字段定義同上

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产欧美一二三区| 久热精品在线观看视频| 在线播放国产精品| 91福利社在线观看| 国产精品国产三级国产aⅴ无密码| 免费高清不卡av| 国产视频在线免费观看| 91精品国产乱码久久久张津瑜| 怡红院一区二区三区| 久久久久久综合网| 97av视频在线观看| 欧美一级视频在线播放| 亚洲欧美日韩精品在线| 狠狠干一区二区| 国产精品jizz在线观看麻豆| 久久男人资源视频| 欧美国产日韩一区二区| 久久国产精品久久久久久| 亚洲欧美日韩网| 亚洲成人激情图| 666欧美在线视频| 欧美午夜不卡视频| 欧美日韩一二区| 色综合久久久久久久久| 亚洲第一福利视频在线| 一区二区三区丝袜| 亚洲第一主播视频| 亚洲图片欧美一区| 亚洲风情在线资源站| 亚洲日本在线观看| 一区二区三区蜜桃网| 亚洲免费观看高清完整版在线 | 亚洲成人av在线| 欧美调教femdomvk| 欧美日韩精品综合在线| 欧美性猛交xxxx黑人交| 欧美福利视频一区| 在线视频亚洲一区| 91精品婷婷国产综合久久竹菊| 777奇米成人网| 日韩欧美电影一二三| 亚洲精品av在线| 一区二区三区视频在线| 伊人久久男人天堂| 欧美黄色三级网站| 欧美在线视频播放| 国产精品网红直播| 国精产品一区二区| 99精品视频网站| 日日摸日日碰夜夜爽av| 9l视频白拍9色9l视频| 性鲍视频在线观看| 夫妇交换中文字幕| 日本免费一二三区| 国产美女明星三级做爰| 天使萌一区二区三区免费观看| 美女在线观看视频一区二区| 99久久精品免费看国产免费软件| 国产精品美女一区二区三区 | 少妇无套高潮一二三区| 成人免费视频国产免费观看| 国产欧美日韩另类| 丰满大乳国产精品| 国产suv精品一区二区三区| 久久色中文字幕| 性感美女极品91精品| 69堂国产成人免费视频| 中日韩午夜理伦电影免费| 97国产精品人人爽人人做| 91久久国产综合久久蜜月精品| 色一情一乱一伦一区二区三区丨| 国产综合免费视频| 欧美xxxx黑人| 国产在线视频99| 成 人片 黄 色 大 片| 国产精品99久久久久| 玉米视频成人免费看| 777久久久精品| 久久国产精品网站| 精品日韩欧美| 亚洲涩涩在线观看| 国产一级二级三级| 四季av日韩精品一区| 99国产精品99久久久久久| 黑丝美女久久久| 亚洲品质视频自拍网| 国产精品日韩专区| 国产欧美综合一区| 天天插天天射天天干| 伊人中文字幕在线观看| 久久99精品网久久| 亚洲已满18点击进入久久| 亚洲国产日韩欧美综合久久 | 日韩电影免费观看中文字幕| 欧美亚洲在线观看| 在线视频一区观看| www.日本高清| 91精品国产乱码久久| 国产福利一区在线| 在线观看一区二区视频| 欧美激情国产高清| 色综合电影网| 李丽珍裸体午夜理伦片| 一级黄色片在线播放| 97精品超碰一区二区三区| 3d动漫精品啪啪| 国产精品成人va在线观看| 无码专区aaaaaa免费视频| 国产真实乱在线更新| 日韩电影在线一区二区三区| 午夜日韩在线观看| 久久免费成人精品视频| 午夜久久久久久久久久久| 黄色a一级视频| 东京干手机福利视频| 亚洲欧美日韩国产综合在线| 亚洲色图色老头| 精品视频免费观看| 大地资源二中文在线影视观看| 精品毛片一区二区三区| 中文字幕欧美区| 亚洲深夜福利网站| 久久久久久九九九九| 在线精品一区二区三区| 特黄视频在线观看| 欧美日韩久久久一区| 国产精自产拍久久久久久| 视频二区在线播放| 国产喷水福利在线视频| 一区二区三区精品视频在线| 午夜精品久久久久久久男人的天堂 | 国产精品无码白浆高潮| 国产精品私人影院| 欧美大片欧美激情性色a∨久久| 久久久久久久色| 久久久久免费看黄a片app| 日本三级片在线观看| 久久色.com| 久久精品在线播放| 免费国产黄色网址| 国产精品欧美综合亚洲| 在线影院国内精品| 国产99在线播放| 中文字幕一区二区三区人妻不卡| 日本va欧美va瓶| 欧美一个色资源| 亚洲a∨一区二区三区| 五月天婷婷综合网| 亚洲精品国产第一综合99久久| 日韩av电影在线播放| 午夜性福利视频| 久久精品国产久精国产爱| 亚洲国产美女精品久久久久∴| 在线观看亚洲视频啊啊啊啊| 成人免费毛片视频| 色视频一区二区| 久久99导航| 男女视频免费看| 午夜视频一区在线观看| 久久亚洲综合网| 日本熟妇一区二区| 色哟哟亚洲精品| 欧美高清性xxxxhdvideosex| 精品无码m3u8在线观看| 狠狠爱在线视频一区| 欧美在线3区| 午夜婷婷在线观看| 欧美午夜精品久久久久久人妖| 国产一区高清视频| 国产精品自拍99| 91国产精品成人| 国产福利片一区二区| 成人av无码一区二区三区| 亚洲精品在线一区二区| 激情综合网婷婷| 日韩av中文在线观看| 日韩在线观看高清| 亚洲色图欧美另类| 国产欧美日韩另类视频免费观看| 国产精品h片在线播放| 日本老熟俱乐部h0930| 亚洲成人资源在线| 亚洲精品成人久久久998| 国产又粗又大又黄| 亚洲欧美中文字幕| 国产在线a视频| 日本一区二区成人| 国产日韩二区| a在线观看免费| 一本色道久久88精品综合| 国产调教打屁股xxxx网站| 国产日韩v精品一区二区| 99国内精品久久久久久久软件| www.国产com| 欧美一级电影网站| 亚洲人视频在线| 国产夜色精品一区二区av| 91嫩草在线| 一区二区视频免费观看| 亚洲一品av免费观看| 中文字幕 日本| 一区二区成人在线| 国产精品av免费| 国产一区二区三区蝌蚪| 国产精品福利无圣光在线一区| 日本三级午夜理伦三级三| 欧美一区二区三区啪啪| 99中文字幕在线| 亚洲免费伊人电影| 青青草原国产免费| 国产成人av电影免费在线观看| 成人国产精品一区| 国产精品熟女久久久久久| www.欧美精品一二三区| 我要看黄色一级片| 日韩欧美亚洲一区二区| 成人免费看片载| 午夜精品久久久久久久99樱桃| 在线观看17c| 91色|porny| 亚洲高清在线观看一区| 蜜臀久久99精品久久久久宅男| 国产精品视频网址| 国产日韩在线观看一区| 欧美亚洲成人精品| 一级二级三级视频| 青青草成人在线| 在线视频欧美亚洲| 97av在线视频| 88av在线视频| 日本电影亚洲天堂| 不卡视频在线播放| 国产精品黄色影片导航在线观看| 伊人网站在线观看| 国内成人精品一区| www.亚洲激情| 久久久女女女女999久久| 精品成人无码久久久久久| 九九热最新视频//这里只有精品| 国产精品黄色大片| 久久久久久网站| 波多野结衣二区三区| 久久久亚洲欧洲日产国码aⅴ| 波多野结衣在线电影| 97精品在线视频| www.激情五月.com| av噜噜色噜噜久久| 国产成人免费在线视频| 国产在线拍揄自揄拍无码| 综合亚洲深深色噜噜狠狠网站| 五月婷婷之综合激情| 精品久久久久久久久久| 成人免费无码大片a毛片| 欧美成人bangbros| 精品视频久久久久| 午夜伦理精品一区| 天堂久久久久va久久久久| 日本午夜精品一区二区三区| 欧美—级在线免费片| 久久国产精品国产精品| 制服丝袜中文字幕亚洲| 免费看的黄色录像| 欧美成人精品在线播放| 性做久久久久久久久久| 精品无码久久久久久久动漫| 国产喷白浆一区二区三区| 欧美婷婷精品激情| 欧美军同video69gay| 欧美精品久久久久久久久46p| 久久成人亚洲精品| 亚洲成人精品女人久久久| 久久综合毛片| 亚洲男人的天堂一区二区| 少妇一级淫片免费放播放| 国产亚洲欧洲高清| 不卡的日韩av| 亚洲精品久久区二区三区蜜桃臀 | 国产精品久久久久久在线| 亚洲自拍欧美色图| 成人免费的视频| 别急慢慢来1978如如2| 精品久久人人做人人爽| 国产偷人爽久久久久久老妇app| 成人综合av网| 中文字幕一区二区三区四区不卡 | 精品国产欧美一区二区| 男人天堂av在线播放| 亚洲a一级视频| 97超碰欧美中文字幕| 国产一区二区在线观看免费视频| 亚洲国模精品私拍| 性一交一乱一乱一视频| 一级黄色录像免费看| 欧洲精品视频在线观看| 日韩在线视频免费播放| 国产精品成人一区二区三区| 中文字幕一区在线观看视频| 亚洲一区二区自偷自拍| 国产成人在线亚洲欧美| 国产欧美久久久精品影院| 国产精品揄拍100视频| 高清一区二区三区日本久| 夫妻av一区二区| 五月天丁香社区| 97婷婷大伊香蕉精品视频| 91片黄在线观看| 欧美色图亚洲激情| 国产精品久久久久999| 国产日韩av一区| 日本成人午夜影院| 亚洲一区二区三区xxx视频| 一区二区在线观看av| 亚洲精品午夜久久久久久久| 欧美成人一区二区在线| 欧美日韩黄视频| 国产高潮流白浆喷水视频| 日韩视频在线视频| 国产香蕉精品视频一区二区三区| 美日韩一级片在线观看| 日本精品一二三区| 国产精品777| 亚洲午夜久久久| 中国精品一区二区| 老太脱裤子让老头玩xxxxx| 中文字幕久精品免费视频| 成人一区二区视频| 色哟哟一一国产精品| 免费精品视频一区| 精品国产露脸精彩对白| 国产又黄又大久久| 先锋影音av在线| 国产在线精品一区二区三区》| 欧美军同video69gay| 青娱乐精品在线视频| 你懂得在线视频| 国产欧美日韩一区二区三区| 8x8x8国产精品| 麻豆一区二区99久久久久| 欧亚乱熟女一区二区在线| 91系列在线播放| 欧美日韩夫妻久久| 免费久久精品视频| 五月天精品在线| 日韩一区二区电影在线观看| 亚洲欧美在线x视频| 久久久99精品免费观看不卡| 日本三级一区二区| 欧美黑人经典片免费观看| 欧美激情第1页| 午夜激情一区二区| 无码国产精品一区二区色情男同| 天天操夜夜操很很操| 成人免费网站在线| 日韩限制级电影在线观看| 懂色av一区二区在线播放| 欧美黄片一区二区三区| 五月天综合婷婷| 久久人人爽国产| 色先锋久久av资源部| 麻豆专区一区二区三区四区五区| 精品人伦一区二区三电影| 色播亚洲婷婷| 欧美高清在线观看| 欧美性色视频在线| 九九国产精品视频| 成人免费视频网站入口::| 欧美精品自拍视频| 国产精品色午夜在线观看| 制服丝袜中文字幕一区| 99热精品一区二区| 在线播放国产一区| 国产精品伦子伦| 麻豆中文字幕在线观看| 97成人超碰免| 日韩一区二区三区四区| 久久精品日产第一区二区三区高清版 | 91av在线播放视频| 欧美日韩在线精品一区二区三区激情| 狠狠色丁香九九婷婷综合五月| 国产亚洲欧美精品久久久www| 情侣黄网站免费看| 翡翠波斯猫1977年美国| 中文字幕亚洲综合| 色88888久久久久久影院野外| 丁香啪啪综合成人亚洲小说| 精品乱码一区内射人妻无码| 国产三级国产精品| 精品成在人线av无码免费看| 亚洲精品日韩av| 色在人av网站天堂精品| 日韩小视频在线观看专区| 国产精品福利影院| 国内精品不卡在线| 亚洲图片中文字幕| 女人裸体性做爰全过| xxxx一级片| 亚洲国产一区二区三区在线 | 午夜激情影院在线观看| 一本色道久久综合亚洲精品婷婷 | 国产日产欧美视频| 成人欧美一区二区三区在线观看| 中文字幕亚洲综合久久筱田步美| 日韩欧美在线字幕| 91视频观看免费| 日韩电影一区二区三区| 日本视频免费观看| 中文字幕在线观看2018| 成人做爰www看视频软件| 成年人视频网站免费观看| 日韩av电影免费播放|