TCP协议-流量控制】的更多相关文章

流量控制是通过滑动窗口来实现控制的.使用了坚持定时器,防止发送失败导致死锁.…
TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6.TCP是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层--Transport层,IP在第三层--Network层,ARP 在第二层--Data Link层;在第二层上的数据,我们把它叫Frame,在第三…
TCP是一个面向连接的协议,在发送数据之前,必须在双方之间建立一条连接. TCP首部 TCP数据封装在IP数据报中 TCP包首部 下面简单说明部分字段的作用: 端口号:通讯双方由IP地址和端口号标识. 4位首部长度:表示TCP协议头的长度,以4字节为单位.因此TCP最长协议头是4×15=60字节,如果没有选项字段,TCP协议头最短20字节. 6个标志比特含义:URG:紧急指针有效: ACK:确认序号有效: PSH:接收方应尽快将这个报文段交给应用层: RST:重新连接: SYN:同步序号用来发起…
TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment size)来控制的,这种机制是一种协商机制,MSS规定了传往接收方的最大数据块的大小.MSS通过SYN报文协商的,若接收方不接受来自另一方的MSS值,则MSS就定为一个固定值.MSS值越大,网络的利用率越高. 2. 重传.设置定时器,等待确认包. 3. 对首部和数据进行校验. 4. TCP对收到的数据进行…
参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 & 慢启动 快恢复 拥塞避免 http://blog.csdn.net/kinger0/article/details/48206999 TCP window Full http://blog.csdn.net/abccheng/article/details/50503457 tcp队列优化 http://www.tuicool.com/articl…
说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人.因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了<TCP/IP详解>(卷一,卷二)以及<Unix网络编程>以及Linux源代码之外,学习网络更好的资源是RFC 5).本文给出一个提纲,如果想了解细节,请直接查阅RFC 6).翻来覆去…
概述: TCP传输前先要建立连接 TCP在传输层 点对点,一条TCP只能连接两个端点 可靠传输.无差错.不丢失.不重复.按顺序 全双工 字节流 TCP报文段 TCP报文段的报头前20字节是固定的,后面4n字节是根据需要而添加的. 20字节的固定部分: 源端口和目的端口:分别写入源端口号和目的端口号 序号:0-(2^32-1),本报文段数据的第一个字节的序号,用来解决乱序问题 确认序号:期望收到对方下一个报文段的第一个数据字节的序号,用来解决丢包问题 数据偏移:TCP报头长度,包括固定的20字节和…
为了解决这题,可以具体看看下面这个讨论. 解灵运工程师 185 人赞同 某次架构师大会上那个58同城做即时通信的人说:原因是因为当时没有epoll这种可以支持成千上万tcp并发连接的技术,所以他们使用了udp,然后在udp上面封装了一下,模拟了一下tcp,解决了大并发的问题,之后因为做的很nb了,虽然epoll这种技术出现了,还是没有改回使用tcp了.现在再做类似的东西就不需要使用udp了.这个说法应该比较可信的. 发布于 2014-04-16 18 条评论 感谢 分享 收藏 • 没有帮助 • …
一.TCP报文头部简介 ●源.目标端口号字段:占16比特.TCP协议通过使用"端口"来标识源端和目标端的应用进程.端口号可以使用0到65535之间的任何数字.在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号.在服务器端,每种服务在"众所周知的端口"(Well-Know Port)为用户提供服务. ●顺序号字段:占32比特.用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节. ●确认号字段:占32比特.只有ACK标志为…
http://www.vckbase.com/index.php/wv/10http://blog.csdn.net/zlzlei/article/details/7689409 文章一: 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API).TCP/IP传输层有两个并列的协议:TCP和UDP.其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务.UDP(user datagram pro…
TCP传输(传输控制协议):TCP协议是一种面向连接的,可靠的字节流服务.当客户端和服务器端彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能进行数据的传输.它将一台主机发出的字节流无差错的发送到互联网的其它主机.在发送端负责把上层传下来的字节流分成报文段传递给下层.在接收端负责把报文重组后交给上层.TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端.  服务端: package cn.itcast.net.p4.tcp; import java.i…
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个“拨打电话”的过程,等到通信准备结束才开始传输数据,最后结束通话.所以TCP要比UDP可靠的多,UDP是把数据直接发出去,而不管对方是不是在收信,就算是UDP…
http://blog.csdn.net/chexlong/article/details/6123087 TCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议.TCP 协议假定其所使用的网络栈下层协议(如IP 协议)是非可靠的,其自身提供机制保证数据的可靠性传输.在目前的网络栈协议族中,在需要提供可靠性数据传输的应用中,TCP 协议是首选的,有时也是唯一的选择.TCP 协议是在最早由Cerf 和Kahn[1]所提出的有关网络数据包传输协议的概念之上建立的.TCP 协议被设计成符…
说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人.因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了<TCP/IP详解>(卷一,卷二)以及<Unix网络编程>以及Linux源代码之外,学习网络更好的资源是RFC 5).本文给出一个提纲,如果想了解细节,请直接查阅RFC 6).翻来覆去…
Tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据. 在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存中不能容纳的那部分数据,并等待对端确认后再返回(接收端只要将数据收到接收缓存中,就会确认,并不一定要等待应用程序调…
1.TCP的滑动窗口 为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认. TCP的两端都有发送/接收缓存和发送/接收窗口.TCP的缓存是一个循环队列,其中发送窗口可以用3个指针表示.而发送窗口的大小受TCP数据报中窗口大小的影响,TCP数据报中的窗口大小是接收端通知发送端其还可以接收多少数据,所以发送窗口根据接收的的窗口大小的值动态变化. 以下的几张图片就帮助理解一下滑动窗口的机制:…
TCP协议作为一个可靠的面向字节流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现. 要区分TCP的流量控制和拥塞控制: 流量控制是发送方的发送数据的速度不能太快,要考虑到接收方的接收缓冲区的大小,不然数据发送的太快,就可能导致接收方的接收缓冲区数据溢出.所以在流量控制中发送方的发送窗口大小受接收方的接收缓冲区的大小的制约. 拥塞控制是发送方根据当前网络的拥塞程度调整自己的发送窗口的大小.当网络出现拥塞的时候,减少发送数据的数量,当网络空闲的时候,…
接触unix网络编程一年多了,偶尔用户态进程表现出一些不能理解的现象,因此将<TCP/IP协议卷1>TCP协议相关的章节通读了一遍,总结了一下相关的知识点. 1.TCP数据报格式 TCP封装在IP数据报中,如下: ------------------------------------------------------------------------------------- |----IP首部(20字节)----||----TCP首部(20字节)||----TCP选项----||---…
问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一端都是一个状态机     TCP数据流:两种主要类型:交互数据流,成块数据流     TCP数据流的控制:保证可靠传输和提高网络通信质量,两个方面:超时重传,拥塞控制 1 TCP服务的特点 传输层协议:TCP协议,UDP协议 TCP协议特点:面向连接,字节流和可靠传输     先建立连接,才能开始读…
TCP协议详解 一.TCP协议 1.TCP 通过以下方式提供可靠性: ·  ◆ 应用程序分割为TCP认为最合适发送的数据块.由TCP传递给IP的信息单位叫做报文段. ·  ◆ 当TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段.如果不能记时收到一个确认,它 就重发这个报文段. ·  ◆ 当TCP收到发自TCP连接另一端的数据,它将发送一个确认.这个确认不是立即发送,通常延迟几分之一秒. ·  ◆ TCP将保持它首部和数据的检验和.这是一个端到端的检验和,目的是检测数据在传输…
TCP协议设计原理 最近去了解TCP协议,发现这是一个特别值得深思的协议.在本篇博客中,不会长篇大论的给大家介绍TCP协议特点.包头格式以及TCP的连接和断开等基本原理,而是会带大家深入理解为什么要这么设计,如果不这么设计,会产生什么后果,希望能帮助大家对TCP协议的理解.TCP弥补了IP尽力而为服务的不足,实现了面向连接.高可靠性.报文按序到达.端到端流量控制. 面向连接 一提到TCP是面向连接的协议,必然是介绍其的3次握手和4次挥手,为了说明为什么需要三次握手和四次挥手,我们还是拿两个图来说…
TCP的特性 TCP提供一种面向连接的.可靠的字节流服务 在一个TCP连接中,仅有两方进行彼此通信.广播和多播不能用于TCP TCP使用校验和,确认和重传机制来保证可靠传输 TCP给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复(这句话有问题,顺序不变和非重复是根据分组头部的seq和acknum,累积确认是为了提升发送效率) TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制(拥塞控制与流量控制的区别?) TCP提供全双工通信,两端都设有发送和接收缓存,应用程序…
本文摘抄自:http://www.kuqin.com/shuoit/20141018/342719.html 本文描述了TCP协议,首先简单介绍了TCP完成了一些什么功能:介绍了TCP报文格式,以及典型报文的数据格式:接着从链路控制和数据传输两个方面进行了介绍,在TCP中链路控制和数据传输是通过同一个通道进行的,并没有区分控制通道和数据通道:在网络中传输数据(控制或真实数据),网络可能发生拥堵,因此接下来简单描述了主机端进行拥塞控制所采取的方法,也简单提及了中间路由器/交换机进行拥塞避免所采取的…
什么是socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的.   也有人将socket说成ip+port,ip是用来标识…
欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和"吃鸡"游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法.竞技程度不一样,采用的同步算法不一样,对网络延迟的要求也不一样.例如,MOBA类游戏多使用帧同步为主要同步算法,竞技性也较高,无论从流畅性,还是从公平性要求来说,对响应延迟的要求都最高,根据业内经验,当客户端与服务器的网络延迟超过150ms时,会开始出现卡顿,当延迟超过250ms时,会对玩家操作造成较大影响,…
TCP的三次握手和四次挥手 三次握手 TCP连接是通过三次握手来连接的. 第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SYN_SENT. 第二次握手 当服务器收到客户端发送的SYN后,服务器要做的是确认客户端发送过来的SYN,在这里服务器发送确认包ACK,这里的ACK为x+1,意思是说"我收到了你发送的SYN了",同时,服务器也会向客户端发送一个SYN包,这里我们设SYN为y.这时服务器的…
HTTP连接 HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用. HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接.从建立连接到关闭连接的过程称为"一次连接". 1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接. 2)在HTTP 1.1中则可以在一次连接…
问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一端都是一个状态机     TCP数据流:两种主要类型:交互数据流,成块数据流     TCP数据流的控制:保证可靠传输和提高网络通信质量,两个方面:超时重传,拥塞控制 1 TCP服务的特点 传输层协议:TCP协议.UDP协议 TCP协议相对于UDP协议的特点:面向连接.字节流和可靠传输.      …
3.TCP协议 从上一节我们了解了什么是IP协议,以及IP协议的一些特性,利用IP协议传输都是单向的,不可靠的,无连接状态的.正是这些特性,于是便产生了TCP协议.TCP协议属于传输层,在IP协议网络层之上,竟然IP协议不可靠,那就必须要在其上多一个TCP协议以实现传输的可靠性.就像我们寄出一封信,如果对方不回信,不通过别的渠道告诉你,你永远都无法保证这封信能准确送到对方手上.同样,TCP协议采取了类似的措施来保证数据包的准确送达,它规定接收端发送一个确认数据包回来. 严格地说,TCP协议提供了…
概述 为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认.其中TCP的流量控制与拥塞控制是TCP在数据传输过程俩个重点机制,为TCP有效数据传输立下汗马功劳,这部分也是面试网络协议重点所在,下面从以下俩大方面总结一下 [1]流量控制 [2]拥塞控制 1.流量控制 流量控制:指点对点通信量的控制,是端到端正的问题.流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收. 在T…