当前位置:首页 > 天道酬勤 > 正文内容

机制的要素(实现多态的机制)

张世龙2021年12月03日 18:43天道酬勤800

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数据报选择一个操作系统队列。ip进程将udp数据报放入相应的端口,这样应用程序就可以从这些端口提取数据报。

TCP/UDP数据输入流程图

tcp数据报的输出过程和输入一样,tcp的输出也很复杂。必须首先建立连接,并且必须将传输的数据放入消息段。在对方发送确认之前,消息段必须连续重传。tcp将消息传递给ip,ip处理路由和传输。系统协议栈使用两个TCP进程来处理这个复杂的过程,一个是tcpout,处理消息分段和数据传输的细节,另一个进程是tcptimer。下图显示了TCP和UDP的数据输出结构。

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

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

对于tcp输出,运行应用程序的进程调用系统调用(套接字,发送.)将数据传递到操作系统并保存在缓冲区中。然后,应用程序进程通知tcp输出进程有新数据等待发送。当tcp输出过程执行时,它将数据流分成消息段,然后将数据封装在ip数据报中。最后,tcp输出过程将ip数据报放入某个端口

分享一个在腾讯课堂上tcp/ip的训练营的课程。

主要内容:1。如何实现单机百万连接;2.如何优化三次握手和四次挥手;3.如何优化TCP的传输速率;4.NGINX零拷贝技术的实现;5.Epall的原理分析及面试中必须提出的问题。

需要了解学习的朋友可以后台私信【tcp/ip】获取链接

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/13468.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。