tcp/ip协议栈实现机制

news/2024/5/18 16:08:44 标签: udp, 网络, tcp/ip

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进程将从该端口中提取并发送这些数据报。


http://www.niftyadmin.cn/n/1868716.html

相关文章

智慧安防方案升级后,商家年年续保,我每年都有稳定收入,躺赚!

在一次客户交流活动中,安保服务商如实和我们提出心里的担忧。 方案升级后的一年内,这位安保服务商为约千家商铺升级了安防系统,靠增值服务每年稳赚百万,商家年年续保,成为当地的安保公司的No.1企业。 那安防市场到底…

涂鸦商照新功能上线 ,揪出大楼内的能耗“吞金兽”,智能“管家”让你心中有数

盛夏来临,夏天最离不开的是什么? ——空调! 但是各位回想一下是不是都有过被办公室、商超、或其他公共建筑的空调冻得瑟瑟发抖的时候? 这其实是能耗的浪费!环境温度与空调设置的温度差距越大,系统耗能高。…

绝大部分人都理解错了HTTP中GET与POST的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结…

大型机库光控难?能耗大?来试试这个智能平台,轻松四两拨千斤!

常州机场大型维修机库是民用飞机维修保养的场所,经过多年使用,开始普遍出现设备老化,管理效率低等问题。 近年来国际间贸易与交往的频繁促进了国内外民航业以及飞机制造业的飞速前进,飞机维修的需求量正日益增加。而作为存放&…

HTTP的报文格式、GET和POST格式解析

TTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。 请求报文 一个HTTP请求报文由请求行(request line)、请求头部(header&#xf…

产品更新|智慧安防App OEM配置已上架IoT平台

智慧安防App OEM配置已上架IoT平台,欢迎用户在IOT平台进行自定义配置。 低成本开发 您可以在无技术人员投入的情况下, 零代码快速完成应用配置、上架和更新, 无需担心开发、测试周期和费用; 快速搭建 操作简便, 分步骤式引导, 无需从头设计智能设备管理…

java获取GET和POST请求参数

URL和参数列表 一 获取请求方式 request.getMethod(); get和post都可用, 二 获取请求类型 request.getContentType(); get和post都可用,示例值:application/json ,multipart/form-data, application/xml等 三 获取所有…

猴博士携手涂鸦社区,开创智慧社区建设运营新格局

6月18日下午,涂鸦社区在杭州顺利召开城市合作伙伴实战培训会第二期,吸引了IoT、智慧社区、地产等行业伙伴走进涂鸦智能中国总部参观交流。 会议上,涂鸦社区为优秀城市合作伙伴——南京天由科技现场授牌。天由科技董事长周青、总经理张红梅&a…