Linux内核中影响tcp三次握手的一些协议配置

在Linux的发行版本中,都存在一个/proc/目录,有的也称它为Proc文件系统。在 /proc 虚拟文件系统中存在一些可调节的内核参数。这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 cat 工具进行读取,或使用 echo 命令进行修改。下面给出了几个可调节的参数是关于Linux TCP/IP 栈的参数,相关的帮助可以通过man tcp或info tcp获取。在这个目录中,包括了一些特殊的文件,不仅能用来反映内核的现行状态和查看硬件信息,而且,有些文件还允许用户来修改其中的内容,以调节内核的现行工作状态,例如/proc/sys/子目录下的文件。与/proc/目录中其它目录不相同的是,/proc/sys/目录下的文件不仅能提供系统的有关信息,而且还允许用户立即停止或开启内核的某些特性及功能。在/proc/sys/目录中的/proc/sys/net/子目录更是与网络息息相关,我们可以通过设置此目录下的某些文件来开启与网络应用相关的特殊功能,同时,也可以通过设置这个目录下的某些文件来保护我们 的网络安全。本文主要介绍 会影响tcp建立连接三次握手的一些因素:

1  /proc/sys/net/ipv4/tcp_max_syn_backlog    (1024)

该变量控制每个监听端口接收的客户端发送的SYN队列的长度,输入的SYN报文段连接请求需要排队,直到本地服务端接收,如果连接数多于默认值,则新来的连接请求会被丢弃,在服务端会维护一个未连接队列,该队列为每个客户端发送的SYN包开设一个条目,说明已经收到SYN包,并且向客户端发出SYN+ACK包,等待客户端的确认SYN包,这时服务端出于SYN_RECV状态,如果tcp_max_syn_backlog过小,一直收不到客户端最后发来的SYN确认包,服务端就会一直出于SYN_RECV状态,查看netstat -an的时候如果SYN_RECV过多有可能就是tcp_max_syn_backlog过小。www.169it.com

2  /proc/sys/net/ipv4/tcp_synack_retries    (5)

该变量控制内核向某个输入的SYN/ACK段重新发送响应的次数,降低取值可以更早的检测到客户端连接失败的尝试。

3  /proc/sys/net/ipv4/tcp_retries2   (15)

该变量控制内核向已经建立连接的远程主机重新发送数据的次数,降低取值可以更早的检测到与远程主机的连接失效,从而可以快速释放该链接的资源。

4  /proc/sys/net/ipv4/ip_local_port_range   (32768   61000)

该变量控制系统上可用的临时端口的范围。端口是ip协议对各个socket加以区分的地址的逻辑抽象。

5  /proc/sys/net/ipv4/tcp_retries1   (3)

该变量设置放弃回应一个tcp连接请求前,需要进行多少次重试。

6  /proc/sys/net/ipv4/tcp_syncookies  (0 关闭  1 打开)

该参数主要用来防止SYN FLOOD攻击。SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。

本文来源:Linux内核中影响tcp三次握手的一些协议配置

时间: 2024-10-30 06:40:18

Linux内核中影响tcp三次握手的一些协议配置的相关文章

Python中的TCP三次握手和四次挥手过程

tcp三次握手和四次挥手 首先先介绍什么是传输层: 1.三次握手 1) 三次握手的详述 首先Client(客户)端发送连接请求报文,Server(服务器)段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接.(A.B关闭状态CLOSED--B收听状态LISTEN--A同步已发送状态SYN-SENT--B同步收到状态S

抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)

功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP,UDP,等网络协议包.注:wireshark只能查看封包,而不能修改封包的内容,或者发送封包. 一.开始界面 开始界面,如图1所示: 图1(wireshark开始界面) 点击Caputre->Interfaces,出现图2所示对话框,选择需要捕获网络包的网卡,点击start按钮开始抓包. 注:如果

【linux】关于TCP三次握手和四次挥手

1.TCP是什么 关于OSI的七层模型 TCP在第四层——Transport层,第四层的数据叫Segment->报文 IP在第三层——Network层,在第三层上的数据叫Packet->数据包 ARP在第二层——Data Link层:在第二层上的数据,我们把它叫Frame->帧 数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端,就是每个数据都会经过数据的封装和解封装的过程. wireshark抓到的包与对应的协议层如下图所示 Frame 36441: 物理

TCP连接建立过程中为什么需要“三次握手”(转)

传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的.可靠的.基于字节流的运输层(Transport layer)通信协议.是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的.互联网络与单个网络不同,因为互联网络的不同部分可能有着截然不同的拓扑.带宽.延迟.分组大小和其他参数.TCP的设计目标是能够动态的适应互联网络的这些特性,而且当面对多种失败的时候仍然能够健壮. 每一次TCP连接都需要三个阶段:连接建立.数据传送和连接释放.“三次

硬不硬你说了算!35 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

每日一句英语学习,每天进步一点点: 前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 TCP 如初恋. 遥想小林当年校招时常因 TCP 面试题被刷,真是又爱又狠…. 过去不会没关系,今天就让我们来消除这份恐惧,微笑着勇敢的面对它吧! 所以小林整理了关于 TCP 三次握手和四次挥手的面试题型,跟大家一起探讨探讨. TCP 基本认识 TCP 连接建立 TCP 连接断开 Socket 编程 PS:本次文章不涉及 T

硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

前言 不管面试 Java .C/C++.Python 等开发岗位,?TCP?的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 TCP 如初恋. 不会没关系,今天就让我们来消除这份恐惧,微笑着勇敢的面对它吧! 于是我整理了关于?TCP 三次握手和四次挥手的面试题型,跟大家一起探讨探讨. TCP 基本认识 TCP 连接建立 TCP 连接断开 Socket 编程 PS:本次文章不涉及 TCP 流量控制.拥塞控制.可靠性传输等方面知识,这些留在下篇哈! 正文 01 TCP 基本认识 瞧瞧 T

iptables ip报文 tcp报文 tcp三次握手四次端口 有限状态机 状态转移

linux 网络防火墙 netfilter :是内核的一个frame :框架 iptables :数据报文过滤:nat mangle等规则生成工具 网络知识: IP报文首部   tcp报文首部 hdr len   报头首部长度  给出的字节需要乘以横向 32/8 = 4字节 Type of Service(服务类型)    服务类型 Total Length(总长度)          报文总长度    包括表头与内容 (Data) 部分.最大可达 65535 bytes.   注: 报文总长度

TCP三次握手、四次断开与十一种状态

一:OSI 模型 Open System Interconnect开放系统互连参考模型,是由ISO(国际标准化组织)定义的,它是个灵活的.稳健的和可互操作的模型,OSI模型的目的是为了规范不同系统的互联标准,使两个不同的系统能够较容易的通信,而不需要改变底层的硬件或软件的逻辑,OSI模型分为七层,OSI把网络按照层次分为七层,由下到上分别为物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. 1.1:第七层:应用层的功能:为应用软件提供接口,使应用程序能够使用网络服务.常见的应用层协议:

TCP三次握手四次挥手过程梳理

1. 数据传输的大致示意图 1.1 TCP连接的几种状态说明 即命令 netstat 结果中的所有状态: 2. TCP连接建立的全过程 2.1 TCP三次握手建立TCP连接 1)客户端和服务端都处于CLOSED状态.(发起TCP请求的称为客户端,接受请求的称为服务端) 2)服务端打开服务端口,处于listen状态. 3)客户端发起连接请求.首先发送SYN(synchronous)报文给服务端,等待服务端给出ACK报文回应.发送的SYN=1,ACK=0,表示只发送了SYN信号.此时客户端处于SYN