TCP协议:延时ACK与Nagle算法

延时ACK 延时ACK是一种优化TCP性能的机制。它的核心思想是:接收方不立即发送对每个数据包的确认(ACK),而是等待一小段时间,如果在这段时间内有数据需要发送给对方,就把ACK和数据捎带一起发送。 linux实现中,每连续收到两个完整的报文段,或者等待40毫秒(延时ACK计时器超时时间)未收到新的报文...

阅读更多

TCP协议:SACK和D-SACK

SACK 在传统的TCP确认机制中,接收方只能发送一个累积确认,告诉发送方它已经收到了某个序列号之前的所有数据。例如,发送方发送了数据包1、2、3、4、5,如果数据包3丢失了,接收方只能发送ACK 3,表示它收到了2,但期待3。发送方收到ACK 3后,并不知道3后面的4和5是否已经收到,它会重新发送3以及3后面的...

阅读更多

TCP协议:CWR和ECN flag总结

在TCP中,CWR(Congestion Window Reduced)和ECN(Explicit Congestion Notification)是两个与拥塞控制紧密相关的标志位: ECN:允许网络路由器在不丢弃数据包的情况下,向发送方和接收方显式地发出网络拥塞的信号。 CWR:CWR标志是发送方对E...

阅读更多

STL容器避免开销的总结

使用auto避免不必要的拷贝开销 map<string, int> word_count; for (const auto& kv : word_count) { } // C++17 for (const auto& [word, count] : word_count) { ...

阅读更多

C++模板元编程

模板元编程是一种利用模板在编译期执行计算和逻辑的技术。模板元编程允许编写在编译阶段就完成所有计算并生成最终代码的程序。 模板元编程的核心思想是: 类型是数据:在模板元编程中,类型(int, bool, 自定义类型等)被视为数据。 模板是函数:类模板和函数模板被视为接受类型作为参数的函数。 特化是条...

阅读更多

STL容器:unordered_set核心总结

成员函数 访问 成员函数 函数说明 find(key) 查找键为 key 的元素。如果找到,返回指向该元素的迭代器;否则返回 end()。 count(key) 返回键...

阅读更多

STL容器:unordered_map核心总结

std::unordered_map是一种关联容器,可以存储一组键值对。 template< class Key, class T, class Hash = std::hash<Key>, class Pred = std::equal_to<Key>, ...

阅读更多

STL容器:set核心总结

成员函数 访问 成员函数 函数说明 find(key) 查找键为 key 的元素。如果找到,返回指向该元素的迭代器;否则返回 end()。 count(key) 返回键...

阅读更多