标签:
• OSI七层模型和TCP/IP四层模型
• IP地址分类
• 了解常见的网络相关协议
• TCP三次握手和四次挥手
• 网络相关的调试命令
• 实战tcpdump和tshark抓包
OSI 七层模型
物理层
网络:中继器,集线器、网线、HUB
数据链路层
网络:网卡,网桥,交换机
网络层
网络:路由器,防火墙、多层交换机
传输层
计算机:进程和端口
会话层
计算机:建立会话,SESSION认证、断点续传
表示层
计算机:编码方式,图像编解码、URL字段传输编码
应用层
计算机:应用程序,如FTP,SMTP,HTTP
TCP/IP 四层模型
链路接口层--对应着OSI的数据链路层和物理层
网络层--对应着OSI的网络层
传输层 ---对应着OSI的传输层
应用层---应用层对应着OSI的 应用层 表示层 会话层
ip地址分类:
简单的说,IP地址分5类,常见的地址是A、B、C类
A类地址:
范围从0-127,0是保留的并且表示所有IP地址(例:0.0.0.0),
而127也是保留的地址,并且是用于测试环回口用的。
因此A类地址的可用的范围其实是从1-126之间。
以子网掩码来进行区别:255.0.0.0
B类地址:
范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,
剩下的2段号码为本地计算机的号码
以子网掩码来进行区别:255.255.0.0
C类地址:
范围从192-223,以子网掩码来进行区别: 255.255.255.0
D类地址:
范围从224-239,被用在多点广播(Multicast)中
多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
E类地址:
范围从240~255,保留给实验用
私有IP:
如果一个组织不需要接入互联网,但同时运行TCP/IP,则选择私网IP
A:10.0.0.0/8
B: 172.16.0.0 ~ 172.31.0.0/16
C: 192.168.0.0 ~ 192.168.255.0/24 255.255.255.0
环回口:
127网段:环回口一直是可用up状态
本地ping 127开头的任何ip都可以ping通
linux --lo
——————————————————————————————————————————————————————————————————
TCP/IP协议:
定义:TCP/IP协议是一个协议簇。里面包括很多协议的。
常见的TCP/IP协议:
超文本传输协议(HTTP):万维网的基本协议. 80/tcp
文件传输(TFTP简单文件传输协议): 69/udp
远程登录(Telnet):23/tcp
网络管理(SNMP简单网络管理协议):161/udp
TCP Transmission Control Protocol,传输控制协议)是面向连接的协议,
UDP UDP(User Data Protocol,用户数据报协议)非连接的协议
Internet协议(IP)
Internet控制信息协议(ICMP)
地址解析协议(ARP)
反向地址解析协议(RARP)
TCP和UDP区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.tcp流模式与udp数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
tcp: 三次握手
是指建立一个TCP连接时,需要客户端和服务器总共发送3个包
第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,
以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,
将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。
第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来
ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1
SYN攻击---典型的ddos攻击
在三次握手过程中,服务器发送SYN-ACK之后,
收到客户端的ACK之前的TCP连接称为半连接(half-open connect).
此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.
Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断
地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在
的,服务器需要不断的重发直 至超时,这些伪造的SYN包 将长时间占用未连接队列
,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
发现解决:
检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,
特别是源IP地址是随机的, 基本上可以断定这是一次SYN攻击.
在Linux下可以如下命令检测是否被Syn攻击
一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp
协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增
加最大半连接和缩短超时时间等.但是不能完全防范syn攻击。
tcp三次握手的链接状态
C S
TCP连接状态 建立过程 TCP连接状态
LISTEN
SYN_SENT ---syn seq=a --> SYN_RCVD
ESTABLISHED <--syn seq=b ack=a+1
--ack=b+1--> ESTABLISHED #(单词意思为:公认;含意为:连接成功)
TCP四次挥手,作用:关闭连接
四交挥手状态:
关闭连接:四次挥手
C S
FIN_WAIT --fin seq=a--> CLOSE_WAIT
FIN_WAIT2 <--ack a+1--
TIME_WAIT <--fin b-- LAST_ACK
--ack b+1--> CLOSE
【注意】中断连接端可以是Client端,也可以是Server端。
为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。
其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当
Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个
ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所
有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
__________________________________________________________________________________________________________
linux网络类型接口表示方法
以太网(ethernet) ethN
回环口 lo
光纤网 fddiN
桥设备: br0
Linux ADSL宽带接口:ppp pppN 如:ppp0
VPN tun0 tun1
linux网络相关调试命令:
查看网卡硬件相关信息:
mii-tool :查看网卡的物理连接是否正常
[root@pagoda63 yum.repos.d]# mii-tool eth1
eth1: negotiated 100baseTx-FD, link ok
ethtool:用于查询及设置网卡参数的命令
[root@pagoda63 yum.repos.d]# ethtool eth1
显示一堆信息
Speed: 1000Mb/s #当前是1000M
Duplex: Full #全双工
——————————————————————————————————————————————————————————————————————————————————————
配置网络和IP地址:
方法一:
setup (TUI,方式,文本用户界面(Text User Interface)) 配置IP地址
说明:在RHEL6中增加了一个新的网络服务:NetworkManager
[root@pagoda63 yum.repos.d]# /etc/init.d/NetworkManager stop
[root@pagoda63 yum.repos.d]# chkconfig Nchkconfig NetworkManager off
然后重启网络服务
方法二:
修改网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
配置文件内容
DEVICE=eth0 #物理设备的名字,内核通过这上名字来确认是哪个网卡
BOOTPROTO=static 或dhcp 或none无(不指定),如是none,配上IP地址和static效果一样
IPADDR=192.168.18.254
NETMASK=255.255.255.0
ONBOOT=YES 开机启动网卡
TYPE=Ethernet #类型为:以太网
注:
BOOTPROTO=static 静态IP
BOOTPROTO=dhcp 动态IP
BOOTPROTO=none 无(不指定)
给新添加的网卡添加IP地址和对应的配置文件。
setup #通过setup命令可以快速生成一个网卡的配置文件
cp /etc/sysconfig/network-scripts/ifcfg-eth{0,1}
注:有两个网卡,后面添加的新网卡不要设置默认的网关地址
——————————————————————————————————————————————————————————————————————————————————————
查看ip相关信息
ifconfig 查看所有激活状态的网卡信息
ifconfig DEVICE 指定网卡查看信息
ifconfig -a 查看所有网卡,包括没有启动的网卡信息
ifconfig DEVICE down/up 启用,关闭某网卡
ifdown 关闭网卡
ifup 激活网卡
临时为一个网卡添加多个ip
ifconfig eth0:1 192.168.10.63 netmask 255.255.255.0
怎样永久为一个网卡添加多个ip
肯定和配置文件有关:
[root@pagoda63 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1
[root@pagoda63 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:2
[root@pagoda63 network-scripts]# vim ifcfg-eth0:1
DEVICE=eth0:1 #修改
TYPE=Ethernet
UUID=dac7c54e-c60f-497a-92a5-698574f80677
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=00:0C:29:E1:83:B1
IPADDR=192.168.2.63 #修改
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0:1" #修改
USERCTL=no
重启服务,ifocnfig查看
————————————————————————————————————————
修改主机名配置文件
作用:设置主机名永久生效
其他相关配置文件:
#vim /etc/sysconfig/network
NETWORKING=yes 开机时激活网络,开启network服务
注:如果NETWORKING=no,即使network设置为开机启动,那也启不来。
HOSTNAME=localhost.localdomain
[root@pagoda63 yum.repos.d]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=pagoda63.cn
NTPSERVERARGS=iburst
————————————————————————————————————————————————————————————————————————————————————————————————
配置IP与主机名(域名)的对应
/etc/hosts #优先级高于DNS解析
[root@pagoda63 yum.repos.d]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 pagoda63.cn
192.168.1.64 pagoda64.cn
————————————————————————————————————————————————————————————————————————————————————————————
DNS配置的配置文件
/etc/resolv.conf
RHEL5,用这个文件。在RHEL6中直接在网卡配置文件中指定:DNS1=192.168.1.1
默认情况下,域名解析顺序: 本地hosts文件-》DNS查询
是不是一定先解析hosts再解析DNS?---》往下看就知道
————————————————————————————————————————————————————————————————————————————————————————————————
配置本机域名DNS解析顺序
[root@pagoda63 yum.repos.d]# vim /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns #先解析文件。再解析dns配置
#hosts: dns files
————————————————————————————————————————————————————————————————————————————————
端口号和服务对应的配置文件
/etc/services ##此文件可以查看常用端口对应的名字
iptables或netstat要把端口解析成协议名时,都需要使用到这个文件。
另外后期xinetd服务管理一些小服务时,
也会使用到此文件来查询对应的小服务端口号。
————————————————————————————————————————————————————————————————————————————————————————————
查看路由信息: 查看默认网关
route
[root@pagoda63 yum.repos.d]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
说明:
Destination 目标
The destination network or destination host. 目标网络或目标主机。
Gateway 网关
The gateway address or ‘*‘ if none set. 网关地址,如果没有就显示星号或4个0。
Genmask 网络掩码
The netmask for the destination net; ‘255.255.255.255‘ for a
host destination and ‘0.0.0.0‘ for the default route.
添加/删除路由条目
增加 (add) 与删除 (del) 路由的相关参数:
-net :表示后面接的路由为一个网域;
-host :表示后面接的为连接到单部主机的路由;
netmask :与网域有关,可以设定 netmask 决定网域的大小;
dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
添加路由(把Linux做成路由器时或服务器有多个网卡,指定到不同网段走哪个网卡)
[root@pagoda63 yum.repos.d]# route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
删除路由
[root@pagoda63 yum.repos.d]# route del -net 192.168.2.0 netmask 255.255.255.0
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
临时修改MAC地址:
root@pagoda63 ~]# ifconfig eth0 hw ether mac地址
查看网络连接状态
[root@pagoda63 yum.repos.d]# netstat -antup
-a, --all
-n, --numeric don‘t resolve names
-p, --programs
-t 显示tcp连接
-u 显示udp连接
ping命令
-c 数目 在发送指定数目的包后停止。
-i 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 指定从哪个端口出去。
[root@pagoda63 yum.repos.d]# ping -c 3 192.168.1.1
[root@pagoda63 ~]# ping -i 0.01 192.168.1.1
[root@pagoda63 ~]# ping -I eth0 192.168.1.1
iptraf
查看网络流量
需要安装
[root@pagoda63 ~]# iptraf #会弹出类似setup的界面
arping: 查看IP地址是否有冲突
[root@pagoda63 ~]# arping 192.168.1.1
ARPING 192.168.1.1 from 192.168.1.63 eth0
Unicast reply from 192.168.1.1 [AC:F1:DF:FC:C9:BB] 1.445ms
Unicast reply from 192.168.1.1 [AC:F1:DF:FC:C9:BB] 1.116ms
Unicast reply from 192.168.1.1 [AC:F1:DF:FC:C9:BB] 1.077ms
如果出现arp攻击会有多个不同的mac地址
arpwatch
[root@pagoda63 ~]# yum install arpwatch
arp监控
[root@pagoda63 ~]# /etc/init.d/arpwatch start
[root@pagoda63 ~]# arpwatch -i eth0 #监听eth0
[root@pagoda63 ~]# tail -f /var/log/messages #查看
[root@pagoda63 ~]# vim /etc/sysconfig/arpwatch #配置文件
tcpdump命令:抓包
(1)指定接口(-i)
[root@pagoda63 ~]# tcpdump -i eth0
抓包分析三次握手
在主机A上开启SSHD服务,此时不要有任何客户端主机来连接主机A的SSHD服务。
这样是为了抓包更清楚。
主机A执行:
tcpdump port 22 -c 3 -n -S
# port 端口号
-c 抓几个包
-n 不解析端口号为协议名
-S Print absolute, rather than relative, TCP sequence numbers.
主机B执行:
yum install telnet -y #安装telnet
telnet 192.168.1.63 22 #连接主机A的22端口
然后根据内容分析数据包
iftop :流量监控
安装:[root@pagoda63 ~]# yum install iftop
NetHogs:用来按进程或程序实时统计网络带宽使用率
yum install nethogs
nethogs -d 5 5s刷新一次
-d : delay for refresh rate.
-h : display available commands usage.
-p : sniff in promiscious mode (not recommended).
-t : tracemode.
-V : prints Version info.
以下是NetHogs的一些很有用的交互控制(键盘快捷键)
-m : Change the units displayed for the bandwidth in units like KB/sec -> KB -> B-> MB.
-r : Sort by magnitude of respectively traffic.
-s : Sort by magnitude of sent traffic.
-q : Hit quit to the shell prompt.
wireshark:
yum install wireshark -y
[root@pagoda63 ~]# tshark -w filename -i eth0
-w 将抓包的数据写入文件filename中。
-i 指定要抓包的接口名称
[root@pagoda63 ~]# tshark -r filename
-r 指定要读取的包文件
-V 将包尽可能的解析(这个有时在包数量很多的情况下可以不使用,这样它
会给出一个很简洁的报文解释)
~
标签:
原文地址:http://www.cnblogs.com/ylion/p/4738524.html