`
jiagou
  • 浏览: 2548769 次
文章分类
社区版块
存档分类
最新评论

tcp/ip协议栈实现机制

 
阅读更多


CSDN lidp http://blog.csdn.net/perfectpdl


tcp/ip协议栈属于操作系统内核层,通过提供系统调用供用户空间访问,从数据报到达最底层的网卡到最终传递给上层软件有一个过程,
当一个数据报到达时网络驱动程序把数据报放到一个队列中,同时发送一个消息给ip进程,这里ip进程是一个独立的程序,专门处理ip数据报,tcp/ip协议栈中,根据协议的功能及复杂程度,一般通过进程方式实现,而协议间的数据传递则借助于操作系统提供的进程间通讯机制,当ip进程接受了一个传入的数据报,他必须决定将其发往何处作进一步处理,如果数据报中的内容是一个报文段,则必须将其交付给TCP模块,如果他携带的是用户数据报(UDP),则必须将其交付给udp模块,以此类推。


由于TCP比较复杂,因而在许多设计方案中,有一个独立的进程来处理传入的TCP报文段,由于IP和TCP有各自独立的进程执行,因而IP和TCP必须借助进程间的通信机制来通信。


一旦tcp模块收到ip进程传送过来的报文段,就利用tcp协议端口号来寻找该报文段所属的连接,如果报文段中含有数据,TCP将把数据添加到与该连接相关的一个缓冲区中,并给发送方返回一个确认,如果输入的报文段中含有对放送出去的数据的确认,tcp输入进程还必须与tcp定时器管理进程通信,取消超时重发事件。

而处理udp数据报的进程结构与处理tcp进程采用的结构不同,由于udp比tcp要简单,udp模块不作为独立进程存在,事实上,它是由一些常规过程组成。ip进程通过调用来处理传入的udp数据报,这些过程检查udp目的站的协议端口号,根据端口号为udp数据报选择一个操作系统队列,ip进程把udp数据报放在响应的端口中,是应用程序可从这些端口中提取数据报。

TCP/UDP数据输入流程图





TCP数据报输出过程
与输入一样,tcp的输出也是很复杂的,必须先建立连接,所传送的数据必须放到报文段中,在对方发来确认之前,报文段必须不断重发,tcp把报文交给ip,由ip来处理选路和传送,系统协议栈利用两个tcp进程来处理这一复杂过程,一个为tcpout,由他来处理报文段和数据传输细节,另一个进程是tcptimer,他管理一个定时器,为超时重发事件定时,通知tcpout进程重发。下图为tcp, udp数据输出结构图。







总结:tcp/ip协议栈是计算机操作系统中的一部分,它使用进程这一抽象概念使各个协议软件互相独立,每一个进程独立执行,并提供明确的并行机制,这种系统中有ip进程,tcp输入进程,tcp输出进程和tcp定时器管理进程,同时每个应用程序还各有一个进程。


上层应用程序作为独立进程通过系统调用向tcp传递数据流或者想udp数据报,对于udp输出处理,运行某个应用程序的进程调用一个系统调用,执行一段udp过程,申请一个ip数据报,填写相应的目的地址,将udp数据封装在Ip数据报中,然后将ip数据报传递给ip进程,由ip进程发送出去。

对于tcp输出,运行应用程序的进程调用一个系统调用(socket,send..),将数据传入操作系统中,并保存在一个缓冲区内,应用进程随后通知tcp输出进程,有新的数据等待发送,当tcp输出进程执行时,他将数据流划分成报文段,然后将这些数据封装在ip数据报中,最后,tcp输出进程将ip数据报放入某一端口中,ip进程将从该端口中提取并发送这些数据报。


分享到:
评论

相关推荐

    FuIP v2.1 专为单片机联网而定制的TCP/IP协议栈

    FuIP专为单片机而定制的TCP/IP协议栈,适用于任何8,16,32位单片机 技术论坛:www.fuhome.net/bbs/ FuIP可用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制 版本:v2.1 2014年10月15日 龙剑奋斗 定期...

    浅谈Linux内核TCP_IP协议栈源代码教学.pdf

    其次,学习Linux内核TCP/IP协议栈源代码可以培养学生的多种能力,包括理解TCP/IP协议的实现机制、C程序设计能力、操作系统的设计和实现能力、微机原理的应用等。通过学习Linux内核TCP/IP协议栈源代码,学生可以深入...

    通信与网络中的嵌入式系统TCP/IP 协议栈的定制研究

    本文在对标准TCP/IP 协议栈的组成结构分析基础上,针对简单文件传输的需要,选择ARP、IP、UDP、TFTP 四个基本协议进行简化定制,提出了一种新的嵌入式TCP/IP协议栈。文中阐述了对各协议进行优化精简的原理和方法,给出了...

    FuIP 2.0协议栈,专为各种单片机的TCP/IP协议,接入互联网

    FuIP专为单片机而定制的TCP/IP协议栈,适用于任何8,16,32位单片机 技术论坛:www.fuhome.net/bbs/ FuIP可用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制 版本:v2.0 2014年6月29日 龙剑奋斗 定期...

    tcpdemo.rar_TCP/IP协议栈_C/C++_

    tcp协议的demo程序,包括tcp server和client,可用于学习基本的C/S通信机制。

    TCPIP思维导图.pdf

    由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(英语:TCP/IP Protocol Stack)[4][5] 。这些协议最早发源于美国DoD的ARPA网项目,因此也...

    TCPIP协议栈实践报告.doc

    IP 协议栈是 TCP/IP 协议栈的核心组件之一,它提供了数据传输的基本机制。但是,IP 协议栈有一个缺陷--不可靠性。这个缺陷可以通过上层协议(如 TCP 或 UDP)来解决。 总结来说,IP 协议栈是计算机网络中的核心协议...

    基于Linux的嵌入式Web服务器网络协议栈的设计.pdf

    然后,文章提出了基于Linux环境下的嵌入式Web服务器协议栈S-TCP/IP的设计方案,该方案利用Linux网络系统结构中的抽象接口和数据结构定义中的自定义结构项,对Linux中的TCP/IP协议栈和IP协议进行裁减,并在Linux中...

    LwIP应用指南致远电子.pdf

    * 需要了解TCP/IP协议栈的基本原理和机制。 * 需要具备一定的网络编程知识和经验。 * 需要根据实际情况选择合适的函数和参数。 本文还提供了多个实例,演示了如何使用LwIP的RAW API接口编程和实现TCP/IP协议栈的...

    TCP.IP路由技术[第二卷](CCIE职业发展系列).pdf

     熟悉IPv6(下一代IP协议)的设计目标以及当前的发展状态;通过大最经专家验证的方法来管理路由器:  通过大量实用且全面的复习题、配置练习题及故障检测与排除练习题来测试和验证各种所学知识:  在掌握高级TCP...

    TCP.rar_TCP/IP协议栈_Visual_C++_

    网络编程代码,含有消息机制,事件机制,完成端口,重叠io的示例代码

    hcip静态综合实验.docx

    "HCIP静态综合实验" ...HCIP静态综合实验是HCIP认证中的一个重要组成部分,它测试候选人的网络路由器配置和故障排除能力,并要求候选人了解TCP/IP协议栈中的三次握手机制和网络路由器的配置原理。

    嵌入式系统/ARM技术中的嵌入式LwIP协议栈的内存管理

    摘要:在内存需求分析的基础上,阐述了LwIP TCP/IP协议栈中pbuf结构的基本原理和内存管理机制的实现。这对在嵌入式系统中实现TCP/IP协议栈,进行网络连接有重要意义。关键词:TCP/IP协议LwIP协议栈内存管理pbuf结构...

    论文研究-一种自适应的嵌入式协议栈缓冲区管理机制.pdf

    它是基于抽象缓冲区接口而设计的,具有自适应性,支持动态内存的自动分配与回收,同时实现了嵌入式TCP/IP协议栈各层之间的零拷贝通信。在基于研究平台S3C44B0X的Web server网络数据监控系统上的测试结果表明,该缓冲...

    lTCP/IP心得

    1,tcp状态流程图机制,让加深socket编程中牵扯到listen,bind,accept,connect 的理解; 2,linux 网络协议栈数据收发的流程; 3,解析ARP/TCP头

    串口wifi模块使用手册和驱动协议

    串口Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接入...

    Linux环境下的网络编程.pdf

    Linux 作为一个单一内核的操作系统,协议栈的实现嵌在系统内核中,本文分析了 TCP/IP 协议的基本原理以及 Linux 中的 TCP/IP 网络层次结构,重点介绍了 Linux 环境下的 socket 编程。 Linux 环境下的网络编程是指在...

    LwIP参数设置、内存配置

    LWIP内存配置详解,有的时候需要发送大量数据而网速很慢,有的时候需要减少内存消耗,通过配置LWIP中的选项即可进行优化和裁决

    串口wifi-03模块例程代码

    03串口Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接...

    EMW3162例程

    mxchipWNetTM library是运行在MXCHIP公司开发的EMW316x系列嵌入式Wi-Fi模块上的TCP/IP协议栈、Wi-Fi射频驱动、运行环境以及相关示例程序,是构建嵌入式Wi-Fi应用的完整解决方案。 该软件库专门为嵌入式Wi-Fi应用设计...

Global site tag (gtag.js) - Google Analytics