原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! TCP 是一种提供可靠性交付的协议. 也就是说,通过 TCP 连接传输的数据,无差错.不丢失.不重复.并且按序到达. 但是在网络中相连两端之间的介质,是复杂的,并不确保数据的可靠性交付,那么 TCP 是怎么样解决问题的? TCP 是通过下面几个特性保证数据传输的可靠性: 序列号和确认应答信号 超时重发控制 连接管理 滑动窗口控制 流量控制 拥塞控制 通过序列号和确认应答信号提高可靠性 如下图,在 TCP 中,当发送端的数据到…
http://blog.csdn.net/chexlong/article/details/6123087 TCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议.TCP 协议假定其所使用的网络栈下层协议(如IP 协议)是非可靠的,其自身提供机制保证数据的可靠性传输.在目前的网络栈协议族中,在需要提供可靠性数据传输的应用中,TCP 协议是首选的,有时也是唯一的选择.TCP 协议是在最早由Cerf 和Kahn[1]所提出的有关网络数据包传输协议的概念之上建立的.TCP 协议被设计成符…
在前篇文章中介绍了TCP协议的三大特性,其中可靠性是依赖一系列的机制,如:校验和,分组发送,超时重传,流量控制得到保证. 一.数据交互 TCP在交互数据时,采用多种机制保证可靠性,同时也保证TCP的性能,主要是分组.延迟ACK等等. 1.分组确认 对于连续的数据传输有三种方式: 单个单个字节发送 将整个连续数据发送 将整个连续数据拆分成一个个的分组包,然后逐个发送 显然前两种方式都是比较极端,单个单个字节发送对于成块连续数据而言效率非常低,整块连续数据发送对于比较大的数据而言更不现实,TCP缓冲…
一.TCP段格式: TCP的段格式如下图所示: 源端口号与目的端口号:源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接. 序号:序号表示在这个报文段中的第一个数据字节序号. 确认号:仅当ACK标志为1时有效.确认号表示期望收到的下一个字节的序号. 头部长度:4位,TCP头部最多60个字节,最少20个字节 保留位:6位,必须为0 6个标志位: URG-紧急指针有效 ACK-确认序号有效 PSH-接收方应尽快将这个报文段交给应用层 RST-连接重置 SYN-同步序号…
1.什么是TCP的可靠传输 它向应用层提供的数据是无差错的.有序的.无丢失的,换言之就是:TCP最终递交给应用层的数据和发送者发送的数据是一模一样的. 2.TCP保证可靠传输的办法有哪些? TCP采用了流量控制.拥塞控制.连续ARQ等技术来保证它的可靠性. 3.停止等待协议 AQR协议:当请求失败时它会自动重传,直到请求被正确接收为止.这种机制保证了每个分组都能被正确接收.停止等待协议是一种ARQ协议. 停止等待协议的原理 无差错的情况:A向B每发送一个分组,都要停止发送,等待B的确认应答:A只…
1.可靠传输 (1)三次握手 TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接: (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认. (2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态. (3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK…
1.经受时延: TCP在接收到数据时并不立即发送ACK,相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送,时延为200ms,超过时延范围,发送确认. 2.nagle算法: 一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组.TCP收集这些少量的分组,在确认到来时以一个分组的方式发出去 3.滑动窗口 窗口的左边沿向右边沿靠近为窗口合拢.这种现象发生在数据被发送的确认时. 当窗口右边沿向右边移动时,将允许发送更多的数据,称为窗口张开,发生…
http://blog.csdn.net/yujun00/article/details/636495 ARQ与滑动窗口概念  滑动窗口协议,是TCP使用的一种流量控制方法.该协议允许发送方在停止并等待确认前可以连续发送多个分组.由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输. 自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层的错误纠正协议之一.它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输.如果发…
前言 你现在的努力,是为了以后有更多的选择. 在上一篇文章通过"表白"方式,让我们快速了解网络七层协议了解了网络七层协议. 接下来我们要把重心放在网络传输的可靠性上面.一起来看TCP协议,它是如何解决网络传输不可靠的问题.这其中有个很关键的部分,就是我们的滑动窗口协议. 从工程学角度上,我们来看一看滑动窗口协议,它到底解决了一个怎样的问题? 滑动窗口协议: TCP协议的使用 维持发送方/接收方缓冲区 缓冲区是 用来解决网络之间数据不可靠的问题,例如丢包,重复包,出错,乱序 在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…