概述

作为互联网时代伟大发明的TCP/IP技术可以说对当今时代产生了深刻的影响。经过近一个月的学习摸索,基本清楚了TCP/IP的面貌。由于TCP/IP在OS中位于内核态,很多细节其实用户无法感知,所以自己对于TCP/IP会有一些疑惑。关于其中几个点经过查阅一些书籍、博客并结合自己的一些理解,在此整理精炼成帖。


疑惑1 — 关于拥塞

疑惑一: 无论是满启动还是拥塞避免阶段,拥塞窗口都在增加,理论上一定会碰到拥塞点,为什么平时感觉不到拥塞呢?

看了很多书和文献以后可能的解答如下:

  • 1、OS中对接收窗口的最大设定多年未动,如windows在不启用“TCP Window Option”情况下,最大接收窗口仅64KB。然而网络进步,很多环境的拥塞点远在64kb以上,即发送窗口永远触碰不到拥塞点

  • 2、很多应用场景是交互式小数据交换,如聊天等,不会有拥塞的可能

  • 3、有些应用在传输数据时采用同步方式,可能需要的窗口非常小(如采用了同步方式的NFS写操作,每发一个写请求就停下来等回复,而一个写请求可能仅有4kb)

  • 4、即便偶尔拥塞,持续时间也不足以长到能感受出来,除非抓包看包交换细节


疑惑2 — 关于超时重传

疑惑二: 关于超时重传后的ssthresh设置问题的争议

  • 1、Richard Stevens在《TCP/IP详解》中把临界窗口值定为上次发生拥塞时的发送窗口的一半

  • 2、RFC5681则认为应是发生拥塞时未被确认的数据量的1/2(又称FlightSize),且不小于2MSS

  • 3、Westwood/Westwood+算法则这样认为:先推算出有多少包已被送达到接收方(可根据收方回应的ACK来推算),从而精确地估算发生拥塞时的带宽,最后再依据带宽来确认新的拥塞窗口

  • 4、Vegas算法则这样认为:引入全新的概念,摒弃之前的在丢包后才调节拥塞窗口的做法。其通过监控网络状态来调整发包速度,实现“真正的拥塞避免”。当网络良好时,RTT较稳定,此时可以增加拥塞窗口;当网络繁忙时,RTT增加,此时减小拥塞窗口

  • 5、Compound算法这样认为:同时维持两个拥塞窗口,一个类似于Vegas,另一个类似于RFC5681,真正起作用的是两者之和(Win7上其默认关闭)

  • 6、BIC算法/CUBIC算法 分别是linux2.6.18和linux 2.6.19所采用,目前尚未研究


关于TCP/IP的几点精炼总结:

  • (1)当无拥塞时,发送窗口越大,性能越好。∴在带宽没有限制的情况下,应尽量增加接受窗口,比如启用Scale Option

  • (2)若经常发生拥塞,则限制发送窗口反而可以提高性能,∵即便万分之一的重传对性能的影响都非常大。很多OS上可通过限制接收窗口的方法来↓发送窗口

  • (3)超时重传对于性能影响最大,∵RTO时间内未传输任何数据,而Cwnd会被设成1MSS,应尽量避免

  • (4)快速重传对性能影响小一些,∵无等待时间,且Cwnd减幅不大

  • (5)SACK和NewReno有利于增加重传效率,增加传输性能

  • (6)丢包对极小文件的影响比打文件严重。深层原因是因为读写一个小文件需要的包数很少,∴丢包时往往凑不满三个Dup ACK,只能等待超时重传;而大文件有较大可能触发快速重传

你可能没有细究过的TCP/IP相关推荐

  1. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  2. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  3. 用TCP/IP进行网际互联一

    地址解析协议ARP 主机知道某个目的主机的IP就可以知道该目的主机的物理地址. 改进ARP 每个ARP广播分组中都包含有发送方自身的IP和物理地址的绑定,接收方在处理ARP分组时,先在自己的缓存中更新 ...

  4. ip设置 kali 重置_在 Windows 系统中如何重置 TCP/IP 协议堆栈修复网络连接问题

    Internet 在 TCP/IP 协议上工作,如果 TCP/IP 协议堆栈在 Windows 或任何其他操作系统(例如 Linux 或 MacOS)中无法正常工作,则您的 Internet 连接会出 ...

  5. TCP/IP 协议栈4层结构及3次握手4次挥手

    TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路 ...

  6. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  7. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

  8. TCP/IP 协议理解

    TCP/IP 协议(Transmission Control Protocol / internet Protocol),因特网互联协议,又名网络通讯协议.通俗而言:TCP负责发现传输的问题,一有问题 ...

  9. 一次完整的抓包分析 Reserved TCP/IP Port List

    抓包如图所示: 本机IP被粉色遮住... http://www.skynet.ie/~colinmac/Programming/port_listing.html Reserved TCP/IP Po ...

最新文章

  1. python win32console_python、unicode和windows控制台
  2. leetcode 658. Find K Closest Elements | 658. 找到 K 个最接近的元素(二分查找+双指针)
  3. MVC Areas的使用
  4. block size在equipment download中的用法
  5. 使用PostgREST的RestAPI操作之管理与优化
  6. Object.create()和new object()和{}的区别
  7. unity有用资源的导出未package便于在其他工程用的问题解决
  8. android实现资源嗅探器手机版,OPPO Reno尝鲜Android Q教程来了
  9. SqlDataReader的用法(重点:访问字段的值)
  10. 深度 GHOST XP SP3 纯净版 2013 06
  11. Keil5中添加C51芯片
  12. JQUERY本地自动保存插件Sisyphus.js
  13. 这些信贷数据埋点中不得不知的埋点知识
  14. 2022最新HTML生成国庆头像网页源码+打开即用
  15. Python学习笔记五:控制语句
  16. html中让两段文字并列排放,言语理解:探究阅读之并列文段
  17. 3-4、无/有信息搜索
  18. bilibili_Linux网络基础5_SSH远程管理服务
  19. 钽电容的作用,钽电容滤波好的原因
  20. Vs Code中Vue代码格式插件,Vetur、ESLint 、Prettier - Code formatter的介绍使用及相关配置

热门文章

  1. python编写脚本教程_python脚本编写教程gee引擎解密工具
  2. apk闪退_解决安卓手机闪退的通用办法!
  3. html5页面3d滚动轮播,jQuery实现的3D版图片轮播示例【滑动轮播】
  4. 旧佳人的伤感非主流空间心情日志发布:想念,是一种忧伤的幸福
  5. 文本识别 OCR 浅析:特征篇
  6. 在 markdown 中使用表情符号
  7. 最新超唯美情侣网站开源+带后台/亲测可用
  8. 用“意念”发Twitter,静脉植入脑机接口电极,渐冻症患者把思想转化为文字
  9. 电商全平台订单管理OMS系统
  10. pandas常用操作