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协议, ...
随机推荐
- centos7 JDK1.8
安装之前先检查一下系统有没有自带open-jdk rpm -qa |grep java rpm -qa |grep jdk 卸载找出的已安装Java相关rpm文件:rpm -e --nodeps 重新 ...
- Cognos配置oracle类型内容库时报错
Cognos初次安装,创建内容库为Oracle数据库类型的时候,报下面的错误 [Content Manager database connection][ ERROR ] The database c ...
- 在ubuntu下手机无法挂载的问题
在ubuntu下手机无法挂载的问题 , 原因之一是,usb数据线连接在了机箱前面,可以尝试连接到机箱后面的USB接口试试,我当时遇到过这样的情况,这样解决的.
- 微信小程序app配置指南
//app.json页面 { //页面注册,有几个页面都要在pages里面注册 "pages":[ "pages/index/index", "pag ...
- 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2
今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enab ...
- 8. 利用反射机制, ListArray,intent来实现多Activity的切换
package com.example.thenewboston; import android.app.ListActivity; import android.content.Intent; im ...
- HTTP请求格式和HTTP响应格式
主要内容: 1.HTTP请求格式 2.HTTP响应格式 一.HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l 请求方 ...
- ArcGIS高程Z值的去除方法
在ArcGIS中,我们常用的几何类型有点.线.面.体(体,在涉及三维的情况下使用),但在这之外,可能会遇到带ZM的类型,如图所示,面ZM,它与面类似,但比面多两个字段. 在编辑中查看草图属性可看到Z值 ...
- 设置MAC 下 Vim 语法高亮显示
一:终端进入 cd /usr/share/vim/ 二: sudo vim vimrc 三:添加 syntax enablesyntax on 四:保存退出
- win10系统80端口被占用怎么办?
win10系统80端口被占用怎么办? 因为win10默认开启了IIS因此占用了80端口,可以netstat –ano 查到. 运行netstat -aon | findstr :80 ,发现pid是4 ...