TCP/IP具体解释学习笔记--TCP数据流
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数据流的更多相关文章
- TCP/IP具体解释学习笔记--TCP的超时与重传
1.基本概念 TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的測量 要測超时时间,TCP ...
- TCP/IP具体解释学习笔记--TCP的坚持和保活定时器
TCP的坚持定时器 1.基本概念 TCP的接收方指名希望从发送方接收的数据字节(窗体大小)来进行流量控制,假设窗体大小为0.那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗体大小的ACK为止,那 ...
- TCP/IP具体解释学习笔记——数据链路层(2)
五 Wireless LANs(Wi-Fi) 现在很流行的一种接入互联网的方式就是Wi-Fi了.我们用的ipad.手机.笔记本电脑等等都能够用这样的方式接入互联网,很方便灵活.一个典型的Wi-Fi网络 ...
- TCP/IP具体解释学习笔记——地址解析协议ARP
一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)
TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...
- 【转】TCP/IP详解学习笔记(二)
TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...
- 【转】TCP/IP详解学习笔记(一)
TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...
- TCP/IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...
随机推荐
- docker 基本原理及快速入门
作者地址:青牛 什么是docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来 ...
- 又议android中的manifest清单文件
写过java程序的人,都知道了配置文件时java实现各种各样的框架的一大利器,manifest清单文件对android的作用自然不言而喻,然而他里面究竟定义了些什么,并且他是如何加载到程序中的. 他里 ...
- Android -- SharedPreferences存储信息
背景 Share ...
- Java方法重写与方法重载
方法重载:发生在同一个类中,方法名相同方法形参列表不同就会重载方法. 方法重写:发生在继承当中,如果子的一个类方法与父类中的那个方法一模一样(方法名和形参列表一样),那么子类就会重写父类的方法. 方法 ...
- GridControl 获取某分组的第一个孩子
int iGroupRowHandle = this.gridControlView.FocusedRowHandle; ) { int iChildCount = this.gridControl. ...
- hadoop fs:du & count统计hdfs文件(目录下文件)大小的用法
hadoop fs 更多用法,请参考官网:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html 以下是我的使用hadoop fs -du统计文 ...
- CentOS6.X下安装配置独立SVN服务器Subversion server
Subversion(简称SVN,svn),一个开放源码的版本号控制系统.相较于RCS.CVS,它採用了分支管理系统,它的设计目标就是代替CVS.互联网上非常多版本号控***务已从CVS转移到Subv ...
- Java高并发syncronized深入理解
1.Synchronized的作用: 能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果. 2.地位: 1)Synchronized是java的关键字,并java的怨言原生支持: ...
- [算法][LeetCode]Spiral Matrix
题目要求 Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spir ...
- jasperreport 通过javabean datasoource实现chart的报表
继上次report的demo后,还在继续做着report方面的research,今天主要是实现了通过javabean datasource填充chart图表,通过webservice下载pdf格式的报 ...