本节所讲内容:
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@localhost ~]#ping 127.1.10.11
PING 127.1.10.11(127.1.10.11) 56(84) bytes of data.
64 bytes from127.1.10.11: icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from127.1.10.11: icmp_seq=2 ttl=64 time=0.046 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: 三次握手
作用:建立连接
tcp三次握手的链接状态
Client Server
TCP连接状态 建立过程 TCP连接状态
LISTEN
SYN_SENT ---syn seq=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 <--ack a+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@localhost ~]#mii-tool eno16777736
eno16777736: negotiated1000baseT-FD flow-control, link ok
[root@localhost~]# mii-tool eno16777736
eno16777736:no link
ethtool 是用于查询及设置网卡参数的命令。
[root@localhost ~]# ethtool eno16777736
Settings for eno16777736:
Supportedports: [ TP ]
Supportedlink modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supportedpause frame use: No
Supportsauto-negotiation: Yes
Advertisedlink modes: 10baseT/Half 10baseT/Full
100baseT/Half100baseT/Full
1000baseT/Full
Advertisedpause frame use: No
Advertisedauto-negotiation: Yes
Speed: 1000Mb/s
Duplex:Full
Port:Twisted Pair
PHYAD: 0
Transceiver:internal
Auto-negotiation:on
MDI-X:off (auto)
SupportsWake-on: d
Wake-on:d
Currentmessage level: 0x00000007 (7)
drv probe link
Linkdetected: yes
配置网络和IP地址:
方法一:
[root@localhost ~]#nmtui-edit eno16777736
或
[root@localhost ~]#nmtui
(TUI,方式,文本用户界面(Text User Interface)) 配置IP地址
方法二:修改网卡配置文件
[root@localhost ~]# 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="2f532aa0-e1cf-4fa4-8379-86c911727689"
DEVICE="eno16777736"
ONBOOT="yes" #开启网卡
IPADDR="192.168.1.68"
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@localhost ~]# systemctlstatus NetworkManager
NetworkManager.service -Network Manager
Loaded: loaded(/usr/lib/systemd/system/NetworkManager.service; enabled)
Active: active (running) since Mon 2015-12-2120:01:23 CST; 1h 47min ago
开启NetworkManager
[root@localhost ~]# systemctlrestart NetworkManager
[root@localhost ~]# systemctlenable NetworkManager
#此服务不开启,则无法通过nmtui工具配置网络
重启网络服务
[root@localhost ~]#systemctl restart network
扩展:
RHEL6网络服务管理方式
NetworkManager服务建议关闭
[root@localhost ~]#service NetworkManager stop
[root@localhost ~]#chkconfig NetworkManager off
[root@localhost ~]#service network restart
例:给新添加的网卡添加IP地址和对应的配置文件。
添加网卡之后查看网卡的名称
[root@localhost ~]#ifconfig -a
eno16777736:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.68 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fec7:1b37 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:c7:1b:37 txqueuelen 1000 (Ethernet)
RX packets 1011 bytes 91069 (88.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 729 bytes 84384 (82.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno33554984:flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:0c:29:c7:1b:41 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@localhost ~]# vim/etc/hostname
[root@localhost ~]#hostname
xuegodrm.cn
如果是RHEL6操作系统,通过下面的文件修改主机名
[root@localhost ~]# vim/etc/sysconfig/network
配置IP与主机名(域名)的对应。
[root@localhost ~]# vim/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
192.168.1.68 xuegodrm host1
DNS配置的配置文件
[root@localhost ~]# 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@localhost ~]#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
说明:
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@localhost ~]# route add-net 192.168.2.0 netmask 255.255.255.0 dev eno33554984
[root@localhost ~]# route del-net 192.168.2.0 netmask 255.255.255.0
查看网络连接状态
[root@localhost ~]# netstat-anptu
-a,--all
-n,--numeric don‘t resolvenames
-p,--programs
-t 显示tcp连接
-u 显示udp连接
ping命令的一般格式为:
-c 数目 在发送指定数目的包后停止。
-i 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 指定接口
指定从哪个端口出去。
[root@localhost ~]# ping -Ieno16777736 192.168.1.1
Iptraf
查看网络流量
[root@localhost ~]# rpm -ivh/mnt/Packages/iptraf-ng-1.1.4-4.el7.x86_64.rpm
[root@localhost ~]# iptraf-ng
arping: 查看IP地址是否有冲突
[root@localhost ~]# arping -Ieno16777736 192.168.1.1
ARPING 192.168.1.1 from192.168.1.68 eno16777736
Unicast reply from 192.168.1.1[FC:D7:33:24:88:24] 1.102ms
Unicast reply from 192.168.1.1[FC:D7:33:24:88:24] 0.801ms
Unicast reply from 192.168.1.1[FC:D7:33:24:88:24] 0.741ms
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服务。这样是为了抓包更清楚。
首先在客户端xuegod69上安装telnet
在服务端
tcpdump port 22 -c 3 -n -S -i eno16777736
抓包命令
在客户端
telnet 192.168.1.68 22
抓包命令
创建一个保存抓包信息的文件
touch a.txt
执行抓包命令
[root@xuegodrm ~]# tshark -wa.txt -i eno16777736
[root@xuegodrm ~]# tshark -ra.txt
-r 指定要读取的包文件
-V 将包尽可能的解析(这个有时在包数量很多的情况下可以不使用,这样它会给出一个很简洁的报文解释)
学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589
本文出自 “学神IT教育-讲师MK” 博客,请务必保留此出处http://xuegodlinux.blog.51cto.com/10844319/1726988
原文地址:http://xuegodlinux.blog.51cto.com/10844319/1726988