首页 > 科技 >

常见网络加速技术浅谈(一)

2018-09-16 01:28:23 网络整理 阅读:130 评论:0

原标题:常见网络加速技术浅谈(一)网络/OpenStack/SDN/NFV搬运工 TCP/IP协议栈简介

当用户需要向网络发送数据的时候,用户实际上是通过应用程序来完成这项工作。应用程序向一个描述了对端连接的文件描述符(File Description)写数据。

之后位于操作系统内核的TCP/IP协议栈,从文件描述符收到数据,完成TCP分段(如果是TCP连接的话),加TCP,IP,Ethernet Header。在加这些Header的时候,也涉及到一些内容的计算,例如校验和,序列号。

最后,操作系统内核通过网卡的驱动,告知网卡需要发送的数据,这里的数据是长度合适,并且封装了各种协议头的网络数据。网卡会再加一些其他数据确保传输的可靠性。最后,网络数据由网卡从网线(如果是有线连接的话)发出去,经过各个网络转发设备送到对端。

常见网络加速技术浅谈(一)

对端,也就是网络数据的接收端,有个类似的过程,不过方向是反的。网卡从网线接收到数据,通知系统内核来取数据,位于系统内核的TCP/IP协议栈完成校验,剥离TCP、IP、Ethernet头部,拼接数据。最后将完整的数据传递给应用程序,或者说最终用户。用户程序仍然是通过一个文件描述符读取数据。

常见网络加速技术浅谈(一)

所以,可以将网络传输在操作系统内的整个过程分为三个部分: User area:应用程序发送和接收数据 Kernel area:TCP/IP协议栈和系统内核对用户数据的封装解封装 Device area:网卡实际的发送并接收网络数据

从前面的描述可以看出,User area和Device area的工作都相对简单,而对于复杂的网络协议的处理主要在Kernel area。Kernel area的任何处理都是需要CPU完成的。很显然,如果单位时间要传递的数据越多,CPU需要进行的运算就越多。

相关文章