国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

三张图告诉你Linux TCP/IP协议栈原理

发布时间:2019/07/01标签:   协议    点击量:

原标题:三张图告诉你Linux TCP/IP协议栈原理
能够绝不夸大的说现现在的互联网是基于TCP/IP构建起来的收集。弄懂协定栈的道理,不管对换试收集IO机能仍是处理收集成绩都是有很大关心的。本篇文章就率领各人来看看内核是怎样操纵收集数据流的。TCP特色咱们都十分清晰TCP协定计划的初志,就是保障数据传输的疾速,有序,无误。以是特色总结以下: 面向衔接,能够用五元组来表现一条衔接(近程ip,近程端口,当地ip,当地端口,传输层协定)。 数据是全双工的 数据是有序的,也就是接收的数据必定是依照发送时的次序的。 流量操纵,发送方能够经过接受方滑动窗口巨细来静态调剂发送数据的巨细。 堵塞操纵,发送方经过ACK的状况联合堵塞算法综共计算给出窗口巨细。懂得完TCP特色字后,咱们就来真正的看看数据发送究竟是怎么的进程?数据发送咱们起首来看张图:

三张图告诉你Linux TCP/IP协议栈原理
上图展现的是数据流淌的在硬件中的进程,下图展现的是数据在协定栈的进程:
三张图告诉你Linux TCP/IP协议栈原理
全部进程分为三个大地区:用户区,内核区,装备。这里所说的装备就是网卡。流程以下: 用户利用顺序挪用write体系挪用 确认文件描写符 拷贝数据到socket buffer中 创立tcp片断,盘算checksum 增加IP头,履行ip路由,盘算checksum 增加以太网协定头部,履行ARP 告知网卡芯片要发送数据了 网卡从内存中猎取数据发送,发送实现中止告知CPU数据接受间接看硬件数据流图:
三张图告诉你Linux TCP/IP协议栈原理
起首网卡把接受到的数据包写入到它的内存当中。而后对其停止校验,经过后发送到主机的主存当中。主存中的buffer是驱动调配好的,驱动会把调配好的buffer描写告知网卡,假如没有充足的buffer接收网卡的数据包,网卡会将数据包抛弃。一旦数据包拷贝到主存实现,网卡会经过中止告诉主机OS。以后驱动会检讨它能否能处置这个新的包。假如能处置,驱动会把数据包包装成OS意识的构造(linux sk_buffer)并推送到下层。 链路层接受到帧后检讨经过的话会依照协定解帧并推送至IP层。IP层会在解包以后依据包中包括的IP信息决议推送至下层仍是转发到其余IP。假如推断须要推送至下层,则会解掉IP包头并推送至TCP层。TCP在解报以后会依据其四元组找到对应的TCB,以后经过TCP协定处置这个报文。在接受到报文后,会把报文加到接收报文,以后依据TCP的状况发送一个ACK给对端。固然上述进程会遭到NAT等等Netfilter的感化,这里不谈了,也没深研讨过。固然为了机能,大牛们方方面面也做了许多尽力,比方大到RDMA、DPDK等大的软硬件技巧,小到zero-copy、checksum offload等;总结古代的软硬件TCP/IP协定栈单链接发送速度到1~2GiB/s完整没有任何成绩(经由实测)。假如你想探究更优良的机能,你能够实验RMDA等技巧,他们经过绕过内核以增加拷贝等方法优化了机能,固然能够依靠硬件。【编纂推举】 艰深易懂用户数据报协定(UDP) 物联网妙手必备:收集协定栈LwIP(一) 道理剖析 | 深刻懂得Apache Flink的收集协定栈 IPv6 遍及尚早,怎样在 Ubuntu 体系中禁用 IPv6 协定 如许说明IP地点、子网掩码、网关之间的接洽,不会技巧也能听懂【义务编纂:武晓燕 TEL:(010)68476606】 点赞 0

上一篇:未来这些前端技术可能会火

下一篇:没有了

返回
版权信息Copyright ? IT技术教程 版权所有??? ICP备案编号:鲁ICP备09013610号