1、Delayed Acknowledgements:TCP通常不会在收到数据之后立即返回一个ACK,而是会有一个延时,希望能ACK报文段中带上一些数据,通常这个延时为200ms

2、Nagle Algorithm:在TCP连接中,只能有一个小的报文段未被确认。即TCP在发送了一个小的报文段之后,会将之后的小数据都收集起来,直到之前的小报文段得到确认,才将收集到的小数据打包成一个报文段发出。这样做的减少了网络中小报文段的数量,减轻了网络的阻塞,提高了传输的效率

3、当一个包到达以后,它首先被设备驱动的中断处理程序处理,然后被添加到IP的输入队列中,最后被送给TCP进行处理,到要发送delayed acknowledgement的时候,就将确认序号置为已经处理过的报文段中同步序号的最大值加1

4、sliding window:即滑动窗口协议,接收方不必为每个接收到的报文段发送ACK确认报文,进行累计确认即可。例如收到了N-1024~N,N~N+1024两个报文段,那么只要返回一个ACK序号为N+1024的报文段即可

5、如上图所示,发送方发送数据的速度大于接受方处理数据的速度,发送方连续发送了四个包含1024个数据字节的报文段,此时已经填满了接收方建议的滑动窗口的大小,于是它停止发送数据。之后,接收方发送了一个ACK进行累计确认并且建议的窗口大小为0,发送方依旧不能发送数据。最后,接收方又发送了一个ACK,该报文段称为window update ,它的作用并不是用来对任何数据进行确认的,而是告诉发送方可以继续发送数据了

6、发送端的滑动窗口如上图所示:方框的大小为发送方能够发送并且未被确认的字节序列的数目,当收到ACK报文时,方框的左边界就会向左移,当接收方的TCP缓存变大时,方框的右边界就会向右移。那么会不会出现右边界向左移动的情况呢?其实是不会的,我们先讨论最坏的情况,那就是接收方没有处理任何新的数据,并且由于接受了新的数据导致缓存又变小了,但是此时我们可以发现对于发送方来说,只是左边界向右移了,而右边界没有发生变化而已。因此最坏的情况只是右边界不移动而已,并不会存在滑动窗口的右边界向左移的情况

7、Slow Start:即慢启动,这个算法基于这样一种观察结果:发送方发包的速率应该和接收方发送确认报的速率相同。因此又引入了一个叫拥塞窗口(congestion window),刚开始传输数据的时候,拥塞窗口的大小为一个报文段的大小,当第一个报文段被确认后,窗口大小变为二,当之后的两个报文段被确认后,拥塞窗口变为四,依次类推。直到发现丢包时,说明拥塞窗口太大了,再对它进行相应的处理。这里需要的注意的是:拥塞窗口和滑动窗口是同时起作用的,通常发送方能够发送的数据的数量是两者的较小值

8、PUSH flag:当TCP报文段中PUSH标志被置位时,意思是发送方要求接收方立即将接收到的数据交给相应的接收方进程。这里的数据包括当前收到的PUSH被置位的报文段中的数据,也包括接收方之前收到的,被放在缓存中的数据。一般来说,现在已经不能通过程序将报文段中的PUSH标志置位了,因为大多数TCP 的实现都能自动确定需不需要置PUSH标志

《TCP/IP详解 卷一》读书笔记-----TCP数据流的更多相关文章

  1. 《TCP/IP详解》读书笔记

    本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层   一.整体概念   1.各层协议的关系,只讨论四层 各层常见的协议:   网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...

  2. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

  3. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  5. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——02

    2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——18

    2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——15

    2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

  10. 『TCP/IP详解——卷一:协议』读书笔记——13

    2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...

随机推荐

  1. mysql学习笔记 第九天

    order by ,limit 和where子查询的使用 order by: order by 列名1,[列名2],[列名3]...(结果先按列1进行排序,在列1的相同的情况下,再按照列2的排序,以此 ...

  2. PHP学习笔记:通过curl实现采集网站内容

    关于curl,请各位同学自行百度,我直接上案例. 首先开启你的curl拓展,在php.ini文件把curl拓展开启,即取消extension=php_curl.dll的分号. eg:利用curl采集网 ...

  3. 微软发布ASP.NET 5路线图

    这次随 Visual Studio 2015 发布的 ASP.NET 版本是 ASP.NET 4.6 与 ASP.NET 5 beta5.在 VS2015 发布的同时,微软也发布了 ASP.NET 5 ...

  4. JS中标准对象

    JS中标准对象1:不要使用new Number().new Boolean().new String()创建包装对象:2:用parseInt()或parseFloat()来转换任意类型到number: ...

  5. js中this的理解

    平常用this很多,对this的理解就是this是对应执行环境,然而很多时候效果并不是想要的,最近看了一些谈到this的笔记和书籍,总结下. 对this的误解: this是指向函数本身 先上个demo ...

  6. RHEL7管道与重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟 ...

  7. VisualStudio中解决方案

    在VS中创建一个项目通常会生成一个解决方案文件(.sln)和一个隐藏的解决方案用户选项文件(.suo). 解决方案文件是一个文本文件,包含以下信息: 将被加载的所有项目以构成完整解决方案的项目清单 解 ...

  8. sharepoint获取exchange邮箱报错:该帐户无权模拟所请求的用户

    现象: sharepoint获取exchange邮箱报错:该帐户无权模拟所请求的用户 处理办法: 1.Open the Exchange Management Shell 2.输入: New-Mana ...

  9. PHP读取Excel文件内容

    PHP读取Excel文件内容   项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel.   PHPExcelReader比较 ...

  10. IOS之UI--自定义按钮实现代理监听点击事件

    前言: Objective-C提供的按钮监听事件的方法是 不含参数的监听方法 [button实例对象 addTarget:self action:@selector(func) forControlE ...