主要内容:TCP的ACK发送方式,以及ACK发送状态转换机的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 概述 TCP采用两种方式来发送ACK:快速确认和延迟确认. 在快速确认模式中,本端接收到数据包后,会立即发送ACK给对端. 在延迟确认模式中,本端接收到数据包后,不会立即发送ACK给对端,而是等待一段时间,如果在此期间: 1. 本端有数据包要发送给对端.就在发送数据包的时候捎带上此ACK,如此一来就节省了一个报文. 2. 本端没有数据包…
主要内容:TCP的延迟确认.延迟确认定时器的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 延迟确认模式 发送方在发送数据包时,如果发送的数据包有负载,则会检测拥塞窗口是否超时. 如果超时,则会使拥塞窗口失效并重新计算拥塞窗口. 如果此时距离最近接收到数据包的时间间隔足够短,说明双方处于你来我往的双向数据传输中, 就进入延迟确认模式. /* Congestion state accounting after a packet has been…
主要内容:TCP的快速确认.TCP_QUICKACK选项的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 快速确认模式 (1) 进入快速确认模式 设置快速确认模式标志,设置在快速确认模式中可以发送的ACK数量. static void tcp_enter_quickack_mode (struct sock *sk) { struct inet_connection_sock *icsk = inet_csk(sk); tcp_incr_qu…
某天晚上睡觉前突然想到 tcp的ACK确认是单独发的还是和报文一起发的,下面看一下别人的解答 一.ACK定义TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号前面的所有数据.ACK字段长度为32位,能表示0~2^32-1之间的值. 二.ACK作用发送方在一定时间内没有收到服务端的ACK确认包后,就会重新发送TCP数据包.发送方收到了ACK,表明接收方已经接收到数据,保证了数据的可靠达到. 三.ACK机制接收方在接收到数据后,不是立即会给发送方发送ACK的…
主要内容:从TCP层面判断发送缓存的申请是否合法,进程因缺少发送缓存而进行睡眠等待. 因为有发送缓存可写事件而被唤醒. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd TCP的发送缓存管理发生在两个层面上:单个Socket和整个TCP层. 上一篇blog讲述了单个Socket层面上的发送缓存管理,现在来看下整个TCP层面上的发送缓存管理. 从TCP层面判断发送缓存的申请是否合法 在申请发送缓存时,会调用sk_stream_memory_free()来…
TCP数据包中的序列号(Sequence Number)不是以报文段来进行编号的,而是将连接生存周期内传输的所有数据当作一个字节流,序列号就是整个字节流中每个字节的编号.一个TCP数据包中包含多个字节流的数据(即数据段),而且每个TCP数据包中的数据大小不一定相同.在建立TCP连接的三次握手过程中,通信双方各自已确定了初始的序号x和y,TCP每次传送的报文段中的序号字段值表示所要传送本报文中的第一个字节的序号.        TCP的报文到达确认(ACK),是对接收到的数据的最高序列号的确认,并…
TCP数据包中的序列号(Sequence Number)不是以报文段来进行编号的,而是将连接生存周期内传输的所有数据当作一个字节流,序列号就是整个字节流中每个字节的编号.一个TCP数据包中包含多个字节流的数据(即数据段),而且每个TCP数据包中的数据大小不一定相同.在建立TCP连接的三次握手过程中,通信双方各自已确定了初始的序号x和y,TCP每次传送的报文段中的序号字段值表示所要传送本报文中的第一个字节的序号.        TCP的报文到达确认(ACK),是对接收到的数据的最高序列号的确认,并…
主要内容:TCP发送缓存的初始化.动态调整.申请和释放. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 数据结构 TCP对发送缓存的管理是在两个层面上进行的,一个层面是单个socket的发送缓存管理, 另一个层面是整个TCP层的内存管理. 单个socket的发送缓存所涉及的变量. struct sock { ... /* 预分配缓存大小,是已经分配但尚未使用的部分 */ int sk_forward_alloc; ... /* 提交给IP层的发送数…
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[PI系列]SAP IDOC发送状态03,PI没有收到消息的解决办法   前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 IDOC发送状态是03 PI系统未收到消息的解决办法 IDOC发送状态是03只是说把数据发送了,但没有达到PI系统 当IDOC的状态是12的时候,才是把数据发送到了PI系统 第一步:执行程序RBD…
TCP/IP网络编程系列之四-基于TCP的服务端/客户端 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流的套接字.在了解TCP之前,先了解一下TCP所属的TCP/IP协议栈. 如图所示,TCP/IP协议栈共分为4层,可以理解成数据收发分成了4个层次化过程. 链路层 它是物理链接领域标准化结果,也是最基本的领域,专门定义LAN.WAN.MAN等网络标准.若两台计算机通过网络进行数据交换,链路层就负责整个物…