亚洲va男人天堂_亚洲国产美女搞黄色_国产又粗又爽视频_久久成人18免费网站_99久久久国产精品无码网爆_日韩av电影手机在线_另类图片第一页_在线观看亚洲网站_欧美一级黄色大片_gogogo高清在线观看免费完整版

 
 

您當前的位置: 首頁 > 網絡技術  > 網絡應用教程 瀏覽
flashP2P協議rtmfp解析
發布時間:2015-12-01    點擊率:次    來源:m.memoryoverflow.cn    作者:電腦技術學習網

   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

 

  字段定義同上

來源 電腦技術網 m.memoryoverflow.cn
發表留言
發表留言請先登錄!
免責聲明:本站發布的信息和評論純屬網民個人行為,并不代表本站立場,如發現有違法信息或侵權行為,請直接與本站管理員聯系,我們將在收到您的信息后24小時內作出處理!
性生交大片免费看女人按摩| 91官网在线| 久久影视免费观看| 成人亚洲精品| 九九热精品在线观看| 91久久久久久久一区二区| 亚洲人成网站色在线观看 | 午夜综合激情| av福利导福航大全在线| 亚洲在线偷拍自拍| 日本一级大毛片a一| 国产精品入口免费视| 亚洲成在人线在线播放| 亚洲91视频| 成年人在线看| 亚洲三级黄色片| 国产一级二级视频| 粉嫩av免费一区二区三区| 日韩丝袜情趣美女图片| 免费国产亚洲视频| 精品视频在线一区二区在线| 国产成人香蕉在线视频网站| 日韩亚洲视频在线| 亚洲白拍色综合图区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产又粗又猛又爽又黄的视频四季| 美女三级99| 日韩精品视频在线观看免费| 成人精品视频一区二区三区尤物| 日本一区二区三区视频在线看| ·天天天天操| 国产69精品久久久久久久久久| 日韩欧美一区三区| 91产国在线观看动作片喷水| 福利一区福利二区微拍刺激| 久久福利一区| 国产精品久久久久久久久久久久久久久 | 久久人体视频| 污的网站在线观看| 全彩无遮拦全彩口工漫画全彩| 久久9999久久免费精品国产| 亚洲白虎美女被爆操| 亚洲国产精品一区二区尤物区| 久久精品欧美日韩精品| 成人在线国产| 欧美aaaaa性bbbbb小妇| 又黄又免费的网站| 色婷婷av一区二区三| 久久国产高清视频| 国产a级片免费观看| yellow视频在线观看一区二区| 国产亚洲在线播放| 亚洲一二三四在线观看| 麻豆国产欧美一区二区三区| 蜜桃精品噜噜噜成人av| 亚洲h片在线看| 丝袜美腿美女被狂躁在线观看| 色姑娘资源站| www.久久精品.com| 国产又粗又猛又爽又黄视频| 久草青青在线观看| 久久久久久九九九九| 欧美极品少妇xxxxⅹ免费视频| 3d动漫精品啪啪| 亚洲欧洲日韩在线| 国产麻豆日韩欧美久久| 一本精品一区二区三区| 久久99精品久久久野外观看| 亚洲麻豆精品| 高清色视频在线观看| 日本1区2区3区视频| 艳妇乳肉豪妇荡乳av| 国产成人福利在线| 成人在线看视频| 免费在线a视频| 欧美aⅴ在线观看| www.好吊操| 久久精彩视频| 久久久久久一区| 国外成人在线视频网站| 538国产精品一区二区免费视频| 91精品视频网| 欧美精品久久一区| 亚洲超碰精品一区二区| 国产传媒日韩欧美成人| 国精产品一区一区三区mba桃花| 99久久精品国产亚洲精品| 老司机亚洲精品一区二区| 精品午夜视频| 亚洲一二av| 天堂资源在线| 日本不卡视频| 国产区视频在线| h色视频在线观看| 黄色三及免费看| 美女又黄又免费| 欧性猛交ⅹxxx乱大交| 你懂的国产视频| 日本二区在线观看| 影音先锋制服丝袜| 麻豆短视频在线观看| 国产吞精囗交久久久| 簧片在线免费看| 国产免费xxx| 欧美精品七区| 国产精品我不卡| 国产精品影片在线观看| 超碰97人人做人人爱少妇| 欧美大片在线免费观看| 日韩av中文字幕在线播放| 亚洲成人动漫在线播放| 日韩一级片网站| 精品视频—区二区三区免费| 欧美一区二区三区视频免费| 一本色道久久加勒比精品| 国产精品免费网站在线观看| 成人va在线观看| 麻豆精品久久久| 91麻豆swag| 久久综合久久综合九色| 国产一二精品视频| 久久精品国产精品亚洲精品| 91麻豆免费视频| 亚洲天堂av一区| 精品视频123区在线观看| 欧美日韩亚州综合| 日韩在线免费视频| 亚洲人成在线观看| 日韩女优av电影在线观看| 亚洲成人免费网站| 韩国v欧美v日本v亚洲| 欧美亚州一区二区三区| 欧美黑人3p| 色综合天天色综合| 色综合五月婷婷| 日本少妇xxxx软件| 亚洲午夜福利在线观看| 亚洲s码欧洲m码国产av| 精品国产www| 国产女人爽到高潮a毛片| 秋霞av鲁丝片一区二区| 天天操天天擦| av超碰在线观看| 亚洲午夜网未来影院| 天堂免费视频| 午夜小视频在线| 国产精伦一区二区三区| 日韩免费小视频| 日韩精品一页| 美女av一区| 欧美黄色一区二区| 日韩av中文在线观看| 成人中文字幕在线| 在线观看欧美黄色| 亚洲成av人片在线观看香蕉| 国产成人91久久精品| 99在线免费观看视频| 各处沟厕大尺度偷拍女厕嘘嘘| 伊人影院在线观看视频| 国产日产在线观看| 日本一二三区不卡| 亚洲成人精品女人久久久| 免费国产阿v视频在线观看| 天堂在线观看| 在线heyzo| 国产伦久视频在线观看| 免费污视频在线观看| 95精品视频| 五月婷婷六月综合| 国产欧美视频在线观看| 在线视频欧美区| 97久久精品人人澡人人爽缅北| 成人av免费看| 亚洲最大的网站| 亚洲一区二区三区精品动漫| 一本久道中文无码字幕av| 色综合久久五月| 久久一区二区三区视频| 成年人免费影院| 你懂的在线播放| 高清视频在线观看三级| 欧美久久成人| 成人免费视频国产在线观看| 欧美一区二区三区四区久久| 国产啪精品视频| bt天堂新版中文在线地址| 最新国产精品自拍| 欧美一级视频免费| 调教视频免费在线观看| 亚洲视频在线免费| 亚洲一区二区欧美日韩| 欧日韩不卡在线视频| 亚洲国产日韩综合一区| 男女视频在线观看网站| 99热这里精品| 中文字幕69页| www视频免费| 日本aa在线| 亚洲成人原创| 日本一区二区三区dvd视频在线 | 99久久久久久99| 欧美日韩国产一级片| 欧美黑人xxxⅹ高潮交| 国产精品av免费观看| 久久丫精品忘忧草西安产品| 日韩欧美中文字幕不卡| 麻豆国产在线播放| 国产韩国精品一区二区三区| 亚洲国产日韩a在线播放 | 久久精品—区二区三区舞蹈| 国产成人精品综合网站| 亚洲精品成人一区| 久久久噜噜噜久噜久久综合| 欧美一区二区三级| 欧美激情导航| 久久精品国产亚洲av高清色欲 | 韩国av免费在线| 欧美hdfree性xxxx| av国产精品| 久久久亚洲精品一区二区三区| 久热99视频在线观看| 妺妺窝人体色www在线观看| www.com欧美| 波多野结衣在线高清| 91欧美在线| 色婷婷精品久久二区二区蜜臂av| 亚洲最大福利网站| 污污的视频在线免费观看| 欧美精品一区二区三区免费| 黄网站app在线观看| 日韩精品dvd| 国产免费观看久久| 日韩av免费在线| 免费一区二区三区在线观看| 91视频久久久| 992tv成人国产福利在线| 91综合久久| 在线不卡免费av| 在线观看亚洲视频啊啊啊啊| 少妇高潮一区二区三区喷水| 另类图片亚洲色图| 日韩一区二区三区免费播放| 日本一不卡视频| 精品视频在线看| 亚洲国产日韩欧美| 国产精品亚洲lv粉色| 亚洲啊v在线| 国产女人aaa级久久久级| 国产精品一二三视频| 欧美丰满熟妇bbbbbb| 岛国片免费观看| 久久一区二区三区喷水| 欧美一级片免费看| 久久久久久久久久网| 国产熟妇一区二区三区四区| 亚洲kkk444kkk在线观看| 精品在线播放| 欧美日韩的一区二区| avove在线观看| 天天综合网在线| 在这里有精品| 欧美丝袜丝nylons| 免费试看一区| 国产伦一区二区| 亚洲欧洲日韩精品在线| 五月天精品一区二区三区| 97人人模人人爽人人喊中文字| 国产精品久久久久久五月尺| 美女爆乳18禁www久久久久久| 国产欧美一区二区三区小说| 澳门av一区二区三区| 亚洲视频 欧洲视频| 久久大片网站| 粉嫩小泬无遮挡久久久久久| 精品久久国产一区| 欧美影片第一页| 国产一级不卡视频| 国产老女人av| 欧美va天堂| 在线日韩第一页| 丝袜老师办公室里做好紧好爽| 国产porny蝌蚪视频| 欧美freesex8一10精品| 亚洲黄色在线视频| 国产精品一区久久| 黄色av网站免费观看| 亚洲综合av一区二区三区| 欧美性极品xxxx做受| 人禽交欧美网站免费| 久久精品无码av| 99re久久| 亚洲另类在线视频| 国产成人精品一区二区三区福利 | 免费在线观看一级毛片| 国产不卡视频一区二区三区| 午夜免费在线观看精品视频| 97成人资源站| 亚洲涩涩在线| 欧美午夜一区二区| 日本三级黄色网址| 在线免费观看高清视频色| 麻豆精品网站| 国产精品久久电影观看| 成年人网站在线观看视频| 蜜臀av国内免费精品久久久夜夜| 亚洲国产日韩a在线播放性色| 国产一线二线三线女| 天天av导航| 精品一区二区免费在线观看| 精品中文字幕在线| 人妻少妇精品视频一区二区三区| 福利在线免费| 亚洲成人资源| 国产成人av在线播放| 亚洲天堂aaa| 欧美手机视频| 91国产精品电影| 一区二区小视频| 成人va天堂| 天天综合日日夜夜精品| 妞干网在线免费视频| 人人超碰在线| 国产精品久久久久久久午夜片| 国产911在线观看| 蜜桃色永久入口| 久久91精品| 久久精品亚洲热| 91资源在线播放| 345成人影院| 日韩欧美在线视频| 99视频在线观看视频| 午夜免费播放观看在线视频| 亚洲成人777| 色婷婷狠狠18禁久久| 呦呦在线视频| 欧美视频第二页| 精品无人区无码乱码毛片国产| 在线观看网站免费入口在线观看国内| 91精品国产综合久久久久久漫画 | 青草av在线| 欧美日韩国产影片| 日韩视频在线观看免费视频| 国产成人久久精品麻豆二区| 亚洲欧美国产高清va在线播| 黄色录像a级片| 狼人综合视频| 亚洲激情自拍图| 久久午夜夜伦鲁鲁片| 波多野一区二区| 精品国产乱码久久久久久影片| 天天操夜夜操av| 国产精品tv| 5566日本婷婷色中文字幕97| 丰满大乳奶做爰ⅹxx视频| 超碰激情在线| 亚洲精品一区二区在线| 韩国av中文字幕| 日韩免费特黄一二三区| 91精品视频免费| 尤物视频在线视频| 蜜臂av日日欢夜夜爽一区| 五月婷婷综合色| 91精彩视频| 久久亚洲捆绑美女| 国产区二区三区| 国产盗摄——sm在线视频| 亚洲美女性生活视频| 一区二区三区在线免费观看视频| 欧美日本在线| 麻豆蜜桃91| 在线观看午夜看亚太视频| 国产精品国产自产拍在线| 日本a级片在线播放| 日本中文字幕一区二区有码在线| 亚洲国产成人午夜在线一区| 男女激烈动态图| 国产鲁鲁视频在线观看免费| 欧美理论片在线| 欧美三日本三级少妇99| 中文字幕av亚洲精品一部二部| 国产成人亚洲欧美| 日本aa大片在线播放免费看| 国产亚洲综合性久久久影院| 在线观看高清免费视频| 伊人久久视频| 久久成人亚洲精品| 中文字幕第一页av| 久久综合色之久久综合| 色欲无码人妻久久精品| 欧美影院精品| 国产免费成人av| 人人做人人爽| 在线精品视频免费播放| 精品亚洲永久免费| 老司机精品在线| 亚洲综合国产精品| 有色激情视频免费在线| 欧美美女bb生活片| 成人黄色片在线观看| 老司机精品视频一区二区三区|