网络 linux 怎么维护ip握手

网络 linux 怎么维护ip握手,第1张

TCP三次握手详细介绍

1.TCP/IP协议简单介绍:

TCP/IP是一个协议族,通常分不同层次进行工作,每个层次负责不同的通信功能。包含以下四个层次:

应用层:(http、telnet、Email、dns等协议)

传输层:(tcp和udp)

网络层:(ip、icmp、rarp、bootp)

链路层:(设备驱动程序及接口卡)

1).链路层,也称作数据链路层或者网络接口层,通常包括 *** 作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

2).网络层,也称作互联网层,处理分组在网络中的活动,例如分组的选路。网络层协议包括IP协议(网际协议)、ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

3).传输层主要是为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。他所作的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时间等。由于传输层提供了高可靠性的端到端通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必须的可靠性必须由应用层来提供。

4).应用层负责处理特定的应用程序细节。包括Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传送协议)以及SNMP(简单网络管理协议)等。

二. TCP协议

TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。

TCP的特点有:

1. TCP是面向连接的运输层协议

2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的

3. TCP提供可靠交付的服务

4. TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。

5. 面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流

TCP报文首部,如下图所示:

源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个。

序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始。那如何区分两个相同序列号的不同TCP报文段就是一个问题了,后面会有答案,暂时可以不管。

确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号。也就是告诉发送方:我希望你(指发送方)下次发送给我的TCP报文段的序列号字段的值是这个确认号。

TCP首部长度:由于TCP首部包含一个长度可变的选项部分,所以需要这么一个值来指定这个TCP报文段到底有多长。或者可以这么理解:就是表示TCP报文段中数据部分在整个TCP报文段中的位置。该字段的单位是32位字,即:4个字节。

URG:表示本报文段中发送的数据是否包含紧急数据。URG=1,表示有紧急数据。后面的紧急指针字段只有当URG=1时才有效。

ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1。

PSH:告诉对方收到该报文段后是否应该立即把数据推送给上层。如果为1,则表示对方应当立即把数据提交给上层,而不是缓存起来。

RST:只有当RST=1时才有用。如果你收到一个RST=1的报文,说明你与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明你上次发送给主机的数据有问题,主机拒绝响应。

SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1。

FIN:标记数据是否发送完毕。如果FIN=1,就相当于告诉对方:“我的数据已经发送完毕,你可以释放连接了”

窗口大小:表示现在运行对方发送的数据量。也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量。

校验和:提供额外的可靠性。具体如何校验,参考其他资料。

紧急指针:标记紧急数据在数据字段中的位置。

选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,那么选项部分最长为:(2^4-1)*4-20=40字节。

TCP三次握手过程

第一次握手:建立连接时,客户端发送同步序号syn=1,随机产生seq number数据包发送(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到报文请求,由SYN=1知道客户端要建立连接请求,向客户端发送ack number(ack=x+1),syn=1,同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RCVD

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ack(ack=y+1),同时发送序号seq=y+1,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

TCP三次握手过程如下图所示:

9是信号量,kill实际上是用来发送信号量给进程,你可以通过man kill查看信号量列表,这里给你一个我获得的信号量列表:

Name Num Action Description

0 0 n/a exit code indicates if a signal may be sent

ALRM 14 exit

HUP 1 exit

INT 2 exit

KILL 9 exit cannot be blocked

PIPE 13 exit

POLL exit

PROF exit

TERM 15 exit

USR1 exit

USR2 exit

VTALRM exit

STKFLT exit might not be implemented

PWR ignore might exit on some systems

WINCH ignore

CHLD ignore

URG ignore

TSTP stop might interact with the shell

TTIN stop might interact with the shell

TTOU stop might interact with the shell

STOP stop cannot be blocked

CONT restart continue if stopped, otherwise ignore

ABRT 6 core

FPE 8 core

ILL 4 core

QUIT 3 core

SEGV 11 core

TRAP 5 core

SYS core might not be implemented

EMT core might not be implemented

BUS core core dump might fail

XCPU core core dump might fail

XFSZ core core dump might fail

我使用的是RED HAT LINUX 9.0 使用文本英文安装。这个就跳过去了安卓 细说了,自己装装就熟悉了。对装LINUX不熟悉的朋友可以先使用中文安装,界面是一样的,用中文安装最大的缺点就是在文本下有时候会出现乱码。

安装时,最小化安装,什么软件包都不选,防火墙选择无那个选项。安装完后,使用setup命令,选择system services,服务项里只选择network 和ssh服务,其他的都不要。然后进入网卡文件目录 cd /etc/sysconfig/network-scripts 。在文本模式下,只能添加一个网卡的IP,复制另一个网卡的参数 cp eth0 eth1 修改eth1网卡的参数。vi ./eth1 修改成你的内网IP

DEVICE=eth1

BOOTPROTO=static

BROADCAST=192.168.0.255

IPADDR=192.168.0.1

NETMASK=255.255.255.0

NETWORK=192.168.0.0

ONBOOT=yes

IP是192.168.0.1

在/etc/rc.d目录下新建一个文件rc.fw 使用命令touch /etc/rc.d/rc.fw,然后将你的脚本添加到rc.fw里 使用vi /etc/rc.d/rc.fw 我使用的下面的脚本

touch /var/lock/subsys/local

/sbin/modprobe ip_tables

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_conntrack_ftp

/sbin/iptables -F

/sbin/iptables -F -t nat

/sbin/iptables -X

/sbin/iptables -Z

/sbin/iptables -P INPUT ACCEPT

/sbin/iptables -P FORWARD ACCEPT

/sbin/iptables -P OUTPUT ACCEPT

echo 1 >/proc/sys/net/ipv4/ip_forward

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

/sbin/iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT

ptables -t nat -A PREROUTING -p udp -d 192.168.0.1 --dport 53 -j DNAT --to 61.134.1.9:53

保存退出,编辑/etc/rc.d/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

/etc/rc.d/rc.fw &

重启后,一个网关服务器就做好了。

再转个全面点的

我们在使用Internet时。特别 时Intranet接入Internet时,经常要用到的代理服务器。代理服务器以其良好的可配置性,对信息的灵活访问机制,对信息的缓存机制,加快网络访问而成为一个常用的服务器。对于我们网吧的系统管理员,应对代理服务器的安装和配置有相当的熟悉和了解。

代理服务器系统结构为Redhat Linux 9.0,使用“网关型”代理结构使网吧的Intranet接入Internet。

代理服务器系统组成规范如下:

一、熟悉作为代理服务器机器设备的硬件配置

确定机器的硬件设备与Linux兼容。可以http://www.redhat.com/support/hardware检查支持的硬件列表(该步骤可以省略)。将主板的CMOS设置中的“病毒检测”项关闭。

二、开始安装Linux(采用本地光盘安装模式)

1. 用Linux安装启动光盘引导机器启动;

2.采用文本安装模式。在boot:提示符后输入text进行文本模式安装,使用Tab,空格,箭头和回车来控制安装界面。

3.开始安装

⑴、Language Selection(语言选择);选择中文

⑵、键盘的配置;

⑶、选择本地光盘安装;

⑷、鼠标的配置;

⑸、选择Custom(定制)系统安装;

⑹、分区(以80GB硬盘,1024MB内存RAM为例);

分区类型 最小空间尺寸 规范空间尺寸

/ 512MB 1024MB

/var 1024MB 2048MB

Swap 1024MB(RAM) 2048MB(2*RAM)

/home 1024MB MAX

⑺、配置LILO;

⑻、配置网络(逐一对所有网络适配器进行设置);

eth0 ***.***.***.*** 外网IP地址

eth(1、2、3..) ***.***.***.*** 内网IP地址

⑼、设置时区;

⑽、设置超级用户(root)口令和设置用户帐号

⑾、安装软件包;取消系统默认的所有安装软件包;选择Custom(定制)安装软件包; ssh(远程访问);

⑿、开始格式化分区和安装软件包;

⒀、创建起动盘,选择不创建;

⒁、安装完成。

4.配置Linux

三、实现网关代理功能

1.编写脚本文件rc.net以实现网关代理作用。次脚本文件保存路径为/etc/rc.d/rc.net。脚本文件内容如下:

#!/bin/sh

/sbin/modprobe ip_tables

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_conntrack_ftp

/sbin/iptables -F

/sbin/iptables -F -t nat

/sbin/iptables -X

/sbin/iptables -Z

/sbin/iptables -P INPUT ACCEPT

/sbin/iptables -P FORWARD ACCEPT

/sbin/iptables -P OUTPUT ACCEPT

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

/sbin/iptables -A FORWARD -s 0/0 -j ACCEPT

/sbin/iptables -A FORWARD -d 0/0 -j ACCEPT

echo "1" >/proc/sys/net/ipv4/ip_forward

/sbin/iptables -t nat -A PREROUTING -p tcp --dport 445 -j DROP

/sbin/iptables -t nat -A PREROUTING -p tcp --dport 135 -j DROP

/sbin/iptables -t nat -A PREROUTING -p tcp --dport 139 -j DROP

/sbin/iptables -t nat -A PREROUTING -p udp --dport 6612 -j DROP

#IGMP

iptables -A INPUT -p ICMP -d ***.***.***.*** -m limit --limit 1/s --limit-burst 10 -j ACCEPT

iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

#NMAP FIN/URG/PSH

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

#Xmas Tree

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP

#Another Xmas Tree

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

#Null Scan(possibly)

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP

#SYN/RST

iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

#SYN/FIN -- Scan(possibly)

iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

#synfoold

iptables -N synfoold

iptables -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN

iptables -A synfoold -p tcp -j REJECT --reject-with tcp-reset

iptables -A INPUT -p tcp -m state --state NEW -j synfoold

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

iptables -N syn-flood

iptables -A INPUT -p tcp --syn -j syn-flood

iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN

iptables -A syn-flood -j REJECT

sysctl -w net.ipv4.icmp_echo_ignore_all=1

echo "1" >/proc/sys/net/ipv4/tcp_syncookies

注意:字母区分大小写;其中***.***.***.***为外网IP地址

2.在Linux引导文件/etc/rc.d/rc.local文件中加入命令行:/etc/rc.d/rc.net,使脚本文件在系统启动时能够自动执行。

3.重新启动机器。

四、网线的连接

1.代理服务器eth0网络适配器与Internet接入设备(如光猫)用网线直接连接;注意此网线需要特殊的跳线如下:

一端:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕

一端:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕

2.代理服务器的eth1、eth2…..等网络适配器与主干交换机用网线连接

五、维护

此代理服务器为免维护服务器,为了更好的良好运转,可以每半年时间将此代理服务器重新启动一次。

1网卡多网关的

一块网卡设置多个ip地址很简单

只要把配置文件复制多个

然后修改名字为 eth1:0 eth1:1 等就行了

注意设备文件名也要做相应的修改

问题是500个ip有些多了

一个linux网关带500台的话需要很好的优化才行

另外如果用一块网卡带500台 网卡的负载也很大

建议用多块网卡

Linux学习网收集整理 ,(如果您觉得本站不错,请告诉身边的朋友,或转载到论坛、百度知道、贴吧等,记得带网址哟,不胜感激!)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7322270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存