欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

TCP組包與粘包拆包:從MSS、Nagle算法到抓包實(shí)戰(zhàn)

TCP組包與粘包拆包:從MSS、Nagle算法到抓包實(shí)戰(zhàn) 1. 從一個(gè)抓包現(xiàn)場(chǎng)說起為什么你的數(shù)據(jù)包看起來“不完整”很多人第一次用抓包工具看TCP流量的時(shí)候都會(huì)有一種困惑明明應(yīng)用層發(fā)出去的是完整的一條消息怎么到了網(wǎng)絡(luò)層就變成了一堆零零散散的片段更讓人抓狂的是有些片段看起來只有幾十個(gè)字節(jié)有些卻接近一千五百字節(jié)毫無規(guī)律可言。如果你正好在做協(xié)議解析、流量還原或者自定義通信中間件這個(gè)問題不搞清楚后面的活兒基本沒法干。我自己最早接觸這個(gè)概念是在做一個(gè)設(shè)備數(shù)據(jù)采集網(wǎng)關(guān)的時(shí)候。設(shè)備端通過TCP往上送數(shù)據(jù)服務(wù)端收到的卻總是“半截”消息有時(shí)候兩條消息粘在一起有時(shí)候一條消息被切成三段。當(dāng)時(shí)第一反應(yīng)是代碼寫錯(cuò)了查了半天緩沖區(qū)讀寫邏輯最后才發(fā)現(xiàn)根子不在應(yīng)用層而在TCP本身的傳輸機(jī)制上。TCP組包這件事說白了就是搞清楚TCP在發(fā)送數(shù)據(jù)時(shí)是怎么把應(yīng)用層交下來的字節(jié)流切成一段一段發(fā)出去的以及接收端又該怎么把這些段重新拼回一條完整的消息。這篇文章適合三類人看第一類是正在做網(wǎng)絡(luò)編程、協(xié)議解析的開發(fā)者你遲早會(huì)碰到粘包和拆包的問題第二類是做流量分析、安全審計(jì)方向的朋友不理解組包邏輯抓到的包你根本還原不出原始語義第三類是對(duì)底層網(wǎng)絡(luò)感興趣、想弄明白“數(shù)據(jù)從A到B到底經(jīng)歷了什么”的技術(shù)愛好者。我會(huì)從為什么需要組包講起把MSS、MTU、滑動(dòng)窗口、Nagle算法這些繞不開的概念串起來再落到實(shí)際代碼里怎么處理最后分享幾個(gè)我踩過的坑和排查技巧。整篇內(nèi)容基于常見的TCP協(xié)議實(shí)現(xiàn)和工程實(shí)踐來寫具體參數(shù)以你實(shí)際環(huán)境為準(zhǔn)。2. 組包這件事到底在解決什么問題2.1 先搞清楚TCP是字節(jié)流不是消息流這是理解組包的第一道門檻也是最容易被忽略的一點(diǎn)。TCP協(xié)議在設(shè)計(jì)上只保證一件事你發(fā)出去的字節(jié)序列對(duì)方能按同樣的順序收到。注意它保證的是字節(jié)序列不是消息邊界。也就是說應(yīng)用層調(diào)用兩次send每次發(fā)100字節(jié)接收端可能一次recv就收到200字節(jié)也可能分四次每次收50字節(jié)。TCP根本不關(guān)心你應(yīng)用層是怎么劃分消息的它只負(fù)責(zé)把字節(jié)按順序搬過去。這個(gè)特性帶來的直接后果就是接收端必須自己想辦法判斷“一條完整消息到哪里結(jié)束”。而這個(gè)判斷的前提是你得先理解發(fā)送端是怎么把字節(jié)流切成一個(gè)個(gè)TCP段的。切的方式不同接收端看到的片段分布就不同處理策略也得跟著調(diào)整。用一個(gè)生活化的類比TCP就像一條傳送帶你把一堆零件放上去傳送帶只保證零件按順序到達(dá)對(duì)面但它不會(huì)告訴你“這一批是訂單A的零件下一批是訂單B的”。對(duì)面的人收到的是一堆混在一起的零件得自己根據(jù)零件上的標(biāo)記來分組。組包就是研究傳送帶是怎么把零件分批送出去的以及對(duì)面該怎么分組。2.2 不組包行不行IP層的硬性限制有人可能會(huì)想既然切來切去這么麻煩那我不切了應(yīng)用層給多少我就一次發(fā)多少不行嗎理論上可以但物理網(wǎng)絡(luò)不允許。TCP段最終要交給IP層封裝成IP數(shù)據(jù)報(bào)發(fā)出去而IP數(shù)據(jù)報(bào)有一個(gè)硬性上限MTUMaximum Transmission Unit最大傳輸單元。以太網(wǎng)環(huán)境下這個(gè)值通常是1500字節(jié)。超過這個(gè)大小的數(shù)據(jù)報(bào)要么被分片要么根本發(fā)不出去。IP分片這件事本身是有代價(jià)的。一個(gè)IP數(shù)據(jù)報(bào)被分片后只要其中任何一片丟失整個(gè)數(shù)據(jù)報(bào)都得重傳效率極低。而且很多中間設(shè)備對(duì)分片的處理策略不一致有的直接丟棄有的重組超時(shí)。所以TCP寧愿自己在傳輸層就把數(shù)據(jù)切好讓每個(gè)TCP段封裝成IP數(shù)據(jù)報(bào)后不超過MTU從源頭上避免IP分片。這就是組包最原始的驅(qū)動(dòng)力在傳輸層主動(dòng)切分規(guī)避網(wǎng)絡(luò)層的分片風(fēng)險(xiǎn)。2.3 MSSTCP段大小的天花板TCP切分?jǐn)?shù)據(jù)時(shí)依據(jù)的核心參數(shù)叫MSSMaximum Segment Size最大報(bào)文段長(zhǎng)度。它指的是一個(gè)TCP段中數(shù)據(jù)部分的最大字節(jié)數(shù)注意不包括TCP頭部和IP頭部。MSS的取值不是隨便定的它和MTU有直接關(guān)系MSS MTU - IP頭部長(zhǎng)度 - TCP頭部長(zhǎng)度以標(biāo)準(zhǔn)以太網(wǎng)為例MTU是1500字節(jié)IP頭部最小20字節(jié)不含選項(xiàng)TCP頭部最小20字節(jié)不含選項(xiàng)那么MSS就是1500 - 20 - 20 1460字節(jié)。這就是為什么你抓包時(shí)經(jīng)??吹絋CP段的數(shù)據(jù)部分最大就是1460字節(jié)這個(gè)數(shù)字不是拍腦袋來的是算出來的。MSS在TCP三次握手階段通過SYN報(bào)文協(xié)商。雙方各自在SYN里帶上自己能接受的最大MSS值最終取兩者中的較小值作為實(shí)際使用的MSS。這個(gè)協(xié)商過程很重要因?yàn)橥ㄐ艃啥丝赡芴幵诓煌W(wǎng)絡(luò)環(huán)境里MTU不一樣。比如一端是以太網(wǎng)1500另一端是某種隧道環(huán)境可能只有1400協(xié)商后就會(huì)用較小的那個(gè)值避免發(fā)出去的數(shù)據(jù)包在中間被丟棄。2.4 組包和粘包一對(duì)孿生問題理解了發(fā)送端的切分邏輯接收端的問題就清晰了。接收端面對(duì)的是一個(gè)連續(xù)的字節(jié)流它需要回答一個(gè)問題從哪個(gè)字節(jié)到哪個(gè)字節(jié)算一條完整消息如果判斷錯(cuò)了就會(huì)出現(xiàn)兩種典型錯(cuò)誤粘包兩條或多條消息被當(dāng)成一條處理了。比如發(fā)送端連續(xù)發(fā)了消息A和消息B接收端一次recv把A和B的數(shù)據(jù)都讀出來了如果程序沒做邊界判斷就會(huì)把AB當(dāng)成一條消息解析直接解析失敗或者產(chǎn)生錯(cuò)誤結(jié)果。拆包一條消息被拆成多次recv才讀完。比如消息有5000字節(jié)但MSS是1460發(fā)送端至少切成4個(gè)段發(fā)出去接收端第一次recv可能只讀到1460字節(jié)如果程序認(rèn)為這就是全部就會(huì)丟掉后面的數(shù)據(jù)。這兩個(gè)問題的根源都在于TCP不保留消息邊界。解決思路無非兩種要么在應(yīng)用層協(xié)議里自己定義邊界比如長(zhǎng)度字段、分隔符要么用固定長(zhǎng)度的消息。具體選哪種取決于你的業(yè)務(wù)場(chǎng)景和性能要求。3. 發(fā)送端是怎么決定“怎么切”的3.1 發(fā)送緩沖區(qū)的角色應(yīng)用層調(diào)用send的時(shí)候數(shù)據(jù)并不是直接飛到網(wǎng)卡上的而是先進(jìn)入發(fā)送緩沖區(qū)send buffer。這個(gè)緩沖區(qū)是內(nèi)核維護(hù)的大小可以通過SO_SNDBUF選項(xiàng)調(diào)整。TCP發(fā)送數(shù)據(jù)時(shí)是從這個(gè)緩沖區(qū)里取數(shù)據(jù)來組包的。理解這一點(diǎn)很關(guān)鍵因?yàn)樗馕吨鴳?yīng)用層的一次send和底層的一個(gè)TCP段之間沒有一一對(duì)應(yīng)關(guān)系。舉個(gè)例子應(yīng)用層連續(xù)調(diào)了三次send每次發(fā)100字節(jié)總共300字節(jié)進(jìn)入發(fā)送緩沖區(qū)。如果當(dāng)前MSS是1460且沒有其他限制TCP完全可能把這300字節(jié)合并成一個(gè)TCP段發(fā)出去。反過來應(yīng)用層一次send了5000字節(jié)緩沖區(qū)里有了5000字節(jié)TCP會(huì)根據(jù)MSS、擁塞窗口、接收窗口等因素決定一次發(fā)多少可能切成4個(gè)段分批發(fā)。所以組包的第一層邏輯是TCP從發(fā)送緩沖區(qū)取數(shù)據(jù)取多少由多個(gè)因素共同決定。這些因素包括MSS、擁塞窗口cwnd、接收端通告的接收窗口rwnd、以及Nagle算法等。3.2 擁塞窗口和接收窗口的雙重約束發(fā)送端一次能發(fā)多少數(shù)據(jù)不是它自己說了算的要同時(shí)滿足兩個(gè)窗口的限制接收窗口rwnd接收端在ACK里通告自己還有多少緩沖區(qū)空間能收數(shù)據(jù)。如果接收端處理慢緩沖區(qū)滿了rwnd就會(huì)變小甚至變成0發(fā)送端就得停下來等。擁塞窗口cwnd發(fā)送端根據(jù)網(wǎng)絡(luò)狀況自己維護(hù)的一個(gè)值用來避免把網(wǎng)絡(luò)壓垮。剛開始慢啟動(dòng)階段cwnd很小每收到一個(gè)ACK就翻倍增長(zhǎng)遇到丟包就減半。實(shí)際能發(fā)送的數(shù)據(jù)量取兩者的較小值。這意味著即使MSS是1460如果當(dāng)前cwnd只有3000那一次最多也就發(fā)3000字節(jié)左右可能切成3個(gè)段。抓包時(shí)看到段的大小參差不齊很多時(shí)候就是窗口在動(dòng)態(tài)變化導(dǎo)致的。3.3 Nagle算法小包合并的功與過Nagle算法的核心思想很簡(jiǎn)單如果發(fā)送端還有未被ACK確認(rèn)的小數(shù)據(jù)就先攢著等收到ACK或者攢夠一個(gè)MSS再發(fā)。目的是減少網(wǎng)絡(luò)上的小包數(shù)量提高帶寬利用率。這個(gè)算法在早期網(wǎng)絡(luò)帶寬緊張的時(shí)候很有價(jià)值但在很多現(xiàn)代場(chǎng)景下反而成了麻煩。我做過一個(gè)實(shí)時(shí)控制類的項(xiàng)目指令包都很小幾十字節(jié)。開了Nagle算法之后指令發(fā)出去要等前一個(gè)的ACK回來才發(fā)下一個(gè)延遲明顯增加。后來通過設(shè)置TCP_NODELAY選項(xiàng)關(guān)掉了Nagle算法延遲立刻降下來了。所以Nagle算法不是好不好的問題是適不適合的問題場(chǎng)景類型是否建議開啟Nagle原因大批量文件傳輸建議開啟合并小包減少頭部開銷提升吞吐實(shí)時(shí)交互/控制指令建議關(guān)閉小包需要立即發(fā)送延遲優(yōu)先請(qǐng)求-響應(yīng)模式視情況如果請(qǐng)求包很小且頻繁關(guān)閉更好游戲/音視頻信令建議關(guān)閉延遲敏感小包合并會(huì)引入額外等待關(guān)閉Nagle算法的方法很簡(jiǎn)單在socket上設(shè)置int flag 1; setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)flag, sizeof(int));注意關(guān)閉Nagle算法后小包會(huì)立即發(fā)送網(wǎng)絡(luò)上的包數(shù)量會(huì)增加。如果你的場(chǎng)景既需要低延遲又擔(dān)心包太多可以考慮應(yīng)用層自己做批量合并而不是依賴Nagle。3.4 一個(gè)組包過程的完整推演假設(shè)應(yīng)用層要發(fā)送一條2000字節(jié)的消息當(dāng)前MSS為1460cwnd足夠大rwnd也足夠Nagle關(guān)閉。發(fā)送端的處理過程大致如下應(yīng)用層調(diào)用send2000字節(jié)進(jìn)入發(fā)送緩沖區(qū)。TCP從緩沖區(qū)取數(shù)據(jù)第一個(gè)段取1460字節(jié)受MSS限制加上TCP頭部和IP頭部封裝成IP數(shù)據(jù)報(bào)發(fā)出。緩沖區(qū)還剩540字節(jié)TCP繼續(xù)取這540字節(jié)封裝成第二個(gè)段發(fā)出。接收端收到兩個(gè)段分別ACK確認(rèn)。如果發(fā)送端在等ACK期間又有新數(shù)據(jù)進(jìn)入緩沖區(qū)會(huì)繼續(xù)組包發(fā)送。這個(gè)例子里一條2000字節(jié)的消息被切成了1460540兩個(gè)段。接收端如果第一次recv只讀了1460字節(jié)就必須繼續(xù)讀第二次才能拿到完整的2000字節(jié)。這就是拆包的典型場(chǎng)景。4. 接收端怎么把碎片拼回完整消息4.1 接收緩沖區(qū)的合并行為接收端的情況和發(fā)送端對(duì)稱。TCP收到段之后先把數(shù)據(jù)放進(jìn)接收緩沖區(qū)receive buffer然后應(yīng)用層調(diào)用recv從緩沖區(qū)里讀數(shù)據(jù)。關(guān)鍵點(diǎn)在于TCP協(xié)議棧在把數(shù)據(jù)放入接收緩沖區(qū)時(shí)會(huì)按序列號(hào)排序并合并連續(xù)的數(shù)據(jù)。也就是說如果先收到序列號(hào)1000-2459的段再收到2460-2999的段緩沖區(qū)里就是連續(xù)的1000-2999應(yīng)用層一次recv可能把這兩段的數(shù)據(jù)都讀出來。這個(gè)合并行為是粘包問題的直接來源。發(fā)送端明明分兩次發(fā)的接收端一次就讀出來了如果應(yīng)用層沒有邊界判斷邏輯就會(huì)把兩條消息當(dāng)成一條。4.2 應(yīng)用層定義邊界的三種主流方案既然TCP不提供邊界應(yīng)用層就得自己定義。常見的方案有三種各有適用場(chǎng)景方案一固定長(zhǎng)度消息。每條消息長(zhǎng)度固定比如都是128字節(jié)。接收端每次讀128字節(jié)就是一條消息。優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單解析快缺點(diǎn)是靈活性差消息長(zhǎng)度不一時(shí)會(huì)浪費(fèi)帶寬。適合定長(zhǎng)指令、定長(zhǎng)狀態(tài)上報(bào)這類場(chǎng)景。方案二分隔符。用特殊字符或字符串作為消息結(jié)束標(biāo)記比如換行符、特定字節(jié)序列。接收端不斷讀取直到遇到分隔符就算一條完整消息。HTTP的頭部、很多文本協(xié)議都用這種方式。缺點(diǎn)是分隔符本身不能出現(xiàn)在消息內(nèi)容里否則需要轉(zhuǎn)義處理起來麻煩。方案三長(zhǎng)度字段。在消息頭部放一個(gè)固定長(zhǎng)度的字段標(biāo)明消息體有多少字節(jié)。接收端先讀固定長(zhǎng)度的頭部解析出長(zhǎng)度再讀對(duì)應(yīng)長(zhǎng)度的消息體。這是最通用、最可靠的方案二進(jìn)制協(xié)議基本都用這種。缺點(diǎn)是解析邏輯稍復(fù)雜需要處理頭部和體分開讀的情況。方案優(yōu)點(diǎn)缺點(diǎn)適用場(chǎng)景固定長(zhǎng)度實(shí)現(xiàn)最簡(jiǎn)單解析快不靈活浪費(fèi)帶寬定長(zhǎng)指令、心跳包分隔符可讀性好文本友好需轉(zhuǎn)義解析效率低文本協(xié)議、日志傳輸長(zhǎng)度字段通用性強(qiáng)效率高實(shí)現(xiàn)稍復(fù)雜二進(jìn)制協(xié)議、RPC框架4.3 長(zhǎng)度字段方案的完整實(shí)現(xiàn)思路以長(zhǎng)度字段方案為例接收端的處理邏輯需要分兩步先讀頭部再讀體。但這里有個(gè)坑recv不保證一次能讀滿你想要的字節(jié)數(shù)。你可能想讀4字節(jié)的頭部結(jié)果只讀到2字節(jié)。所以必須用一個(gè)循環(huán)來確保讀滿。下面是一個(gè)簡(jiǎn)化的處理框架用偽代碼表示def read_exact(sock, n): 確保從socket讀滿n字節(jié) buf b while len(buf) n: chunk sock.recv(n - len(buf)) if not chunk: raise ConnectionError(連接斷開) buf chunk return buf def read_message(sock): 讀取一條完整消息 # 第一步讀4字節(jié)頭部解析出消息體長(zhǎng)度 header read_exact(sock, 4) body_len int.from_bytes(header, big) # 第二步讀消息體 body read_exact(sock, body_len) return body這個(gè)框架的核心是read_exact函數(shù)它保證了“讀滿指定字節(jié)數(shù)”這個(gè)語義。不管底層TCP怎么切分應(yīng)用層看到的都是完整的頭部和完整的體。這就是解決拆包問題的標(biāo)準(zhǔn)做法。實(shí)操心得read_exact里的循環(huán)條件是len(buf) n不是len(buf) ! n。雖然在這個(gè)場(chǎng)景下兩者等價(jià)但用更符合語義也更安全。另外recv返回空字節(jié)串表示對(duì)端關(guān)閉了連接必須處理否則會(huì)死循環(huán)。4.4 緩沖區(qū)大小對(duì)組包的影響接收緩沖區(qū)的大小會(huì)影響recv一次能讀到的數(shù)據(jù)量。如果緩沖區(qū)設(shè)得很大而發(fā)送端發(fā)得快一次recv可能讀到多條消息的數(shù)據(jù)粘包概率增加。如果緩沖區(qū)設(shè)得很小可能一條消息要分很多次才能讀完拆包次數(shù)增加。我的經(jīng)驗(yàn)是接收緩沖區(qū)不要設(shè)得過大一般設(shè)為MSS的幾倍就夠了。更重要的是應(yīng)用層的讀取邏輯必須能正確處理“一次讀到多條”和“一條分多次讀”這兩種情況。只要read_exact這類函數(shù)寫對(duì)了緩沖區(qū)大小的影響就被屏蔽了。5. 抓包分析實(shí)戰(zhàn)從Wireshark看組包過程5.1 抓包前的準(zhǔn)備工作要觀察TCP組包過程最直接的工具就是抓包軟件。在開始之前有幾個(gè)設(shè)置需要確認(rèn)選擇正確的網(wǎng)卡。如果有多塊網(wǎng)卡要選實(shí)際承載流量的那塊。設(shè)置合適的抓包過濾器。比如只想看某個(gè)端口的流量可以用tcp port 8080避免抓到無關(guān)數(shù)據(jù)干擾分析。關(guān)閉網(wǎng)卡的分載功能如果條件允許。某些網(wǎng)卡的TSO、LRO等分載功能會(huì)讓抓到的包和實(shí)際發(fā)出的包不一致影響判斷。5.2 識(shí)別組包行為的關(guān)鍵字段抓到包之后重點(diǎn)看這幾個(gè)字段Sequence Number序列號(hào)標(biāo)識(shí)這個(gè)段的數(shù)據(jù)在字節(jié)流中的起始位置。通過相鄰段的序列號(hào)差值可以算出每個(gè)段攜帶了多少字節(jié)數(shù)據(jù)。Acknowledgment Number確認(rèn)號(hào)接收端期望收到的下一個(gè)字節(jié)的序列號(hào)。Flags看PSH標(biāo)志。發(fā)送端設(shè)置PSH表示希望接收端盡快把數(shù)據(jù)交給應(yīng)用層但這不是強(qiáng)制的接收端可以忽略。Window Size接收端通告的接收窗口大小反映接收緩沖區(qū)的剩余空間。TCP Segment LenWireshark直接給出的段數(shù)據(jù)長(zhǎng)度最直觀。5.3 一個(gè)真實(shí)的組包分析案例假設(shè)我們抓到了一段流量應(yīng)用層發(fā)送了一條3000字節(jié)的消息MSS為1460。抓包結(jié)果可能長(zhǎng)這樣包序號(hào)序列號(hào)段長(zhǎng)度標(biāo)志說明111460PSH,ACK第一個(gè)段攜帶1460字節(jié)214611460ACK第二個(gè)段攜帶1460字節(jié)3292180PSH,ACK第三個(gè)段攜帶剩余80字節(jié)4-0ACK接收端確認(rèn)收到2921803001字節(jié)從序列號(hào)可以看出第一個(gè)段從1開始長(zhǎng)度1460所以下一個(gè)段從1461開始。第二個(gè)段長(zhǎng)度1460下一個(gè)從2921開始。第三個(gè)段長(zhǎng)度80總共3000字節(jié)和消息長(zhǎng)度吻合。這就是一次典型的組包過程3000字節(jié)被切成了1460146080三個(gè)段。注意第一個(gè)和第三個(gè)段帶了PSH標(biāo)志中間那個(gè)沒有。這是因?yàn)榘l(fā)送端在發(fā)送第一個(gè)段時(shí)緩沖區(qū)里可能只有部分?jǐn)?shù)據(jù)設(shè)置了PSH希望對(duì)方盡快處理發(fā)送第二個(gè)段時(shí)數(shù)據(jù)還在陸續(xù)寫入沒設(shè)PSH第三個(gè)段是最后一部分又設(shè)了PSH。PSH的設(shè)置和發(fā)送端的寫入節(jié)奏有關(guān)不是固定的。5.4 從抓包結(jié)果反推應(yīng)用層行為有經(jīng)驗(yàn)的開發(fā)者能從抓包結(jié)果反推出不少應(yīng)用層的信息。比如如果看到大量小段幾十字節(jié)且間隔規(guī)律可能是應(yīng)用層在頻繁發(fā)送小消息且沒關(guān)Nagle算法。如果看到段大小總是1460的整數(shù)倍附近說明發(fā)送端在盡量填滿MSS可能是批量數(shù)據(jù)傳輸。如果看到接收窗口頻繁變小說明接收端處理速度跟不上發(fā)送速度應(yīng)用層可能有性能瓶頸。如果看到重傳說明有丟包需要檢查網(wǎng)絡(luò)質(zhì)量或擁塞控制參數(shù)。這些推斷不是百分百準(zhǔn)確但能給你排查問題提供方向。我排查過一個(gè)吞吐上不去的問題抓包發(fā)現(xiàn)發(fā)送端一直在等接收端的窗口更新接收窗口長(zhǎng)期只有幾百字節(jié)。后來查出來是接收端應(yīng)用層讀取太慢緩沖區(qū)一直滿著。把接收端的處理邏輯優(yōu)化后窗口恢復(fù)正常吞吐立刻上去了。6. 常見問題與排查技巧實(shí)錄6.1 粘包拆包問題速查表現(xiàn)象可能原因排查方法解決思路收到半截消息拆包一次recv沒讀滿打印每次recv的字節(jié)數(shù)用read_exact確保讀滿多條消息混在一起粘包一次recv讀了多條檢查消息邊界判斷邏輯加長(zhǎng)度字段或分隔符解析偶發(fā)解析失敗粘包拆包交替出現(xiàn)抓包看段分布完善應(yīng)用層緩沖和解析小包特別多Nagle關(guān)閉或消息本身小抓包看段長(zhǎng)度視場(chǎng)景決定是否開Nagle吞吐上不去窗口太小或緩沖區(qū)不足抓包看Window Size調(diào)大緩沖區(qū)或優(yōu)化處理速度延遲忽高忽低擁塞控制或Nagle影響對(duì)比開關(guān)Nagle的延遲延遲敏感場(chǎng)景關(guān)Nagle6.2 幾個(gè)容易踩的坑坑一以為一次send對(duì)應(yīng)一次recv。這是新手最常見的誤解。TCP不保證send和recv的一一對(duì)應(yīng)任何依賴這個(gè)假設(shè)的代碼都是不可靠的。我見過有人寫測(cè)試代碼客戶端send一次服務(wù)端recv一次就認(rèn)為收完了結(jié)果在本地測(cè)試沒問題一上真實(shí)網(wǎng)絡(luò)就出各種詭異bug。本地回環(huán)接口MTU很大通常65535很少觸發(fā)拆包所以問題被掩蓋了。坑二用sleep來等數(shù)據(jù)收完。有人為了等一條消息的所有片段到達(dá)在recv之間加sleep。這種做法極其不可靠網(wǎng)絡(luò)延遲不可預(yù)測(cè)sleep短了不夠長(zhǎng)了浪費(fèi)性能。正確做法是用長(zhǎng)度字段或分隔符來判斷消息邊界而不是靠時(shí)間??尤雎詒ecv返回0的情況。recv返回0表示對(duì)端正常關(guān)閉了連接不是錯(cuò)誤。如果不處理循環(huán)會(huì)一直轉(zhuǎn)CPU跑滿。處理方式很簡(jiǎn)單recv返回0時(shí)跳出循環(huán)關(guān)閉連接。坑四緩沖區(qū)開得過大。有人覺得緩沖區(qū)越大越好直接開到幾MB。實(shí)際上過大的緩沖區(qū)會(huì)占用大量?jī)?nèi)存而且可能讓粘包問題更嚴(yán)重。合理的做法是根據(jù)消息大小和并發(fā)連接數(shù)來估算一般幾十KB到幾百KB就夠了。坑五混淆MSS和MTU。MSS是TCP數(shù)據(jù)部分的最大長(zhǎng)度MTU是整個(gè)IP數(shù)據(jù)報(bào)的最大長(zhǎng)度兩者差了40字節(jié)IP頭TCP頭。設(shè)置參數(shù)時(shí)搞混了會(huì)導(dǎo)致包大小不對(duì)。記住那個(gè)公式MSS MTU - 40無選項(xiàng)時(shí)。6.3 一個(gè)排查粘包問題的完整過程分享一個(gè)我實(shí)際排查過的案例。某服務(wù)端偶爾報(bào)“消息解析失敗”頻率不高但一直存在。排查過程如下第一步在解析失敗的地方加日志打印收到的原始字節(jié)和長(zhǎng)度。發(fā)現(xiàn)失敗時(shí)收到的數(shù)據(jù)長(zhǎng)度比預(yù)期的一條消息長(zhǎng)明顯是兩條消息粘在一起了。第二步檢查應(yīng)用層解析邏輯。發(fā)現(xiàn)代碼是這么寫的recv一次然后直接按一條消息解析。沒有循環(huán)沒有邊界判斷。這就是根因。第三步抓包確認(rèn)。抓包顯示發(fā)送端確實(shí)分兩次發(fā)了消息但接收端一次recv把兩條都讀出來了。因?yàn)閮蓷l消息都很小加起來也沒超過接收緩沖區(qū)TCP合并后一起交給了應(yīng)用層。第四步修復(fù)。引入長(zhǎng)度字段用read_exact先讀頭部再讀體循環(huán)處理直到緩沖區(qū)沒有完整消息為止。修復(fù)后再?zèng)]出現(xiàn)過解析失敗。這個(gè)案例的教訓(xùn)是不要假設(shè)recv的行為要用協(xié)議來定義邊界。只要邊界定義清楚了TCP怎么切、怎么合都不影響應(yīng)用層的正確性。6.4 性能優(yōu)化的小技巧如果你已經(jīng)正確處理了組包拆包但性能還是不滿意可以試試這幾個(gè)方向調(diào)整SO_SNDBUF和SO_RCVBUF適當(dāng)增大緩沖區(qū)可以減少系統(tǒng)調(diào)用次數(shù)提升吞吐。但別太大夠用就行。使用writev/readv如果需要發(fā)送多個(gè)不連續(xù)的內(nèi)存塊用writev可以一次系統(tǒng)調(diào)用發(fā)出去減少開銷。考慮TCP_CORK和Nagle類似但更激進(jìn)可以強(qiáng)制攢夠一定數(shù)據(jù)再發(fā)。適合批量發(fā)送場(chǎng)景但要注意別把延遲敏感的數(shù)據(jù)也攢進(jìn)去了。批量ACK接收端可以延遲發(fā)送ACK攢幾個(gè)段一起確認(rèn)減少ACK包數(shù)量。Linux下有TCP_QUICKACK選項(xiàng)可以控制。這些優(yōu)化都要在正確性有保障的前提下做。如果組包拆包邏輯本身有問題優(yōu)化只會(huì)讓問題更難排查。7. 我個(gè)人在實(shí)際操作中的幾點(diǎn)體會(huì)組包這個(gè)話題看文檔覺得簡(jiǎn)單真到代碼里全是細(xì)節(jié)。我最大的體會(huì)是永遠(yuǎn)不要相信“一次send對(duì)應(yīng)一次recv”這個(gè)假設(shè)。不管你的測(cè)試環(huán)境多穩(wěn)定真實(shí)網(wǎng)絡(luò)里什么情況都可能發(fā)生。把邊界判斷做扎實(shí)比什么都重要。另一個(gè)體會(huì)是抓包工具要會(huì)用但不能全信。網(wǎng)卡分載、抓包點(diǎn)位置、時(shí)間戳精度都會(huì)影響你看到的結(jié)果。最好結(jié)合應(yīng)用層日志一起分析兩邊對(duì)照才能定位準(zhǔn)確。我一般會(huì)在關(guān)鍵路徑上打日志記錄每次recv的字節(jié)數(shù)和解析結(jié)果出問題時(shí)和抓包結(jié)果對(duì)照很快就能找到根因。最后分享一個(gè)小技巧如果你在寫自定義協(xié)議長(zhǎng)度字段建議用固定長(zhǎng)度的大端序整數(shù)比如4字節(jié)。大端序是網(wǎng)絡(luò)字節(jié)序跨平臺(tái)不會(huì)出問題固定長(zhǎng)度讓解析邏輯簡(jiǎn)單4字節(jié)能表示4GB的長(zhǎng)度絕大多數(shù)場(chǎng)景都?jí)蛴?。這個(gè)設(shè)計(jì)看起來不起眼但能省掉后面很多麻煩。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
综合五月草| 激情视频91| www五月天com| 色99欧洲色19| 99色.com| 婷婷六月综合激情| \\五月天婷婷激情| 精品国产a| 337午夜福利| 伊人99久久| 99色色网| AV79| 999久久久国产精品| 久久丁香五月天| 色综合视频在线| 丁香五月在线观看完整版| 五月天福利影院导航| 婷婷丁香激情综合色情| 日本欧美成人片AAAA| 五月在线婷色| 超热久碰.com| 91啪啪视频| 色婷婷综合网| 天天干天天日蜜臀av| 色婷婷狠狠18| 久久99视频| 婷婷五月天伊人| 精品色情一区二区三区四区| 色97啪啪| 色五月综合| 色色色.com| 操日本色| 亚洲综合五月天| anquye五月| 91人人人人人人人| 久久久久久久人妻| 岛国av网站| 操操人人| 欧美A片在线视频免费观看| 99精品综合视频| 亚洲综合视频天天精品| 日韩操女| 久久综合九色综合88i| 91黄址| 艳妇野外情欲放荡HD| 五月天无码视屏播放| A片试看120分钟做受图片| 成人狠狠成人狠狠成人狠狠成人狠狠| 91玖玖| 白人荫道BBWBBB大荫道| WWW.99热| 色情五月综合婷婷| 五月丁香六月婷婷的女人| 五月激情综合网| 午夜在线成人网站免费观看| 99精品国产乱码久久久人妻| 五月婷婷无码| 成人 在线 日韩| 97深爱伊人综合| 91超级碰人人操| 国产成人片| 色婷天天| 狠狠狠狠狠狠狠狠| 婷婷黄色五月天在线视频| 久久九九九九| 91一起操| 久久久久久人妻| 久久色亭亭五月天| 婷婷五月另类网站| 亚洲色模骚货| 欧美综合五月丁香五月天| 超碰免费成人| 女同激情久久av久久| 五月丁香花成人社区| 玖玖色综合网| 色综合久久无码| 色婷婷av在线观看| 天天插天天插| 国产67194| 九九热精品99| 深爱激情五月天| 婷婷综合伊人丁香| 色五月天视频| 天天色官网| 婷婷久久欧美| 天天爽成人综合网站| 99亚洲视频| 男人的天堂99| 欧美人人超级碰| 亚洲综合五月天婷婷| 五月婷视频| 五月天激情AV| 99色性爰网络| 日韩aaaaa| 久久人妻高清中文| 99这里只有精品|v| 美国十月色婷婷在线观看| 色操b| 99免费热在线精品| 777久久综合视频| 久久婷婷五月天懂色| 国产老熟妇亲子乱对白| 久久99视频| 九九性爱网| 97ai婷婷| 婷婷六月色开| 超碰在线看| 97干网站| 人人爽天天爽| 日韩无码成人电影| 亚洲综合五月天婷婷| 色婷婷小说| 99精品成人无码A片观看金桔| www狠狠| 婷婷五月天成人| 激情色色色| 九九热超碰| 天天噜噜| 色综合天天| 综合网亚洲| 狠狠色婷婷7777久| 99热在线观看| 另类亚洲电影| 激情婷婷丁香色五月| 2015WWW永久免费观看播放| 操操日韩| 情婷婷五月天在线| 99精品视频网| 婷婷久久五月天| 国产人妻777人伦精品HD| 97人碰人操| 97操碰98| www.99久| 色色丁香五月婷婷| 婷婷五月天成人综合网| 天天噜| 色婷婷久久综合| 一区二区免费看| 任你搞网站| 成人在线网址| 精品久久久久久久人妻| 色九区| 五月天婷婷色| 婷婷丁香色情| 丁香婷在线| 99热这里有精品| 超碰人人91| 色色色五月婷婷| 国产.亚洲.欧洲视频在线| 国产91视频| 午夜不卡久久精品无码免费| 九九热婷婷| 九九操操| 五月丁香婷色| 人人97碰| 五月做爱| 这里只有精品,日韩视频| 亚洲第一视频 久久| 五月天激情网站| 亚洲激情婷婷| 久久亭亭电影| 五月丁香网站在线播放| 大香蕉综合| 乱精品一区字幕二区| 99热欧美偷拍| 可以免费看AV网站| 99噜噜噜在线播放| 丁香五月婷婷色情综合| 久久大香免费| 欧美韩日AAA网站| 婷婷婷婷婷婷婷婷| 懂色av粉嫩AV蜜臀AV| 五月婷婷啪啪啪| 久色国产| 超碰av在| 成人小说 五月天 婷婷| 99热综合网| 婷婷丁香黄色| 五月天深爱激情网| 99riav 亚洲| 久久久999精品| 五月婷视屏在线观看| 久久久这里有精品| 五月婷婷偷拍| 五月丁香激情综合网| 老美AA片| 五月丁香啪啪激情| 亚洲视频在线观看| 天天舔夜夜操www com| 久久综合五月天| 亚洲黄色网址| 欧美性丁香色色五月天| 伊人无码高清| 久久五月丁香综合17C| 99在线69| 天天搞天天色综合| 久久久99久久| 欧美久久婷婷| 久99久视频| 激情婷| 丁香五月综合福利视频导航| 亚洲日韩一页精品发布| 无码中文一区二区三区| 中文字幕按摩做爰| 99色在线观看| 五月天激情小说婷婷基地| 久9久9久9久9久9久9| 五月婷九九草| 日日噜噜夜夜狠狠久久丁香六月| 伊人大香蕉在线视频| 色射婷婷五月天| 大地资源色婷婷视频在线| 免费国产VA国产免费| 婷婷天堂站| 操日视频| 深爱婷婷网| 丁香色五月 97干| 丁香五月欧美色综合| 日韩av网站在线观看| 吉澤明步Av一區二區| 91黄色五月天视频| 色综合99| 国产亚洲99久久精品| 五月天婷婷爱| 五月丁香美女视频| 天天色粽合合合合合合合| 亚洲色色色色色| 色久天| 深爱婷婷基地| 亚洲国产精品VA在线看黑人| 婷婷六月激情在线视频| 91超级碰在线| 99精品综合| 99热这里只有精品在线免费| 国产操B| 五月天婷婷丁香六月| 日日操无码| 天天草天天爽| 开心五月天私房婷婷| 久久久精品99亚洲综合| 国产午夜精品AV一区二区麻豆 | 激情五月四色| 91久久综合| 中文字幕永久免费| 激情婷婷五月天网址| 色狠狠色噜噜AV天堂五区| 五月色丁香国产在线视频| 色逼综合网| 婷婷狠狠操| 欧美色久| 国产性爱在线| 99热99精品| 伊人网欧美在线男人天堂五月丁香| 五月婷婷婷| 丁香六月婷婷综合麻豆| 99九九在线视频| 激情五月天在线视频| 丁香久色| 综合五月丁香六月婷婷| 日本乱子人伦在线视频| 婷婷丁香77777| 五月婷婷久久大片| 日本狠狠爽| 久热大香蕉| 思思热思在线精品视频| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 男妓跪趴把舌头伸进我的嘴巴| 天色综合网站| 中文字幕av亚洲| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 色五月婷婷网| 欧美五月婷婷| 三级成人网站| 五月天大香蕉| 日韩久久欧亚| 香蕉AV福利精品导航| 五月六月婷| 99开心五月五月丁香激情| seav天堂| 丁香六月激情| 五月天婷婷綜合院| 婷婷色欧美激情| 亚洲成人免费电影| 综合激情在线观看| 色播jjjj| 色五月婷婷五月天| 99色网站| 中文字幕成人影视| 婷婷五月天欧美图片在线播放电驴| 五月丁香无码| 国产综合久久久777777| 激情五月婷婷视频| 婷婷丁香五月综合| 天天操无码| 日本在线噜噜| 五月天六月天| 婷婷五月天成人网| 久久999久久999久久999久久| 激情五月天色播| 丁香五月婷婷香| peg 2区三区四区的| 天天综合五月| 97色色综合| 久久婷婷一级片| 99精品网| 综合网五月| 六月婷婷开心| 激情五月,激情综合网| 综合久久婷婷五月丁香| 亚洲AV免费在线| 91丨九色丨国产在线| 黄桃AV无码免费一区二区三区| 免费黄色片子| 999婷婷综合| 久草热视频在线观看| 亚洲五月丁| 亚洲色精彩| 亚洲av日韩无码| 91在线观看www| 国产免费性爱| 伊人久久丁香狠狠婷婷综合香蕉 | 一二区成人电影| 婷婷五月综合社区在线| 丁香五月激情啪啪综合| 97色五月丁香婷婷| 丁香五月婷婷久久久| 综合久久激情久久| www.99精品日操伊人乱碰在线| 日本欧美成人片AAAA| 色久综合| 99热这里是精品| 99热这里有精品| 91天天操天天干天天射| 无码任你操| 日本超碰在线| 一起草性爱不卡视频| 亚洲综合五月天婷婷丁香| 91九色欧美| 伊人色综合网| 婷婷久热| 思思热在线| 色婷婷丁香五月| 九九av| 九九热超碰| 狠狠干,狠狠操| 99人人干| 中文字幕无线久必| 成人小说色图婷婷五月| 婷婷成人AV| 曰曰久久| 狠狠夜夜五月丁香| AAA亚洲AV| 天天色综合图片| 99热这里只有精品2| 激情五月天 婷婷| 五月婷婷激情五月| 亚洲日日日| 超碰91在线| 99精品成人无码A片观看金桔| 专区无日本视频高清8| 欧美丰满熟妇BBB久久久| 久久视频在线视频| 五月情涩综合婷婷| 日韩在线视频中文字幕| 国产精品噜噜在线视频| 色五月丁香伊人| 九九视频在线观看| 六月婷婷五月天| 一本大道熟女人妻中文字幕在线| 丁香五月婷婷久久久| 欧美久人人| 久久在这里99| 翔田千里无码| WWW.桔色成人.COM| 狠狠操综合| 9视频在线成人网站| 久久天堂色| 丁香婷婷五月色成人网站| 99精品激情| 色五月丁香激情| 五月天婷婷在线AN| 婷婷五月婷婷| 丁香五月婷婷久久久| 激情综合网址| 激情二色月| 色色色图| 色激情五月天| 久久宗合影| 丁香五月婷婷久久久| 久久久精久人妻| www.99热精品| 超碰免费人| 九九综合图片网| 色五月综合在线| 呦呦v线| 99re这里只有| 曰韩少妇内射免费播放| 在线看黄色| 色婷婷五月天中文字幕| 日韩无码色色| 婷婷成人五月天| 婷婷狠狠五月综合| 色综合色| 国产无遮挡又黄又爽免费网站| 99亚洲精美视频在线观看| 色五月婷婷天天干| 99色| 亚洲精品第一国产综合亚AV | 国外亚洲成AV人片在线观看| 丁香六月婷婷久久高清| 日韩99色99| 少妇综合网| 中文在线视频久9| 99色色热| 激情丁香六月| 丁香五月综合激情久久潮喷| 五月婷婷中字在线| 97色在线视频| www综合久久| 婷婷丁香五| 婷婷五月综合网| wwwav大香蕉| 综合色色婷婷| 噜噜狠狠色综合久| www.色欲丁香婷婷| 婷婷 激情 五月| 欧美日韩成人| 婷婷99视频精品| 五月涩涩网| 玖玖色综合| 色婷婷88| 射久久丁香五月| 伊人激情综合| 99精品无码网站| 狠狠干婷婷| 国产精品国产| 99热在线看片| 久久久久99精品成人网站| 激情网婷婷婷| 五月婷婷香蕉| 天天操天天谢| 8050一级网| 久久五月六月| 五月丁香在线| 美女五月天婷婷| 99婷婷| 五月天丁香成人| 五月天激情小说欧美激情| 狠狠爱成人综合网| 丁香5月婷婷| 欧美怡红院黄站| 九九人妻福利| 丁香六月婷婷久久综合| 日韩黄黄| 怡红院AV亚洲一区二区三区H| 五月婷婷 欧美| www.五月.com| 婷婷激情五月天天天开心| 99热久| 五月天大香蕉| 九九在线视频| 色婷婷综合久色AV五色最新| 免费精品99| 亚洲操人| 九九99精品视频在线观看| 九九九日本熟女| 色啪影院| 丁香综合伊人| 成人做爰高潮A片免费视频| 激情综合女人网五月播播| 99操逼| 久久视这里只有精品| 五月婷婷六月丁香在线| www色婷婷久久综合久色| 综合网色| 深爱开心激情网| 欧美叉叉叉BBB网站| 色婷婷五月网| 人人干人人操外国| 激情四射网| 欧美六月| 欧美搡BBBBB摔BBBBB| 久久伊人日日夜夜| 在线亚洲综合网| 婷婷香五月天| 丁香婷婷黄网站| 五月天另类激情在线| 91精品电影18T| 欧美69久成人做爰视频| 丁香五月777| 婷婷五月天堂| 亚洲色五月| 色色色热| 久机视频这只有精品| 天天粽合合合合| 五月天婷婷色五月天| 亚洲综合草草| 久久网日本| 天堂网啪啪| 亚洲人成网站999综合| 99re这里只有精品首页| 黑人无码一区| 午夜不卡久久精品无码免费 | 亚洲成人网站在线观看| 欧美激情综合色综合色| 激情视频91| 五月天婷婷无码| 五月丁香好婷婷姑娘综合网| 丁香六月天婷婷| 亚洲在线操| 精品一二三区久久AAA片| 97婷婷五月| 天天久综合网永久入口17v | 久久99大全| 综合丁香婷婷五月天| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 欧美噜噜免费观看| 超碰在线人妻| 免费看欧美成人A片无码| www,婷婷| 丁香激情久久| 五月激情小说| 九九久久99| 天天狠狠夜夜狠狠2023| 日本天天操| 国产人妻人伦精品一区二区| 大香蕉在线99热| 沈娜娜av| 综合网啪| 久久这里只有精彩| 伊人干练久| 久久99大| 哇嘎成人久久| 亚洲中文字幕AV| 久久久久久天天日天天爱| 激情5月婷婷狠狠干| 色婷婷手机在线| 欧美美女国产日韩一区二区久| 丁香五色月婷婷网| 五月天综合激情网| 丁香九月激情| 婷婷丁香激情五月天色色色| 婷婷色色欧美| 久久er这里只有精品| 丁香六月婷婷高清| 人人摸人人| 九九热99热| 婷婷五月天成人网| 99青青草99| 人妖色AV色综合| 九九99精品视频在线观看| 婷婷色女| 色婷婷综合视频| 激情五月天丁香| 青青草青青草五月天| 五月丁香毛片| WWW夜夜| 日撸夜撸日操| 日韩成人网址| 色色五月综合| 丁香六月中文| 婷婷大乡焦噜噜| 亚洲这里只有精品| 丁香色五月AV在线| 色色激情五月天| 丁香,开心成人,久久| 伊人六月丁香婷婷| 人人人舔人人人操人人人摸人人人97| 大天天伊人| 丁香婷婷综合激情五月色| 久9热插入| a色色色色色| 欧洲亚洲精品| 一区二区成人电影免费播放| 天天肏视奸| 丁香五月AV综合激情| 久久五月天激情视频| 少妇搡BBBB搡BBB搡毛茸茸 | caop视频| 人人色婷婷五月天| 97精品欧美91久久久久久久| 第1影院之五月婷婷| 九九这里只这里只有精品| 激情色五月天| 丁香五月综合激情久久潮喷| 婷婷丁香五月天操逼| 青青久久91| 久久99免费视频网站| 五月综合激情啪啪啪啪啪| 亚洲99精品九九在线| 男人天堂99| 丁香六月色婷婷| 欧美日韩欧美| 蜜臀av无码久久久久久久久| 狠狠色婷婷7777久| 亚洲AV中文在线| 99在线观看视频| 欧洲MV日韩MV国产| 婷婷黄色五月天在线视频| 天天天干夜夜夜操| 激情亚洲网| 综合久久高清| 婷婷射图五月天| 九九热在线视频| 国产成人+综合亚洲+天堂| 狠狠搞狠狠操| 91刘玥视频在线观看| anquye五月| 99操99| 大香蕉九九| 丁香六月婷婷综合| 日亚二欧美| 播五月,色五月,开心五月播放器 | 97超级啪啪在线观看| 久久奄也去色色网站| 五月天综合在线| 九九精品热| 狠狠草狠狠草| 亚洲婷婷在线播放十月| 婷婷五月天成人| 99热99色| www.婷婷五月天| 丁香五月色情| 成人免费120分钟啪啪| 婷婷激情四射| 第四色激情网| 色噜噜狠狠色综合日日| 99在线观看精彩视频| 人妻av在线| 色综合五月婷婷狠狠干| 亚洲av电影在线| 色情五月停停丁香| 久久久欧美精品sm网站| 五月天丁香网站| 色播六月| 精品欧美一区二区三区久久久| 久久机热这里只有 | 六月丁香婷婷五月天| 人妻精品一区二区三区| 99视频久久免费视频| 99色在线| 婷婷激情五月色综合| 天天日天天肏天天奸| 天天肏视奸| 五月天激情网站| 操操天堂| 内射人妻视频国内| 热思思| 久久一级片| 激情久久久| 婷婷五月天直播| 色色色色色色色色色色色色色色,网站| 人人摸人人| 婷婷丁香色五月亚洲| 香蕉AV777XXX色综合一区| 色婷亚洲| 91干| 91丨九色丨国产打屁股网站| 午夜成人AV在线| 天天草婷婷五月| 91大神在线免费看视频全集男男一起操| 2025天天日爽| 精品一区二区三区四区五区六区介绍| 啪啪视频99| 九九色色| 99国产小视频| 婷婷在线播放av| 九月色婷婷综合亚洲| 久久性爱视频| 色婷婷五月视频| 色五月天影视| 色色色97| AV色色天堂中文| 激情五月六月婷婷| 色屌丝中文字幕| 九九视频网| 91日精品| 大香蕉五月婷婷丁香| 97操操操| 可以看的av| 9999热这里只有精品| 国产熟女大叫受不了| 色播jjjj| 激情综合五月激情XXXX| 六月丁香婷婷综合影院| 韩日另类| 99超级碰免费视频| 香蕉综合在线| 天天做天天爱天天爽| 久久久久人无码人妻| 91超级碰碰碰| 丁香五月停停基地| 在线五月婷| 天天插天天射| 26uuu精品一区二区| 五月丁香婷婷爱| 亚洲Av入口| 五月婷婷黄色| 丁香九月婷婷综合| 丁乡久久| 伊人三级激情| 日韩精品无码AV| 国产又爽又猛又粗的视频A片| 五月天大香蕉| 9久久婷婷国产综合精品性色| 色婷婷九月| 久久ER视频com| 婷婷九月色| 九九婷婷综合| 色综合中文色综合网| 九九人人看| 91精品久| 综合精品啪啪| 婷婷伊人綜合| 野外99热| 色天堂操| 3p久久| 香蕉乱插| 欧美超级视频97| 人人操人人看97干| 久久五月婷婷视频| 中文字幕性爱视频| 五月丁香六月婷婷a v| 夜夜爽天天日| 97人人操在线| VA婷婷| 91精品久久久久久久久| 夜夜操,天天撸| 婷婷99丁香| 五月婷婷免费在线视频| 国产真实乱对白精彩| 色综合激情| 天天综合91入口| 九九精品婷| 嫩草AV久久伊人妇女超级A| 亚洲九区| 专区无日本视频高清8| 麻豆观看夏晴子| 狠狠狠狠狠狠草| 婷婷激情综合色五月久久91| 91啪啪网| 色欲av伊人久久大香线蕉影院 | 伊人激情啪啪| 97精品综合| 丁香婷婷六月激情文学 | 五月婷婷六月爱| 最新五月天婷婷影| 色五月丁香伊人| 天天操屄网| 99亚洲视频| 欧美色色色| 日本欧美成人片AAAA| 婷婷丁香色五月天| 久久久欧美精品sm网站| 欧美狠狠一在草| 色婷婷在线综合色播网| 国产精品激情五月天色婷婷| 五月天激情无码| 國語久久婷| www.zbzhongsen.com| 丁香影院五月综合| 亚洲国产成人在线| 26uuu亚洲欧美| 九九婷婷综合| 免费无码毛片一区二区A片| 91精品视频男人的天堂| 久久激情视频| 国语精品探花| WWW.婷婷| 碰人人97| 婷婷五月天美女| 五月丁香亚洲婷婷| 欧美婷婷五月丁香| 色九月丁香婷婷蜜桃在线观看| 色哟哟精品| 五月综合亚洲婷婷| 亚洲中文字幕av| 色www99| 色一情一乱一乱一区91Av| 日本激情五月| 国产精品国产| 久久久久久久11111111111| 久久99看免费| 色婷婷五月天在线| 久久久性爱视频| 国产操逼网站| 天天爽天天弄| 色碰碰| 婷婷五月娱乐在线| 国产va在线视频| 91大神操美女| 91综合色噜噜| 亚洲五月婷天天操| 色色婷婷五月天| 97艹| 伊人久久五月天| 婷婷丁香五月综合| 日本黄色精品| 久久人妻在线| AA片在线观看视频在线播放| 9+1视频网址| WWW免费视频碰碰碰碰| 天天操九九插| 色色色99| 天天操中文字幕| 久久久久久久合一狠狠做深爱| 91狠狠色丁香婷婷综合久久| 欧美综合五月丁香六月婷| 九九热经典视频在线观看| 婷婷久草| 美女va| 五月激情六月丁香| 91九色|疯狂|高潮|对白|| 五月婷天天搞视频| 婷婷福利影院| 国产乱妇乱子伦| 男人操女人高潮91视频| 五月六月丁香激情视频| 婷婷五月色| 91婷婷丁香| 91seav| 五月丁香激| 五月天丁香成人社| 五月丁香六月婷婷久久肏| 丁香五月激情在线| 色综合女人99| 五月婷婷之美女图片| 色五月婷婷成人| 内射激情在线| 免费观看欧美成人AA片爱我多深| 婷婷丁香77777| 天天肏夜夜肏| 五月情丁香色| 五月天婷婷久久| 成人视频九九| 久久伊人大香蕉| 丁香五月天偷拍| 啪啪一区| 无码中文一区二区三区| 国产精品久久久久久久久久久久| 天天婷婷综合| 色婷婷色99国产综合精品| 日本不卡中文字幕| 日韩一级片| 婷婷五月天成人五月天| 99色视频| 天天干天天 亚洲| 婷婷伊人久久无码色五月| 很很干五月天| 大鸡巴伊人网| 久久99热这里只频精品6学生| 91久久久久久久久久| 久久3p| 色五月天影视| 国产69久久久欧美黑人A片| 激情五月天网页| 久久五月天 91| 欧美综合123区| 激情婷婷丁香五月天小说| 婷婷久久综合| 丁香丝袜五月| 狠狠色噜噜狠狠| 热99这就是精品视频| 亚洲99激情| 丁香狠狠色婷婷久久无码视频| 五月婷婷中文字幕| 美女激情综合| 五月天婷婷丁香| 婷婷天天综合| 99热费观看| 可以看的av网站| 久久色五月天综合网| 一级性爱视频| 成人免费在线电影| 色情五月丁香| 丁香五月综合在线观看| 久久9久| 日本少妇裸体做爰高潮片 | 色婷婷五月天天天干天天操天天爽| 91丁香婷婷综合久久欧美| 九九色欲网| 91婷婷五月天综合视频| 99碰视频| 免费看欧美成人A片无码| 五月婷天天搞视频| wWwCom夜操wwW| 亚洲综合色激情色五月| 大香蕉520| 好激情在线综合网| 亚洲av免费在线| 婷婷中合| 丁香九月婷| 五月丁香婷婷综合网色欲| 久草性爱| AV片在线观看| 99在线免费观看| 五月婷婷在线视频观看| 色色9 9| 久久久久亚洲A∨成人乱码电影| 色99久草在线| 五月婷婷啪啪| 精品色色| 热久久视频99| 五月婷丁香花| 91丁香| 97啪在线观看视频| 亚洲六月婷婷| 开心激情五月天网| 色婷婷五月天天天天天天天天天| 超碰在线免费9| 久久婷婷网址| 青青草免费公开视频| av色婷婷| 亚州操人在线视频| 亚洲婷婷月丁香五月| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 婷婷五月综合视频免费播放| 亚色网站小视频| www.五月婷婷| 婷婷五月天午夜激情影院| 日韩av一区二区在线/日产精品久久久 | 久久9精品| 91久久九九| 婷婷狠狠干| 内射人妻视频国内| 99热激情| 狠狠做深爱婷婷久久综合一区| 99re8在这里只有精品| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇| av网址在线| 丁香九九九九| 日本色久| 激情五月天色婷婷综合| 婷婷基地成人五月天| 欧美精品XXXXBBBB| 久久精彩视频| 色色无码| 日韩无码专区| 五月丁香六月婷| www.夜夜操.com| 日本三级黄色大片| 成人婷婷| 婷婷五月天久久| 影音先锋一区| 五月天伊人久久久久| 婷婷婷婷婷婷婷五月丁香| 久草xx性爱视频| 久久久久99精品成人片| 狠狠色激情综合| 激情五月丁香激情综合网| 成人五月天在线视频在线观看| 国产中文亚洲欧美日韩性交| 区区久久妻| 色五月xxx| 亚洲性爱干干| 激情五月综合六月丁香婷婷狠狠干| 五月丁香久久综合| 激情五月天综合图片小说网站| WWW.五月天9999| 思思久ren热| 丁香六月激情综合网| 玖玖精品资源| 婷婷中文字暮| 亚州色色色| 99操免费视频| 大香网伊人久久综合| 五月天偷拍| 最近中文字幕2019视频1| 婷婷天堂伊人| 九九视屏| 色噜噜狠狠色综合日日| 七七九九色色| 热99re| 夜夜骑夜夜操| 操操啪| 国产肥白大熟妇BBBB视频| 懂色av粉嫩av蜜臀av| 五月天婷婷激情四射综合| 欧美VA视频| 色婷婷视频| 色五月天综合| 国产午夜一区二区三区| 亚洲精品亚洲人成人网| 成人精品视频99在线观看免费 | 日日综合网| 亚洲操逼片| 欧美性猛交 XXXX 乱大交| 超碰一区二区| 久久婷婷五月天蜜桃| 婷婷丁香六月影视| 丁香五月天激情免费在线观看AV777| 天天综合精品| 婷婷五月天色色| 久久九九Com| 大香蕉五月婷婷| 婷婷五月丁香五月天| www色五月| 亚洲天堂热| 六月婷婷操逼| ay2区| 婷婷五月在线播放| 五月亭亭直播| 精品视频二级九九| 久久婷婷激情| 六月色丁香中文字幕| 97影院一级片| 久久婷婷五月天大香蕉| 丁香五月色网| 天天操天爱综合| 激情视频网址| WWW.HENHENL.| 亚洲另类婷婷五月丁香在线播放| 婷婷丁香综合| 婷婷色中文字幕| 人操人| 99热国产这里只有| 欧美在线视频免费播放| 日韩性爱AV| 五月天婷婷激情网| 成功精品影院| 五月天婷婷婷| 丁香五月六月久久综合| 婷婷五月天丁香社区| 婷婷五月天综合亚洲| 五月色在线| 久久99热这里只频精品6学生| 五月婷婷六月激情| 婷婷五月大| 98永久精品| 在线一起草av| 五月婷六月丁香| 狠狠操综合| 特黄三级片| 色在线免费观看| 色色色欧美| 激情影院丁香五月| H亚洲| 天天综合五月| 97精品综合久久| 情色五月天网站| 婷婷五月激情中文字幕| 4399无码视频二区| WwW天天干| 99操逼| 五月婷婷综合久久| 26uuu精品一区二区| 九色成人AV在线| 亚洲五月天伊人| 婷婷五月天久久久| 97干在线| 色婷婷香蕉| 久久综合伊人77777蜜臀| 久久久五月四色| 日韩二区搞逼插逼毛片| 五月天激情偷拍| 婷婷五月激情小说| 国产亚洲99久久精品| www.婷婷五月天| 性色婷婷| 99热碰碰热| 色狠狠色综合久久久绯色AⅤ影视| 激情www| 操婷婷基地| 激情五月天综合婷婷网| 婷婷伊人五月丁香天堂网| 婷婷久久综合久色| 午夜成人在线免费视频| 人人操av| 六月丁香色色色| 玖玖婷婷色五月| 97狠狠色| 丁香五月婷婷五月| 久久99这里只有精品| 激情五月天视频| www。88热在线视频免费观看| 婷婷激情四射| 婷婷爱综合| 天天日中文| 这里只有精品视频99| 色婷婷AV在线| 久热91| 天天操夜夜啊| 国产AV一区二区三区最新精品| 手机AVAV天堂看网| 婷婷五月天VI| 天天爽,夜夜爽| 久艹大香蕉| 久久综合丁香| 五月开心婷婷极品激情| 人人操av| 五月婷婷丁香在线视频| 91人人爽人人操| 色婷婷88| 欧美激情综合| 亚洲V国产V欧美V久久久久久| 婷婷五月丁综合| 九九精品碰| 成人短视频在线| 六月婷婷狠狠| 色亭亭丁香五月天| 人妻aV在线| 久久免费精品小视频| 99热在线观看| 九九精品视频在线观看| 欧美日韩成人一区二区| 女人天堂AV| 色久综合天天做视频| 国产操肏网站| 99色综合| 五月丁香激情婷婷| 色婷婷88| 五月丁香啪啪啪| 五月伊人婷婷| 久久丝丝热| 伊人九九68| 在线成人网站| 婷婷五月丁香久久| 99激情在线| 丁香综合日产精品久久| 性热视频99精品| 狠狠操天天操综合| 9久久网| 无码人妻少妇色欲AV一区二区| 欧美激情综合五月色丁香| 激情婷婷| 99资源人人| 亚洲亚洲人成综合网络| 欧美色频| 深爱丁香激情| 五月婷婷啪| 伊人在线大香蕉网| 色婷婷在线视频| 五月婷婷综合在线视频小说| 五月激情六月| 任你擦免费视频| 尤物一区二区| 婷婷五月六月丁香| 五月天色色色网| 久热成人| 五月六月丁香激情| 婷婷四月 成人 狠狠干| 大天天伊人| 日韩黄在免| 天天色播| 五月丁香亭亭| 五月丁香五月激情综合色综合| 久99视频在线观看| 色色色1网址| 麻豆WWWCOM内射软件| 丁香五月色五月| 女人天堂 AV| 激情婷婷亚洲五月| 综合激情五月丁香| 久久婷综合网| 欧美三级韩国三级日本三斤| 天天弄天天操| 99操碰| 久久精品系列| 亚洲亚洲永久无码777777| www.狠狠干| 成人色五月天婷婷| 国产色网站| 久久婷婷五月综合啪| 欧美人人草草| 伊人久久丁香狠狠婷婷综合香蕉| 99碰碰| 激情综合一| 色爱综合网| 美女精品一级不卡视频| 26uuu| 开心激情网五月| 综合五月天婷婷色| 久er7久热| 超碰在线成人| 99九九在线| 成人精品人妻| 91精品人妻少妇无码影院| 性生活久久朋友人妻| 操日挥操日日| 婷婷五月天首页| 天天射射夜| 2020久久婷婷五月| 思思99精品视频在线观看| www.日本久久videos| 久久婷婷五月天懂色| 综合久久久| 97干欧美| 碰碰91| 91丨九色丨丰满人妖| 丁香五月欧美色综合| 欧美色色色色色色| 五月天狠狠色| 婷婷99中文字幕| 99精品自拍视频| 五月天婷婷av| 草综合网| 五月丁香日本一抹本| 久久这里只有国产| 99久久9| 久热这里只有精品6官网亚洲| 99色精品视频| 五月天婷婷激情干干| 色性日本| 日韩五月丁香| 99热天堂| 婷婷操逼| 婷婷综合五月| 婷婷五月综合性爱| 天天操天天插天天射| 91av无码| 99久久久久久www| 亚洲成人影视在线观看| 99小精品| 天天日天天操天天干| 五月天婷婷视频30| 天天综合网站| 色五月首页| 99噜噜噜在线播放| 万月丁香狠狠爱| 久久99jiu9| 激情五月天色网站| 久久性爱视频免费| 日日狠狠久久偷偷四色综合免费| 激情五月影院| 丁香五月影院| 69凹凸成人综合网| 久热精品在看| av中文在线| 五月天激情网页| 色伊人婷婷| 婷婷99| 丁香五月23111| 99热无码| 久热婷婷| 一区二区无码视频| 日本一级| 日日射天天射| 手机旧版看人妻1025| 丁香婷婷色五月| 青青艹b| a色色片| 成人丁香婷婷| 九九成人| 婷婷五月a| 六月丁香视频网站| 亚洲天天| 国产69久久久欧美黑人A片| 操人精品| 婷婷五月永远18免费久久久| 色五月婷婷一二| 婷婷五月天色| 丁香综合久久| 九月婷婷综合八月丁香在线观看| 五月婷婷中文| 青草视频在线观看视频| 99亚洲视频| 亚洲色综合性| 婷婷另类小说| 婷婷九月狠狠色| 思思热久久婷婷五月天| 丁香五月五月婷婷| 97爱综合| 91dy.av| 亭亭玉月丁香| AV无码免费| 婷婷成人五月天成人文学小说|