高级架构之用户态网络协议栈TCP/IP设计

 目录 

  • 一、背景

  • 二、NtyTcp的微内核网络协议栈方案

    • 1. 网络协议栈

    • 2. NtyTCP架构图

    • 3. TCP传输

  • 二、用户态网络协议栈

    • 1. 什么是用户态网络协议栈

    • 2. TCP状态迁移图

  • 四、系列推荐

一、背景

      现在的服务器支撑上百万个并发 TCP 连接已经不是新闻,实现 C1000k 的常规做法是调整内核参数,提高文件数,降低每个连接的内存消耗。在用户态运行 TCP/IP 协议栈意味着并发 TCP 连接不再占用系统文件数,只占内存,解决了 C1000k 的一大瓶颈,内核只要提供一个收发网络 packet 的接口就行。内核的网络协议栈强调通用性,主要是为吞吐量优化(性能指标通常是 MB/s 或 packets per second),顺带兼顾大量并发连接。为支持 C10k,要调整内核参数让每个连接少占资源,这与内核代码的设计初衷是违背的。用户态协议栈,可以根据应用的特点来剪裁协议栈功能。优化也更直接,不再是调黑盒参数组合,而是直接上 profiling,根据结果修改应用程序和协议栈的代码。用户态协议栈的吞吐量比不上内核,不过对 C1000k 的应用场合(例如 comet)应该不成问题。

高级架构之用户态网络协议栈TCP/IP设计_第1张图片

二、NtyTcp的微内核网络协议栈方案

  1. 网络协议栈

高级架构之用户态网络协议栈TCP/IP设计_第2张图片

    2.NtyTCP架构图

高级架构之用户态网络协议栈TCP/IP设计_第3张图片

    3.TCP传输

高级架构之用户态网络协议栈TCP/IP设计_第4张图片

三、用户态网络协议栈

1.什么是用户态网络协议栈

       用户态网络协议栈是一套协议的规范,比如HTTP->TCP->IP,通过一个HTTP请求,先转化成TCP数据包,然后再转化成IP数据包,再通过网卡传输出去;接收方通过网卡接收到IP数据包,去掉IP数据头,检测到是一个TCP数据包,就把TCP数据包传到TCP协议处理层,去掉TCP数据头,检测到是一个HTTP数据包,就把HTTP数据包传到HTTP协议处理层。 因为所有的网络数据都是通过这样一层层的堆叠起来的协议来传送的,这一过程叫用户态网络协议栈。

2.TCP状态迁移图

高级架构之用户态网络协议栈TCP/IP设计_第5张图片

四、推荐系列

  • 谈谈Nginx线程池,实现1个亿的小目标!

  • 【鸟哥】Linux内核知多少?

  • 【重磅】Linux三剑客-Awk详解

  • 那些学习WebRTC框架的艰难过程

  • 彻底理解Linux 磁盘I/O的工作原理

  • WebRTC 服务端实时音视频概述

五,学习更多资料及视频: 


DPDK 学习资料、教学视频和学习路线图 :https://space.bilibili.com/1600631218
Dpdk/网络协议栈/ vpp /OvS/DDos/NFV/虚拟化/高性能专家 上课地址: https://ke.qq.com/course/5066203?flowToken=1043799
DPDK开发学习资料、教学视频和学习路线图分享有需要的可以自行添加学习交流q 群909332607备注(XMG) 获取

原文链接:https://mp.weixin.qq.com/s/hOKk8e8bk88oFPmam-ZGcw

你可能感兴趣的:(tcp/ip,网络协议,架构)