本节所讲内容:
• OSI七层模型和TCP/IP四层模型
• IP地址分类
• 了解常见的网络相关协议
• TCP三次握手和四次挥手
• 网络相关的调试命令
• 实战tcpdump和tshark抓包
OSI 七层模型 TCP/IP 四层模型
应用层 应用层:如:http协议 FTP协议
表示层 ASCII
会话层
传输层 防火墙 传输层 tcp udp
网络层 三层交换机和路由器 网络层 路由器
数据链路 二层交换机和网卡 链路接口层
物理层 集线器
IP地址分类:
简单的说,IP地址分5类,常见的地址是A、B、C类
A类地址:范围从0-127,0是保留的并且表示所有IP地址(例:0.0.0.0),而127也是保留的地址,并
且是用于测试环回口用的。因此A类地址的可用的范围其实是从1-126之间。
以子网掩码来进行区别:255.0.0.0
8.8.8.8
范围 |
0 |
* |
* |
* |
* |
* |
* |
* |
二进制 |
十进制 |
最小 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
00000000 |
0 |
最大 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
01111111 |
127 |
B类地址:范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计 255.255.0.0
范围 |
1 |
0 |
* |
* |
* |
* |
* |
* |
二进制 |
十进制 |
最小 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
10000000 |
128 |
最大 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
10111111 |
191 |
C类地址:范围从192-223,以子网掩码来进行区别: 255.255.255.0
例如: 192.168.1.254
范围 |
1 |
1 |
0 |
* |
* |
* |
* |
* |
二进制 |
十进制 |
最小 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
11000000 |
192 |
最大 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
11011111 |
223 |
D类地址:范围从224-239,被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机
E类地址:军工企业,科研部门
它标识共享同一协议的一组计算机。
例:
私有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
例:
回环口一直是可用up状态:
结论:这个127这个网段都用于环回口
[root@xuegod60 ~]# ping127.0.0.1
PING 127.0.0.1(127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1:icmp_seq=1 ttl=64 time=0.073 ms
64 bytes from 127.0.0.1:icmp_seq=2 ttl=64 time=0.087 ms
TCP/IP协议
TCP/IP协议是一个协议簇。里面包括很多协议的
例如:
超文本传输协议(HTTP):万维网的基本协议.
文件传输ftp
(TFTP简单文件传输协议): 搭建无人值守安装服务器
远程登录(Telnet)
网络管理(SNMP简单网络管理协议)
TCP TransmissionControl Protocol,传输控制协议)是面向连接的协议,
UDP UDP(User Data Protocol,用户数据报协议)非连接的协议
Internet协议(IP)
Internet控制信息协议(ICMP)
地址解析协议(ARP)
反向地址解析协议(RARP)
TCP和UDP区别
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.tcp流模式与udp数据报模式 ;
tcp: 三次握手
作用:建立连接
Client Server
TCP连接状态 建立过程 TCP连接状态
LISTEN
SYN_SENT ---synseq=a --> SYN_RCVD
ESTABLISHED <--syn seq=b ack=a+1
--ack=b+1--> ESTABLISHED #(单词意思为:公认;含意为:连接成功)
任务:FIN SYN ACK RST
TCP四次挥手四交挥手状态:
关闭连接:四次挥手
C S
FIN_WAIT --fin seq=a--> CLOSE_WAIT
FIN_WAIT2 <--acka+1--
TIME_WAIT <--fin b-- LAST_ACK
--ack b+1--> CLOSE
网络接口类型表示方法:
以太网(ethernet) eno(7位数字) RHEL6 ethN
回环口 lo
光纤网 fddiN
桥设备: br0
Linux ADSL宽带接口:ppp pppN 如:ppp0
隧道 tun0 tun1
网络相关的调试命令:
查看网卡硬件相关信息:
#查看网卡物理连接是否正常
[root@xuegod60 ~]#mii-tool eno16777736
eno16777736: negotiated1000baseT-FD flow-control, link ok
[root@xuegod60 ~]#mii-tool eno16777736
eno16777736: no link
ethtool 是用于查询及设置网卡参数的命令。
[root@xuegod60 ~]#ethtool eno16777736
Settings for eno16777736:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drvprobe link
Link detected: yes
配置网络和IP地址:
方法一:[root@xuegod60~]# nmtui-edit eno16777736
方法二:修改网卡配置文件
[root@xuegod60 ~]# vim/etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="dc8f83d0-8a8f-4d94-b494-ea4bf4a16f33"
DEVICE="eno16777736"
ONBOOT="yes" #开启网卡
IPADDR="192.168.1.60"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
注:
BOOTPROTO=static 静态IP
BOOTPROTO=dhcp 动态IP
BOOTPROTO=none 无(不指定)
说明:在RHEL7中增强了NetworkManager服务功能,弱化了network的功能,RHEL7中要确定NetworkManager服务是开启的状态
[root@xuegod60 ~]#systemctl status NetworkManager
●NetworkManager.service - Network Manager
Loaded: loaded(/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset:enabled)
Active: active(running) since Mon 2016-03-07 20:19:42 CST; 1h 36min ago
开启NetworkManager
[root@xuegod60 ~]#systemctl restart NetworkManager #开启服务
[root@xuegod60 ~]#systemctl enable NetworkManager #设置服务开机自动启动
#此服务不开启,则无法通过nmtui工具配置网络
重启网络服务
[root@xuegod60 ~]#systemctl restart network
扩展:
RHEL6网络服务管理方式
NetworkManager服务建议关闭
[root@xuegod60 ~]#service NetworkManager stop
Redirecting to/bin/systemctl stop NetworkManager.service
[root@xuegod60 ~]#chkconfig NetworkManager off
[root@xuegod60 ~]#service network restart
例:给新添加的网卡添加IP地址和对应的配置文件。
添加网卡之后查看网卡的名称
[root@xuegod60 ~]#ifconfig -a
eno16777736:flags=4163
inet 192.168.1.60 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fef2:6ee prefixlen 64 scopeid 0x20
ether 00:0c:29:f2:06:ee txqueuelen 1000 (Ethernet)
RX packets 692 bytes 73055 (71.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 407 bytes 74386 (72.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno33554984: flags=4098
ether 00:0c:29:f2:06:f8 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
首先,添加设备
重启网络服务
[root@localhost ~]#systemctl restart network
修改主机名配置文件
[root@xuegod60 ~]# vim/etc/hostname
xuegod60.cn
如果是RHEL6操作系统,通过下面的文件修改主机名
vim/etc/sysconfig/network
配置IP与主机名(域名)的对应。
[root@xuegod60 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
192.168.1.60 xuegod60.cnhost1
DNS配置的配置文件
[root@xuegod60 ~]# vim/etc/resolv.conf
互动:是不是一定先解析hosts再解析DNS?
本机域名解析顺序
#vim /etc/nsswitch.conf #查找以下内容
#hosts: db files nisplus nis dns
hosts: files dns
端口号和服务对应的配置文件
[root@localhost ~]# vim/etc/services
#此文件可以查看常用端口对应的名字。iptables或netstat要把端口解析成协议名时,都需要使用到这个文件。另外后期xinetd服务管理一些小服务时,也会使用到此文件来查询对应的小服务端口号。
查看路由信息: 查看默认网关
[root@xuegod60 ~]# route-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eno16777736
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554984
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
说明:
route命令输出的路由表字段含义如下:
Destination 目标
The destination networkor 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 等
[root@xuegod60 ~]# route add-net 192.168.2.0 netmask 255.255.255.0 dev eno33554984
[root@xuegod60 ~]# route del-net 192.168.2.0 netmask 255.255.255.0
查看网络连接状态
[root@xuegod60 ~]# netstat-anptu
-a,--all
-n,--numeric don't resolvenames
-p,--programs
-t 显示tcp连接
-u 显示udp连接
ping命令的一般格式为:
-c 数目 在发送指定数目的包后停止。
-i 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 指定接口
[root@xuegod60 ~]# ping -Ieno16777736 192.168.1.1
Iptraf
查看网络流量
[root@xuegod60 ~]# rpm -ivh/mnt/Packages/iptraf-ng-1.1.4-4.el7.x86_64.rpm
[root@xuegod60 ~]# iptraf-ng
arping: 查看IP地址是否有冲突
[root@xuegod60 ~]# arping -Ieno16777736 192.168.1.1
ARPING 192.168.1.1 from192.168.1.60 eno16777736
Unicast reply from 192.168.1.1[FC:D7:33:24:88:24] 0.745ms
Unicast reply from 192.168.1.1[FC:D7:33:24:88:24] 0.851ms
Unicast reply from 192.168.1.1[FC:D7:33:24:88:24] 1.330ms
tcpdump命令:
三次握手过程分析
tcpdump port 22 -c 3 -n -S
# port 端口号
-c 抓几个包
-n 不解析端口号为协议名
-S Print absolute, rather than relative, TCP sequence numbers.
-i 指定网卡
在主机A上开启SSHD服务,此时不要有任何客户端主机来连接主机A的SSHD服务。这样是为了抓包更清楚。
在服务端
tcpdump port 22 -c 3 -n -S -i eno16777736
抓包命令
在客户端
安装telnet工具包yum -y install telnet
telnet 192.168.1.60 22
抓包命令
yum -y install wireshark
创建一个保存抓包信息的文件
touch a.txt
执行抓包命令
[root@xuegod60 ~]# tshark -wa.txt -i eno16777736
[root@xuegod60 ~]# tshark -ra.txt
-r 指定要读取的包文件
-V 将包尽可能的解析(这个有时在包数量很多的情况下可以不使用,这样它会给出一个很简洁的报文解释)