1.TCP的交互数据流

(1)基本概念

所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包括的数据不超过10个字节。比如聊天等telnet的软件的TCP数据流就属于TCP交互数据流

(2)经受时延的确认

TCP收到数据时并不会立即发送数据。相反它会推迟数据的发送,以便让ack和该方向要发送的数据一起发送(搭个便车。不然ack就得自己自己组成一个数据段发送,这样有可能造成网络发生拥塞),可是假设此方向一直没数据发送,那么ack就得一直等下去?当然不会,系统会给其定一个最长等待时间,一般为200ms超过这个时间,那么这个ack就必须得发出去了

(3)Nagle算法

设想这么一种情况,发送端每次发一个字节,而且连续发了好多次。那么假设每一个字节都组成一个TCP数据段,一个41字节大小的数据段仅仅装有1个字节。对与网络来说这也太占用资源了。所以我们应该但不是必须得在发送端设计某种发送送规则,如今最经常使用的就是Nagle规则了,Nagle规则相对简单点,它的规则大致是这样的,在一个TCP连接所相应的线路中最多仅仅能有一个未被确认的数据段,在该数据端的ack没来之前则不能发送数据,发送端在ack到来之前将小的字符流。组在一起,等ack到来时,则数据段已集结成大接近满载的数据段。此时将数据段发送出去。则利用率就会大幅提升。该算法的优越性在于它的自适应性。确认到达的越快,数据发的就越快,到达的慢就发的慢,在局域网内因为跳数较少,所以传输数据速度就会非常快。可是数据报中的数据较少。而在广域网里。因为跳数多,ack过来的时间非常慢,所以数据发送的相对慢点,可是与之相应的是,数据报所携带的数据差点儿是满载的。

    注意点:我们能够在应用程序设置套接字,将其设为TCP_NODELAY就会关闭Nagle算法,从而将要发的数据高速的发出去,此做法一般适用于即使交互类的软件

2.成块数据流

(1)滑动窗体



如上图所看到的

1,2,3为已经确认的数据,所以窗体以滑过他们,当接收方确认数据后,这个窗体不时的向右移动,窗体俩个边沿的相对运动添加或降低了窗体的大小,我们使用三个术语来描写叙述窗体的左右移动

(1)称窗体左边沿向右边沿移动为窗体合拢,这样的现象发生在数据被发送和确认时。

(2)当窗体右边沿向右移动时将同意发送很多其它的数据。我们称之为窗体张开,这样的现象发生在还有一端的接收进程读取已经确认的数据TCP的接收缓冲区

(3)当右边沿向左移动时称之为窗体收缩

(2)窗体大小

窗体大小由接收方来提供。默认的窗体大小为4096字节,可是在文件传输中未必高效。測试表明当窗体为16000时效率最高。大约能提高40%

(3)PUSH标志

发送方使用PUSH标志通知接收方将所收到的数据所有提交给接收进程。这里的所有包括PUSH之前已经收到的数据

(4)慢启动

所谓的慢事实上是对流量控制的一种算法,该算法通过观察到新分组进入网络的速率应该与接收端返回确认的速率同样而进行工作的

慢启动为发送方的TCP添加了一个拥塞窗体。当连接两方建立连接时。拥塞窗体被初始化为1个报文段,每收到一个ACK。拥塞窗体就添加一个一个报文段,发送方会取拥塞窗体和接收窗体的最小值做为发送数据的最大上线。因为拥塞窗体刚開始为1,发送方刚開始等待ACK。当收到后拥塞窗体变为2,此时能够发送俩个数据了。当再次收到ACK后,拥塞窗体变为4,如此呈指数增长,当达到互联网容量。于是中间路由器開始丢弃分组,以此来告知发送方它的拥塞窗体开的太大了

(5)拥塞

当数据到达一个大管道并向一个较小的管道发送时便会产生拥塞。当多个输入流到达一个路由器,而路由器的输出流小于这些输入流的总和时也会发生拥塞

TCP/IP具体解释学习笔记--TCP数据流的更多相关文章

  1. TCP/IP具体解释学习笔记--TCP的超时与重传

    1.基本概念 TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的測量 要測超时时间,TCP ...

  2. TCP/IP具体解释学习笔记--TCP的坚持和保活定时器

    TCP的坚持定时器 1.基本概念 TCP的接收方指名希望从发送方接收的数据字节(窗体大小)来进行流量控制,假设窗体大小为0.那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗体大小的ACK为止,那 ...

  3. TCP/IP具体解释学习笔记——数据链路层(2)

    五 Wireless LANs(Wi-Fi) 现在很流行的一种接入互联网的方式就是Wi-Fi了.我们用的ipad.手机.笔记本电脑等等都能够用这样的方式接入互联网,很方便灵活.一个典型的Wi-Fi网络 ...

  4. TCP/IP具体解释学习笔记——地址解析协议ARP

    一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...

  5. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  6. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  7. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

  8. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  9. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

随机推荐

  1. YUI+Ant 实现JS CSS压缩

    今天研究了一下YUI yahoo开源框架,感觉很猛啊. 于是乎我做了一个YUI的ant实现,网上好多关于bat的实现,我就另辟蹊径,出个关于这个的ant实现,嘿嘿独一无二的文章,如果转载的话,其注明作 ...

  2. YII插件

    dropDownList: Yii中可以采用CHtml类来实现,也可以用CActiveForm来实现.一.用CHtml来实现.VIEW中实现: <?php echo CHtml::dropDow ...

  3. Discuz常见大问题-如何使用图片轮播器

    最简单的办法是用插件,在应用-插件中电机对应插件的设置(比如使用柒瑞幻灯图片展插件) 在展示图片参数设置中,按照要求放你要的设置(标题,注释,高清大图,缩略小兔,URL地址)注意一个都不能少,标题和注 ...

  4. java线程(上)Thread和Runnable的区别

    首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程. 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈 ...

  5. [转]intellij 13新建javaweb项目并用tomcat 7启动

    来自:http://blog.csdn.net/little__zm/article/details/19570535 对intellij不熟,找了很多文章,只这篇最为顺利.其他都有各种各校的问题,先 ...

  6. Chrome 对于 glyphicon 字体图标不显示的解决的方法

    在将Chome默认字体渲染为微软雅黑后,部分字体图标显示为方框,这里Chome扩展文档提供的解决的方法为: 找到  custom.css 文件,路径为: C:\Users\(username)\App ...

  7. Codeforces Round #265 (Div. 2) D. Restore Cube 立方体推断

    http://codeforces.com/contest/465/problem/D 给定8个点坐标.对于每一个点来说,能够任意交换x.y,z坐标的数值. 问说8个点能否够组成立方体. 暴力枚举就可 ...

  8. Ubuntu 下iscsi initiator的安装与使用

    Ubuntu下比较方便好用的initiator是open iscsi,这里将要简要介绍它的使用方法: 1.安装: sudo apt-get install open-iscsi 2.chap设置 如果 ...

  9. window下rabbitmq的配置问题

    最近项目想用个MQ来做业务分离,看了市面上众多产品,最后选了rabbitmq,理由很简单,对window的支持很到位(其实是公司的系列产品都是.net的). 安装方法什么的就不说了,直接到官网下载双击 ...

  10. 查看tomcat启动文件都干点啥---catalina.bat(转)

    在上一次查看tomcat启动文件都干点啥一文中,我们总结出,startup.bat文件的作用就是找到catalina.bat文件,然后把参数传递给它,在startup.bat中,调用catalina. ...