
网络协议栈
文章平均质量分 87
Linux服务器开发
C/C++Linux后台服务器开发高级架构师内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。
展开
-
抓包分析 TCP 握手和挥手
首先需要明确的是 TCP 是一个可靠传输协议,它的所有特点最终都是为了这个可靠传输服务。在网上看到过很多文章讲 TCP 连接的三次握手和断开连接的四次挥手,但是都太过于理论,看完感觉总是似懂非懂。反复思考过后,觉得我自己还是偏工程型的人,要学习这些理论性的知识,最好的方式还是要通过实际案例来理解,这样才会具象深刻。本文通过 Wireshark 抓包来分析 TCP 三次握手和四次挥手,如果你也对这些理论感觉似懂非懂,那么强烈建议你也结合抓包实践来强化理解这些理论性的知识。原创 2022-11-08 17:51:12 · 302 阅读 · 0 评论 -
深入理解什么是TCP 粘包?粘包警察是什么梗?
本文围绕 TCP 协议展开,先来回顾下 TCP 协议的特点:TCP 是面向连接的传输层协议。每一条 TCP 连接只有两个端点,每一条 TCP 连接只能是点对点的(一对一)。TCP 提供可靠的交付服务,保证传输的数据无差错、不丢失、不重复且有序。TCP 提供全双工通信,TCP 允许通信双方的应用进程在任何时候都能发送数据,为此 TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。TCP 是面向字节流的。原创 2022-10-27 14:42:26 · 1301 阅读 · 0 评论 -
你从未见过如此详细的 TCP 八股文!
客户端连续发送多次 SYN 建立连接的报文,在网络拥堵情况下:一个「旧 SYN 报文」比「最新的 SYN 」 报文早到达了服务端;那么此时服务端就会回一个 SYN + ACK 报文给客户端;客户端收到后可以根据自身的上下文,判断这是一个历史连接(序列号过期或超时),那么客户端就会发送 RST 报文给服务端,表示中止这一次连接。原创 2022-10-11 15:34:51 · 1352 阅读 · 0 评论 -
深入浅出用户态协议栈
在讲网络协议栈前,先理解一个数据包在网络传输是一个怎么样的流程,如下图所示。正常的流程是网卡接收到数据后,把数据copy到协议栈(sk_buff),协议栈把sk_buff数据解析完后再把数据放到recv_buff,此时应用程序调用recv把数据从协议栈copy到应用程序;发送数据包,则与之相反,应用程序调用send把数据包copy到send_buff,协议栈从send_buff取数据放到sk_buff,交给网卡发送出去。原创 2022-09-19 15:27:14 · 232 阅读 · 0 评论 -
Linux上TCP的几个内核参数调优
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。Linux内核源码还不是很了解的小伙伴推荐可以看看这个:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈调优清单好了,在这里先列出调优清单。请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考。同时,笔者还会在余下的博客里面详细解释了为什么要进行原创 2022-03-05 15:29:09 · 2943 阅读 · 0 评论 -
协程的原理及协程在高并发服务中的应用
协程的原理协程(coroutine)跟具有操作系统概念的线程不一样,实际上协程就是类函数一样的程序组件,你可以在一个线程里面轻松创建数十万个协程,就像数十万次函数调用一样。只不过函数只有一个调用入口起始点,返回之后就结束了,而协程入口既可以是起始点,又可以从上一个返回点继续执行,也就是说协程之间可以通过 yield 方式转移执行权,对称(symmetric)、平级地调用对方,而不是像函数那样上下级调用关系。当然 协程也可以模拟函数那样实现上下级调用关系,这就叫非对称协程(asymmetric corou原创 2021-09-28 16:37:28 · 533 阅读 · 0 评论 -
DPDK分析学习之全网唯一的DPDK教学课程丨虚拟化高性能专家之路
1、前言 当时第一次听说”数据面“这个概念,感觉挺新鲜的。误打误撞就开始搞了,刚开始接触的时候,由于不懂其中的原理,觉得很神奇,因为报文的转发是在应用层,通过一个进程进行转发。而传统的报文转发是基于内核的,要想控制报文,需要写驱动程序。后面接触了一段时间,发现原来报文转发是基于intel开源的DPDK开发的,分为控制面和数据面。这就是当前比较火热的软件定义网路SDN的一种应用场景。DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。Linu原创 2021-09-24 16:43:06 · 467 阅读 · 0 评论 -
详解TCP协议与UDP协议的区别
前言计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。文章相关视频讲解:C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发高级架构师/Linux后台架构师-学习视频底层原理到徒手实现 TCP/IP网络协议栈tcpip协议栈与网络API的关联,u原创 2021-07-28 16:37:40 · 679 阅读 · 1 评论 -
深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/c++linux服务器开发
深入分析websocket协议,从3个方面设计网络应用层协议视频讲解如下:深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/c++linux服务器开发C/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接进原创 2021-07-26 16:05:30 · 169 阅读 · 0 评论 -
TCP/IP协议栈及网络基础,协议栈原理及实现
1. TCP/IP协议栈及网络基础推荐这个在B站几千观看的视频讲解:底层原理到徒手实现 TCP/IP网络协议栈;tcp协议栈,如何实现?C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发高级架构师/Linux后台架构师-学习视频内容知识点包括Linux,Nginx,ZeroMQ,MySQL,Redis,线程池,MongoDB,ZK,Linux内核,CDN,P2P,epoll,Docker,TCP/IP,协程,DPDK等等。1.1 OSI网络模型OSI原创 2021-07-01 16:03:50 · 4048 阅读 · 1 评论 -
TCP/IP网络协议栈在Linux内核中的如何使用丨内核开发丨驱动开发丨操作系统丨内核源码
TCP/IP网络协议栈在Linux内核中的如何使用视频讲解如下,点击观看:TCP/IP网络协议栈在Linux内核中的如何使用丨内核开发丨驱动开发丨操作系统丨内核源码C/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接进入订阅不迷路随时观看:C/C++Linux服务器开发/Li原创 2021-06-28 15:45:37 · 200 阅读 · 0 评论 -
TCP/IP协议栈在Linux内核中的运行时序分析
本文主要是讲解TCP/IP协议栈在Linux内核中的运行时序,文章较长,里面有配套的视频讲解,建议收藏观看。1 Linux概述 1.1 Linux操作系统架构简介Linux操作系统总体上由Linux内核和GNU系统构成,具体来讲由4个主要部分构成,即Linux内核、Shell、文件系统和应用程序。内核、Shell和文件系统构成了操作系统的基本结构,使得用户可以运行程序、管理文件并使用系统。内核是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/I原创 2021-06-18 20:37:19 · 634 阅读 · 1 评论 -
Linux网络编程-UDP和TCP协议详解
1|0一. 引言网络协议是每个程序员都要掌握的基础知识,干啥都离不开网络,就算在家里新买了个路由器不是吗,同事连不上网,你的女朋友手机没有网看剧了正看到高潮部分,到那时候你打开百度......那嫌弃的你的眼神仿佛在说,就这?程序员连个网都不会修?以上都是臆想,以实际为准.虽然看完本文章,你还是需要去百度怎么修复网络问题,但是你已经知道为什么会出现这种问题了!2|0二. UDPUDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议.在OSI中,第四层.原创 2021-06-05 17:05:51 · 463 阅读 · 0 评论 -
100行源代码搞定用户态协议栈丨udp,icmp,arp协议的现实丨网络协议栈丨Linux服务器开发丨C++后端开发丨Linux后台开发
100行源代码搞定用户态协议栈视频讲解如下,点击观看:100行源代码搞定用户态协议栈丨udp,icmp,arp协议的现实丨网络协议栈丨Linux服务器开发丨C++后端开发丨Linux后台开发丨网络底层原理C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接进入订阅不迷路随时观看:C/C++L原创 2021-04-22 16:41:42 · 202 阅读 · 0 评论 -
Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
栈是什么?栈有什么作用?首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈的特点,很容易的想到可以利用数组,来实现这种数据结构。但是本文要讨论的并不是软件层面的栈,而是硬件层面的栈。大多数的处理器架构,都有实现硬件栈。有专门的栈指针寄存器,以及特定的硬件指令来完成 入栈/出栈 的操作。例如在 ARM.原创 2021-04-10 19:40:36 · 369 阅读 · 0 评论 -
TCP/IP协议详解
为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生原创 2021-04-07 15:46:40 · 292 阅读 · 0 评论 -
深入浅出 TCP/IP 协议栈丨手写代码实现网络协议栈
TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求。由于我们大部分时间都工作在应用层,下层的事情不用我们操心;其次网络协议体系本身就很复杂庞大,入门门槛高,因此很难搞清楚TCP/IP的工作原理,通俗一点讲就是,一个主机的数据要经过哪些过程才能发送到对方的主机上。 接下来,我们就来探索一下这个过程。这里分原创 2021-02-20 15:41:14 · 3431 阅读 · 0 评论 -
TCP/IP模型以及OSI七层参考模型各层的功能介绍和主要协议
注:网络体系结构是分层的体系结构,学术派标准OSI参考模型有七层,而工业标准TCP/IP模型有四层。后者成为了事实上的标准,在介绍时通常分为5层来叙述但应注意TCP/IP模型实际上只有四层。1、TCP/IP模型(1)物理层物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性,确保原始的数据可在各种物理媒体上传输,为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。(2)数据链路层主要提供链路控制(同步,异步,二进制,HDL原创 2021-01-29 14:52:38 · 5172 阅读 · 2 评论 -
TCP协议与UDP协议的区别以及与TCP/IP协议的联系
先介绍下什么是TCP,什么是UDP。1. 什么是TCP?TCP(Transmission Control Protocol,传输控制协议)是面向连接的、可靠的字节流服务,也就是说,在收发数据前,必须和对方建立可靠的连接。这一过程和打电话类似:先拨号振铃,等待对方接电话,说喂,再说自己是谁。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的传输层。面向有连接2. 什么是UDP?UDP (User Datagram Protocol原创 2021-01-14 16:16:26 · 732 阅读 · 1 评论 -
【Linux服务器开发系列】手写一个用户态网络协议栈,瞬间提升你网络功底丨netmap/dpdk的实现
手写一个用户态网络协议栈,瞬间提升你网络功底1.网卡基础架构2.netmap/dpdk的实现3.网络协议栈实战【Linux服务器开发系列】手写一个用户态网络协议栈,瞬间提升你网络功底丨netmap/dpdk的实现更多精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击:https://ke.qq.com/course/41...原创 2020-12-29 15:04:26 · 418 阅读 · 1 评论 -
红黑树在linux中的3种应用场景,听完受益匪浅
红黑树在linux中的3种应用场景,听完终身难忘1.虚拟内存管理2.进程管理调度器实现3.网络协议栈的红黑树【Linux后台开发系列】红黑树在linux中的3种应用场景,听完受益匪浅更多精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击:https://ke.qq.com/course/417774?flowToken...原创 2020-12-24 15:11:52 · 533 阅读 · 1 评论 -
OSI七层模型与TCP/IP五层模型
一、OSI参考模型1、OSI的来源OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。2、OSI七层模型的划分OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。原创 2020-12-12 16:26:26 · 1627 阅读 · 2 评论 -
微软大佬带你深入解析websocket丨tcp自定义协议的设计丨服务器高并发场景的优化
各个方面都离不开的websocket,只是你没有注意到1.websocket的应用场景2.tcp自定义协议的设计3.服务器高并发场景的优化【Linux服务器开发系列】微软大佬带你深入解析websocket丨tcp自定义协议的设计丨服务器高并发场景的优化内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。视频代码资料加Linux服务...原创 2020-12-11 16:24:53 · 451 阅读 · 1 评论 -
【Linux服务器开发系列】手写用户态协议栈,udpipeth数据包的封装,零拷贝的实现,柔性数组
视频教你手写网络协议栈,保证大家能学会,耐心看1.用户态协议栈2.udp/ip/eth数据包的封装3.零拷贝的实现4.零长数组(柔性数组)【Linux服务器开发系列】手写用户态协议栈,udpipeth数据包的封装,零拷贝的实现,柔性数组更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,M...原创 2020-12-07 19:56:41 · 1036 阅读 · 2 评论 -
Linux 网络协议栈——从中断到上送协议栈
注: 内核代码是 4.9 版本协议栈从报文接收说起,报文接收从网卡驱动说起。两种方式,NAPI 和 非NAPI。NAPI(New API) 是Linux内核针对网络数据传输做出的一个优化措施。其目的是在大量数据传输时, 在收到硬件中断后,通过poll方式将传输过来的数据包统一处理, 通过禁止网络设备中断以减少硬件中断数量((Interrupt Mitigation),从而实现更高的数据传输。其中要点:1、硬件中断后开始处理报文。中断处理函数只是触发软中断准备接收报文;2.原创 2020-12-07 17:26:50 · 803 阅读 · 1 评论 -
【技术分享篇】从网卡到tcpip协议栈,再到应用程序丨tcp/ip网络编程丨网络api的实现原理丨sk_buff的作用
从网卡聊到tcp/ip协议栈,再到应用程序1.posixtcp/ip网络编程2.网络api的实现原理3.sk_buff的作用【技术分享篇】面试中从网卡 聊到tcpip协议栈,再到应用程序丨tcp/ip网络编程丨网络api的实现原理丨sk更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Red...原创 2020-11-23 15:43:52 · 349 阅读 · 1 评论 -
Netty框架-IO模型(Linux五大网络IO模型)
一、 IO读写的基础原理:read、write1、编程模型一致性以及底层系统调用的理解(缓冲区与直接调用):1.1、无论是Socket的读写还是文件的读写,在Java层面的应用开发或者是linux系统底层开发,都属于输入input和输出output的处理,简称为IO读写。在原理上和处理流程上,都是一致的。区别在于参数的不同。1.2、用户程序进行IO的读写,基本上会用到read&write两大系统调用。可能不同操作系统,名称不完全一样,但是功能是一样的。1.3、read系统调用,...原创 2020-11-13 15:34:06 · 404 阅读 · 0 评论 -
TCP和UDP详解
本篇文章主要是从运输层协议概述、UDP、TCP、可靠传输的工作原理、TCP首部格式、TCP可靠传输的实现、TCP流量控制、TCP的拥塞控制、TCP的连接管理这几个方面进行解析。不对之处还望指出,喜欢的可以点赞关注一下,谢谢。一、运输层协议概述1.进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当两台主机使用网络的核心部分的功能进行点对点通信的时候,只有位于边缘部分的主机的协议栈才有运输层,而.原创 2020-11-06 16:15:41 · 1001 阅读 · 1 评论 -
深入浅出 TCP/IP 协议栈
TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求。由于我们大部分时间都工作在应用层,下层的事情不用我们操心;其次网络协议体系本身就很复杂庞大,入门门槛高,因此很难搞清楚TCP/IP的工作原理,通俗一点讲就是,一个主机的数据要经过哪些过程才能发送到对方的主机上。 接下来,我们就来探索一下这个过程。0、物原创 2020-11-04 15:52:41 · 893 阅读 · 1 评论