TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...OSI 7层模型和TCP/IP四层网络模型对应关系 计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图 TCP/IP协议数据流示意图 我们接下来讲解的...Linux网络编程Tcp协议是属于传输层的协议 Linux Socket 网络编程 TCP协议 TCP是面向连接的可靠的传输层协议。...TCP编程 Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。...使用TCP协议的流程图 根据流程图逐一讲解API接口.
wide': 0 tcp:tcp_retransmit_skb...0 tcp:tcp_send_reset 0 tcp:tcp_receive_reset...5 tcp:tcp_rcv_space_adjust...0 tcp:tcp_retransmit_synack 9 tcp:tcp_probe...] [k] tcp_rcv_state_process + 50.00% 0.00% python [kernel.kallsyms] [k] __tcp_transmit_skb
其中复位标志RST的作用就是“复位相应的TCP连接”。 TCP连接和释放时还有许多细节,比如半连接状态、半关闭状态等。详情请参考这方面的巨著《TCP/IP详解》和《UNIX网络编程》。...原因在于Socket.close()方法的语义和TCP的“FIN”标志语义不一样:发送TCP的“FIN”标志表示我不再发送数据了,而Socket.close()表示我不在发送也不接受数据了。...; 客户端和服务器统一使用TCP短连接。...移动链路 移动网络下,国内是有5分钟后就回收信令,也就是IM产品,如果心跳>5分钟后服务器再给客户端发消息,就会收到rst。也要查移动网络下IM 保持<5min 心跳。...,固定5分钟tcp连接回收,而且发现连接出错时,重发之前10s内消息。
引言 TCP协议是传输层中非常重要的协议。本篇博客我们将从TCP头部信息、TCP状态转移、TCP数据流、TCP数据流的控制等等方面来讨论! 在TCP协议中,通信双方的地位是平等的。...1、TCP协议的特点 传输层中我们常用的协议有两个:TCP协议和UDP协议。TCP协议相对于UDP协议的特点是:面向连接、可靠的、面向字节流的。...当TCP模块真正开始发送数据时,发送缓冲区中这些等待发送的数据可能被封装成一个或者多个TCP报文发出去,因此,TCP模块发送出的TCP报文段的个数和应用程序执行的写操作次数没有固定的数量关系。...当接收缓冲区收到一个或者多个TCP报文后,TCP模块将它们携带的应用程序的数据按照TCP报文的序号【见下文】依次放入TCP接收缓冲区中,并通知应用程序读取数据。...Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时 时间都是500ms的整数倍.
在Linux系统中,我们经常用free命令来查看系统内存的使用状态。...在Linux的内存管理中,这里的buffer指Linux内存的:Buffer cache。这里的cache指Linux内存中的:Page cache。翻译成中文可以叫做缓冲区缓存和页面缓存。...如何回收cache? Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对buffer/cache的释放。...因为内核要对比cache中的数据和对应硬盘文件上的数据是否一致,如果不一致需要写回,之后才能回收。...echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。
前言 Linux的swap相关部分代码从2.6早期版本到现在的4.6版本在细节之处已经有不少变化。本文讨论的swap基于Linux 4.4内核代码。...Linux内存管理是一套非常复杂的系统,而swap只是其中一个很小的处理逻辑。希望本文能让读者了解Linux对swap的使用大概是什么样子。...在Linux上可以使用swapon -s命令查看当前系统上正在使用的交换空间有哪些,以及相关信息: [zorro@zorrozou-pc0 linux-4.4]$ swapon -s Filename...另外,Linux内核使用cache的策略虽然是不用白不用,内核会使用内存中的page cache对部分文件进行缓存,以便提升文件的读写效率。...Linux内核使用水位标记(watermark)的概念来描述这个压力情况。Linux为内存的使用设置了三种内存水位标记,high、low、min。
Linux下删除文件不像Windows那样,删除文件放入回收站. 而是通过rm 命令删除文件.文件一般无法找回, 就是这种机制,每次带来的都是巨大的教训....为此这里实现一个简易的回收站机制: 功能: rm 删除的文件备份到指定的文件夹 每天定时清理 步骤1 写个shell脚本替换rm命令,或者在需要删除文件的时候使用mv命令将文件移动到回收站....是一个开源软件用来替代不太安全的rm,可以在/etc/safe-rm.conf中配置路径黑名单,定义哪些不能被safe-rm删除 不想删除文件写入/etc/safe-rm.conf, rm删除时会自动跳过 参考 Linux...防止 “rm -rf “误删除 工具参考篇 linux safe-rm safe-rm 官网
那么,当可用内存不足时,Linux 内核是怎么处理的呢? 本文将会介绍,当可用内存不足时,Linux 内核的处理方式。...内存回收工作主要包括以下几个步骤: 内核为了加速某些操作(如文件 I/O),会对操作的结果进行缓存(如文件页缓存),而缓存使用的内存是可以被回收的。所以,当可用内存不足时,首先会回收内核中的缓存。...由于回收内存的方式有三种,所以本文重点以 swap 机制作为分析对象,来介绍当内存不足时,内核是怎么进行内存回收工作的。...LRU算法状态流转 我们最后以一张状态流转图来描述 LRU 算法的过程: 三、总结 本文主要介绍了 Linux 内核内存回收过程中使用的 LRU 算法的原理,在下一篇文章中,我们将会介绍 Linux...内核是如何实现内存回收的,有兴趣的敬请期待。
概述 内存回收是把已经使用过的的物理页帧重新放回到内核中的buddy系统(buddy系统用于申请空闲物理页帧的子系统)管理中,解决内存紧张的问题;内存回收的页帧包括未修改的文件页帧、修改且完成同步的文件页帧...回收过程就是接触这些页帧的使用,归还给buddy子系统。...页帧回收会按照几个原则来进行内存页帧的回收,第一是回收高速磁盘缓存的页帧;第二回收睡眠时间较长的进程中的页帧;第三是回收共享页帧的引用全部清除;第四回收LRU链表中未使用的 页帧回收的过程页分为直接回收和定期回收...直接回收是发生在分配页帧时候发现空闲页帧不足的情况下。直接回收和定期回收底层都是走相同的逻辑,但是直接回收是实在紧急情况下进行,必须做到回收到足够的页帧。...定期回收则是内核的守护进程定期发起,尽量回收,保留足够的空闲空间。
文章目录 一、检查内存区域水线 二、判定节点收回是否开启、回收距离是否合法 三、回收没有使用的页、再次检查区域水线 四、分配物理页 五、本博客涉及到的处理过程源码 在 【Linux 内核 内存管理】物理分配页..." , 第一次分配 尝试使用 低水线分配 ; 如果上述 " 快速路径 " 分配失败 , 则执行 " 慢速路径 " 分配 ; 上述涉及到了 " 快速路径 " 和 " 慢速路径 " 2 种物理页分配方式...; 在 【Linux 内核 内存管理】物理分配页 ④ ( __alloc_pages_nodemask 函数源码分析 | 快速路径 | 慢速路径 | get_page_from_freelist 源码...) 博客中 , 介绍了 快速路径 主要调用 定义在 Linux 内核源码的 linux-4.12\mm\page_alloc.c#3017 位置的 get_page_from_freelist 函数..., 分配物理页内存 ; 接着 【Linux 内核 内存管理】物理分配页 ⑤ ( get_page_from_freelist 快速路径调用函数源码分析 | 遍历备用区域列表 | 启用 cpuset 检查判定
netstat -nat|grep -i "80"|wc -l 查看80的 统计httpd协议的连接数 ps -ef |grep httpd|wc -l 统计状...
] && /usr/bin/rm -rf ~/.Deanrash/* } 执行source命令生效 source ~/.bashrc 使用 你现在可以使用rm(删除),ur(撤销),rl(列出回收站...),cleardeanrash(清空回收站)命令了。...删除一个文件夹,helloworld下面的文件均被移到回收站中 rm helloworld 删除一个文件 rm abc.txt 撤销abc.txt ur abc.txt 撤销helloworld文件夹...ur helloworld 列出回收站 rl 清空回收站 cleardeanrash
通过亲身体会到了 rm 的厉害,我不得不在以后的 Linux 维护甚至是生产环境中不得不加上回收站了,希望各位童鞋也能和我一样保持一种有回收站的习惯,切不可因为自己很仔细,抱着侥幸心理,“常在河边走哪有不湿鞋...好了,开始我们的创建回收站之路吧。...rm(删除) ur(撤销) rl(列出回收站) cleartrash(清空回收站) 删除一个文件夹,helloworld下面的文件均被移到回收站中 $rm helloworld 删除一个文件 $rm abc.txt...撤销abc.txt $ur abc.txt 撤销helloworld文件夹 $ur helloworld 列出回收站 $rl 清空回收站 cleartrash 好了,重在实践,这是一个很重要的配置,很重要很重要
如何在 Linux 上安装 tcpping 测量到远程主机的网络延迟的一种常用方法是使用ping应用程序。该ping工具依赖 ICMP ECHO 请求和回复数据包来测量远程主机的往返延迟。...如果远程主机正在侦听该端口,它将以 TCP ACK 数据包响应。否则,它将以 TCP RST 数据包响应。...在 Linux 上安装tcpping tcpping作为 shell 脚本实现,该脚本响应外部工具来执行和报告 RTT 测量。因此,为了安装tcpping,你首先需要先安装这些先决条件。...但是,如果你tcpping在最小 Linux 运行时环境(例如Docker容器、AWS 最小映像 AMI)中运行,则bc可能不会预先安装。在这种情况下,你需要bc自己安装。...在Debian 的 Linux 上安装: $ sudo apt-get install bc 在 Red Hat 的 Linux 上安装: $ sudo yum install bc 安装 tcpping
一、Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下,一个正常的TCP连接,都会有三个阶段:1、TCP三次握手; 2、数据传送; 3、TCP四次挥手 注:以下说明最好能结合...”图:TCP的状态机”来理解。...SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。...当然上述很多TCP状态在系统里都有对应的解释或设置,可见 man tcp 二、关于长连接和短连接: 通俗点讲,短连接就是一次TCP请求得到结果后,连接马上结束.而长连接并不马上断开,而一直保持着,直到长连接...tcp 四次挥手 TCP协议有一个优雅的关闭(graceful close)机制,以保证应用程序在关闭连接时不必担心正在传输的数据会丢失。
传输层和网络层都是在linux内核中实现的,而linux内核是用C语言实现的,那UDP报头实际就是一个结构体,结构体成员变量实际就是UDP报头中的各个字段值,所以在分用时,只需要让指针指向数据包的前8个字节...理解TCP的报头和UDP报头一样,他们其实都是linux内核里面的结构体,当向网络层交付报文时,TCP会把发送缓冲区中的数据和TCP报头粘连在一起,然后统一向下交付。...除了设置SO_REUSEADDR选项外,还可以修改内核参数/proc/sys/net/ipv4/tcp_tw_recycle来快速回收被关闭的sockfd,回收其相关的所有资源,例如连接结构体,socket...摘自:《Linux高性能服务器编程》 3.TCP的高效性 3.1 滑动窗口(批量化发送数据段+支持超时重传机制) 1....而这正好适合拥塞控制,前期网络状况不好,正好可以慢启动,发送少量的SMSS大小的报文段,正好可以让网络状况快速的恢复,后期网络状况恢复好了,同时拥塞窗口也增长到很大了,正好可以支持大批量的数据段传输,让网络数据传输的效率快速提升上来
在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲、队列有关的参数。...网卡Bonding模式 当主机有1个以上的网卡时,Linux会将多个网卡绑定为一个虚拟的bonded网络接口,对TCP/IP而言只存在一个bonded网卡。...Linux根据参数net.ipv4.tcp_adv_win_scale计算额外开销的大小: Buffer / 2tcp_adv_win_scale 如果net.ipv4.tcp_adv_win_scale...我们已经知道,ring buffer是一个简单的FIFO队列,这种设计使网卡的驱动层保持简单和快速。而QDisc实现了流量管理的高级功能,包括流量分类,优先级和流量整形(rate-shaping)。...参考文档 Queueing in the Linux Network Stack TCP Implementation in Linux: A Brief Tutorial Impact of Bandwidth
TCP 就是这样的协议,但是它建立在 IP 基础之上的。IP 不是面向连接 的原因有很多种,其中一个原因就是它不会为很多应用增加不必要的开销。...二、TCP封包格式 1、TCP作用 TCP 协议位于 IP 协议层之上,TCP 是一个有状态的协议,并且通过内部机 制能够确认报文是否被对方正确的接收。...TCP 主要有如下几个作用: 最主要就是确认双方的的可靠数据收发 数据在网络层和应用层之间正确传输 数据报文能够正确的被应用层接收 报文在传输过程中不会乱序 2、TCP报文格式 ? 3、参数说明 ?...五、总结 TCP协议和UDP协议的区别 1、TCP协议面向连接,UDP协议面向非连接 2、CP协议传输速度慢,UDP协议传输速度快 3、TCP协议保证数据顺序,UDP协议不保证 4、TCP协议保证数据正确性...,UDP协议可能丢包 5、TCP协议对系统资源要求多,UDP协议要求少
# 快速配置Nginx转发TCP和UDP协议 前置条件 本文使用nginx版本为1.16.1 已经编译安装stream相关模块 已经安装upstream模块 不知道怎么安装的可以参考这篇 如何通过nginx...转发TCP和UDP协议 警告 本文只保证快速配置测试可用,切勿直接用于生产环境 # 前言 使用nginx转发时,如果一个服务包含多个协议(如:http,websocket,udp) 那么直接使用 http...events模块下方添加如下信息 或在路径/usr/share/nginx/modules/ 下新建xxx.conf 文件 (modules文件路径可查看nginx.conf下是否包含includes) 快速配置
1. timewait是什么 timewait在tcp结束后主动关闭一方的等待时候的行为。图片中的服务和客户端描述不是非常准确,这里客户端是主动关闭一方。...2. timewait在客户端的问题 这里的客户端,不是四次握手的客户端,而是指发起tcp请求的一方。...发起一方需要绑定本地端口,本地端口的绑定方式非常暴力:直接是从配置的偶数值开始遍历查找可用端口:(偶数端口和奇数端口内核的一个patch) 在占用端口中,查看是否可以回收利用:如果可以回收,则返回;如果不能...未被占中,直接返回 如果发起大量的客户端请求,并且不能回收,系统调用connect时长增加,甚至直接因端口耗尽直接调用失败。...tcp_send_ack(sk); tcp_time_wait(sk, TCP_TIME_WAIT, 0); break; } struct inet_timewait_sock *inet_twsk_alloc
领取专属 10元无门槛券
手把手带您无忧上云