`
waterlife
  • 浏览: 67883 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Linux协议栈之TCP传输协议(一)

阅读更多

面向连接的TCP协议(Transmission Control Protocol )是一种面向连接的流式传输协议,它通过三种机制来保证传输的可靠性:

序列号,应答机制和超时重传。tcp中处理超时重传的函数有:

tcp_do_transit:处理具体的重传工作;

reset_xmit_timer:重新设置超时定时器;

tcp_retransmit_time:使用指数退避算法重设定时器;

tcp_retransmit:推测重传原因;

tcp_write_timeout:超时重传的次数限制;

retransmit_timer:超时重传入口。

 

定时器主要分为四种:普通数据超时重传,窗口探测和保活定时器,2MS定时器。tcp每次发送完数据后并不是立即删除发送的数据,而是把它们保存到重发队列中。send_head,send_tail和link3分别指向队头,队尾和下一个元素。只有在接受到远端的ACK应答后,数据才从重发队列中移除。在发送数据后会自动设置一个重发定时器,并且tcp采用指数退避算法每次都是上次定时的2倍,最长不超过2min。

 

其中保活定时器有一些特殊性,它发送的数据包使用老序列号,并且不使用指数退避算法而是采用固定时间的时间间隔发送保活数据。

 

TCP协议将数据包发送到网络可能经过以下队列:

1. partial队列,该队列只缓冲一个数据包,当该数据包长度超过MSS时,将被发送或缓冲到别的队列中(partial的超时为1s);

2. write_queue队列,该队列缓冲由窗口限制或者本地节制下来的数据;

 

TCP不推荐减小发送窗口的大小,当窗口值小于最大窗口值一半或大于MSS值事,都设为MSS大小。

3. send_head已发送出去但未收到回应的数据。

 

对于紧急数据和带外数据OOB(Out of Band)是不同的,紧急数据是指插入到普通数据中的一些字节;而带外数据一般需要新创建一个数据通道单独传输。

分享到:
评论

相关推荐

    Linux TCP IP 协议栈分析

    ### Linux TCP/IP 协议...通过以上内容,我们可以看到Linux TCP/IP协议栈涉及了从系统初始化到网络通信的各个环节,每一部分都是相互关联且不可或缺的。深入了解这些内容对于理解网络通信的底层实现机制具有重要意义。

    Linux协议栈源码分析.rar

    传输层,Linux协议栈对TCP和UDP协议进行了详细实现。`tcp/`目录包含了TCP协议的源码,包括连接建立、数据传输、流量控制、拥塞控制等关键功能。`udp/`目录则处理无连接的UDP协议。 在应用层,Linux协议栈通过socket...

    深入分析linux tcp/ip协议栈

    首先,TCP/IP协议栈是一个四层模型,包括链路层、网络层、传输层和应用层。在Linux中,这个模型被映射到内核的网络子系统中,由多个模块协同工作来实现: 1. **链路层**:这是协议栈的最底层,处理硬件级别的通信。...

    Linux协议栈源码分析

    《Linux协议栈源码分析》是一本专注于解析Linux操作系统中网络协议栈实现的深度学习资料。通过对IP层、TCP和UDP等关键协议的源代码分析,本书为读者揭示了网络通信背后的复杂机制,是深入理解网络协议和操作系统内核...

    linux TCP IP协议栈源码解析资料大全

    最后,《Linux协议栈实现分析.vsd》可能是Visio绘制的流程图,直观展示TCP/IP协议栈的工作流程,便于非程序员理解。 综上所述,这个资料大全提供了从理论到实践的全面视图,适合对Linux网络底层感兴趣的开发者、...

    TCP.zip_tcp ip协议栈_tcp linux

    标题中的“TCP.zip_tcp ip协议栈_tcp linux”表明这是一个关于TCP/IP协议栈在Linux系统中的实现和分析的压缩包文件。TCP/IP协议栈是互联网通信的基础,它定义了网络通信的层次结构和各层间的数据交换规则。在这个...

    Linux协议栈实现分析

    本文将深入探讨Linux协议栈实现的细节,特别是与TCP/IP协议流程相关的部分。 首先,TCP/IP协议栈可以分为四层,从上至下依次为应用层、传输层、网络层和数据链路层。每一层都有其特定的任务和协议: 1. 应用层:这...

    Linux内核 tcp ip协议栈源码分析

    Linux 2.6.18内核版本是历史较早的一个版本,但其TCP/IP协议栈的架构依然具有参考价值。TCP(Transmission Control Protocol)负责在不可靠的网络上提供可靠的数据传输服务,而IP(Internet Protocol)则主要处理...

    Linux协议栈的实现

    Linux协议栈是Linux内核的一部分,负责处理网络通信相关的任务。它基于TCP/IP协议族,包括IP、TCP、UDP等协议。本文主要关注的是IP协议的实现,因为它是TCP/IP模型中最核心的部分之一。 #### 二、消息通讯简介 ###...

    linux-1.2.13 网络协议栈源码

    Linux 1.2.13 网络协议栈源码是学习TCP/IP协议栈实现的一个经典入口。这个版本的Linux内核虽然较旧,但因其简洁性和完整性,非常适合初学者深入理解网络通信的核心原理。在Linux内核中,网络协议栈是负责处理网络...

    Linux TCP_IP协议栈的设计及实现特点.pdf

    3. **抽象数据结构**:在Linux协议栈的实现中,每一层都定义了一个抽象数据结构,如sk_buff(socket buffer),用于在不同协议层之间传递数据,提供统一的接口。这种设计使得上层协议可以透明地处理下层协议的具体...

    基于Linux环境的TCP协议一致性测试实现.pdf

    Linux提供了一个称为sock的API,用于实现TCP协议的连接和数据传输。通过对sock API的调用,可以实现TCP协议的连接、数据传输和断开连接等操作。 2.2 基于Linux环境的TCP协议一致性测试实现步骤 基于Linux环境的TCP...

    基于Linux网络协议栈的嵌入式开发

    本文介绍了如何在Linux网络协议栈的基础上构建一个专门用于高速视频点播系统的新型网络协议栈——VSP。通过对Linux网络协议栈的基本架构和设计原理的理解,结合具体应用场景的需求,我们能够设计出高效且可靠的定制...

    linux内核协议栈分析

    Linux内核协议栈是Linux操作系统中负责处理网络数据包传输的核心组件。它按照TCP/IP协议模型的分层设计,将网络通信划分为链路层、网络层、运输层和应用层四个层次,并为每层提供了相应的协议实现与数据结构。 在...

    linux TCP/ip协议栈源码分析

    Linux TCP/IP协议栈源码分析文档是一份对Linux操作系统中TCP/IP协议栈源代码进行深入探讨的文档。文档以Linux2.6.18内核源码为基础,逐章节逐步分析了协议栈的各个子模块,从系统初始化到网络层、传输层的实现细节,...

    Linux_Tcpip协议栈笔记_linux_Linux_Tcpip协议栈笔记_

    Linux TCP/IP协议栈是操作系统内核中的重要组成部分,它负责处理网络通信,包括TCP(传输控制协议)和IP(互联网协议)以及其他相关的网络协议。这篇笔记深入探讨了Linux系统下的TCP/IP协议栈工作原理和实现细节,...

    linux TCPIP 协议栈.pdf

    Linux TCP/IP协议栈是Linux操作系统核心网络通信的基础,它负责处理网络数据的传输,包括接收、处理和发送网络包。本教程将深入探讨Linux内核中的TCP/IP协议栈原理及源代码分析,帮助读者理解其工作流程和实现细节。...

    linux 平台, modbus tcp 协议的简单实现

    在Linux平台上实现Modbus TCP协议是一项常见的任务,特别是在工业自动化和物联网(IoT)领域。Modbus是一种广泛应用的通信协议,允许设备之间进行数据交换,而TCP(Transmission Control Protocol)是网络层的一种传输...

Global site tag (gtag.js) - Google Analytics