TCP sliding window

本文介绍TCP滑动窗口的工作原理,包括如何通过窗口大小控制数据传输速率及应对网络拥堵情况。同时探讨了TCP最大报文段长度(MSS)调整及显式拥塞通知(ECN)机制。
TCP sliding window每一個ack中間可以送多少byte,就是windows size的意思

假設有10,000byte的檔案要送,windows size是4000,送端TCP可以一次送4000 byte,然後收端再給一個ack確認,這4,000個byte用一個或多個packet來送都可以,若4,000 byte送出 ack正確,則可以把window往下移個4,000 byte,就好像窗戶在移動一樣

window size是收送同步的,送端會跟收端會議定一個數值,而且因需要而變動,所以是動態的當收端告訴送端window size=0 時,代表要送端不要再送了,送端會等到收到另一個非0的window size後才會再繼續送

若線路壅塞,代表送端送出的資料要等比較久才會收到ACK,送端在收到正確ack才會再送下面的資料,所以傳送速度自然就會便慢了

TCP Explicit Congestion Notification
在收送兩端的中間的router再偵測到網路壅塞時可以發出ECN給兩端的主機,通知他們網路即將發生阻塞,(我相信用TCP的ECN通知後,要不要做處理應該事APP的事情,在router端只負責告知)

TCP MSS Adjustment
在TCP的SYN裡會有TCP的最大size資訊,所以在3-way handshaking完成後TCP MSS已經固定這個功能是偵測TCP SYN內容,將TCP MSS做修改以確保兩端所收送的風包在中間的router可以被處理在收送兩端initial TCP時,預設會參考自己設定的MTU,扣掉3,2 層的header後當作TCP的
MSSTCP MSS的值是扣掉TCP header的數字

BGP conditional map
在BGP route產生時,通常用network or aggregate方式將BGP route放進BGP中,但這兩個方式必須有相對應的IGP或必須存在componet route,在BGP做aggregate時,會將小網段summary成大網段,但是若在這個大網段中仍然想要有specific route時可以利用這個指令將某些route放進BGP table中,通常這些例外的route會比原本大網段的prefix來的小

另外這個指令只要match某種條件就可以放bgp route,不再受到IGP才能放或aggregate的限制
### 关于滑动窗口在数据增强中的应用 滑动窗口(Sliding Window)作为一种高效的技术,在许多领域得到了广泛应用,特别是在处理连续序列或固定长度的子数组时。尽管滑动窗口的主要用途在于优化算法性能[^4],但它也可以被扩展应用于数据增强场景。 #### 滑动窗口在数据增强中的作用 在机器学习和深度学习中,数据增强是一种常用的方法,用于扩充训练集并提升模型泛化能力。对于时间序列或文本数据,滑动窗口可以通过截取不同片段的方式生成新的样本。这种方式不仅保留了原始数据的时间顺序特性,还能够在一定程度上模拟真实世界中的噪声或变化。 具体来说,滑动窗口的数据增强方法可以从以下几个方面实现: 1. **随机采样**:通过设定不同的窗口大小和步长,从原始数据集中提取多个子序列作为新样本。 2. **局部扰动**:在滑动窗口的基础上引入一定的随机性,比如对窗口内的某些值进行轻微修改或替换。 3. **多尺度分析**:利用不同大小的滑动窗口捕获全局特征和局部细节,从而构建多层次的输入表示。 以下是基于 Python 的简单代码示例展示如何使用滑动窗口来进行数据增强操作: ```python import numpy as np def sliding_window_augmentation(data, window_size=50, step_size=10, noise_level=0.01): """ 使用滑动窗口技术进行数据增强 参数: data (list or array): 输入的一维时间序列数据 window_size (int): 窗口大小 step_size (int): 步幅大小 noise_level (float): 添加噪音的比例 返回: list of arrays: 增强后的数据列表 """ augmented_data = [] for i in range(0, len(data) - window_size + 1, step_size): window = data[i:i+window_size].copy() # 可选:向窗口内加入少量高斯白噪 if noise_level > 0: noise = np.random.normal(loc=0, scale=noise_level * np.std(window), size=len(window)) window += noise augmented_data.append(window) return augmented_data # 测试用例 time_series = np.sin(np.linspace(0, 10, num=500)) # 创建一个简单的正弦波信号 augmented_samples = sliding_window_augmentation(time_series, window_size=50, step_size=10) print(f"Original Data Length: {len(time_series)}") print(f"Number of Augmented Samples: {len(augmented_samples)}") ``` 上述代码展示了如何通过滑动窗口机制从单条时间序列中抽取若干短片段,并可选项地为其添加一些人工制造的小幅度波动以进一步丰富数据多样性[^3]。 #### 影响与优势 采用这种策略的好处包括但不限于以下几点: - 提升模型鲁棒性; - 减少过拟合风险; - 更好地捕捉序列模式下的细微差异。 然而需要注意的是,当选择较大的 `step_size` 或较小的 `window_size` 时可能会丢失部分重要信息,因此参数调优至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值