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协议, ...
随机推荐
- Anagrams leetcode java
题目: Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will ...
- MD5 SHA1 哈希 签名 碰撞 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- python3 把excel文件合并并保存到csv文件
具体是这样,某路径下有很多 excel文件,文件名中包含相同关键字的是一类文件,把包含相同关键字的文件合并成一个文件,生成一个新的csv文件 # coding=utf-8 import xlrd im ...
- springboot h2数据库的配置
配置文件 #h2 数据库配置 #配置数据库连接地址spring.datasource.url=jdbc:h2:sunniwell:sos#配置数据库驱动spring.datasource.driver ...
- [Functional Programming 101] runWIth, evalWith, execWith
Recentlly, I am learning crocks.js ADT libaray. In the beginning, it is hard to understand when to u ...
- tcpdump-根据IP查看程序与服务都用了哪些端口
tcpdump -i em1 -tttt src 116.3.248.157 and port ! 6869 -nn -i 指定端口 -tttt 附带时间戳 -nn 解析域名与端口信息 ####### ...
- ArcMap概化之消除真曲线
在地理国情项目中,异常折线检查结果中,有报错为:几何类型为esriGeometryCircularArc不合法,而属性表中几何类型(Shape)内容为 "面",这是为何? 作为GI ...
- linux 文件查找,which,whereis,locate,find
linux 文件查找,which,whereis,locate,find 一:which 主要用于查找可执行命令的所在位置: 如图,查找命令 ls的目录: 二:whereis 主要用于查找命令的帮助文 ...
- poj 2486 Apple Tree (树形背包dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接: poj-2486 题意 给一个n个节点的树,节点编号为1~n, 根节点为1, 每个节点有一个权值. 从 ...
- PHP Mysql-连接
PHP 连接 MySQL PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP Dat ...