网络协议基础知识
1、 OSI七层模型
应用层:针对于应用约定的标准
HTTP:超文本传输协议 Telnet:远程协议 OICQ:qq的协议
HTTPS:安全超文本传输协议 SMTP\POP3:简单邮件传输协议(发)\邮局协议(收)
表示层:约束数据格式,负责格式转化,加密以及解密
会话层:建立、维护、解除会话,数据的传输通道
传输层:约定数据采用何种方式进行传递
TCP:传输控制协议,实现数据的可靠传输
UDP:用户数据报协议,实现数据的快速传输,不可靠
传输控制协议TCP (Transmission Control Protocol):一种面向连接的协议,提供可靠的传输服务,通过重传机制,实现数据的可靠传输。
用户数据报协议 UDP (User Datagram protocol):一种非面向连接的协议,提供不可靠的传输服务
网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合
网络层:提供ip地址(ip地址,用于在网络中唯一的标识一台设备,作用于网络与网络间的通信,提供路由和选路)
数据链路层:提供MAC(物理)地址,用于在一条链路上唯一的标识一台设备,作用于网络内的通信。MAC(物理地址):烧写在网卡,全球唯一。MAC地址的有效范围仅限于本网络。
物理层:约定接口类型,传输速度,线缆针脚等。
交换机:位于OSI的第二层(数据链路层) ,交换机RJ45接口特别多,局域网内部通讯
路由器:位于OSI的第三层(网络层),路由器RJ45接口特别少,因特网通讯,隔离广播域
网关:网络的出口
2、TCP\IP四层模型
应用层:将OSI上三层融合,用于产生需要传递的数据
传输层
网络层
网络接口层:将OSI下两层融合
3、数据的发送和接收
发出数据是对数据进行封装,从应用层穿衣服(衣服穿完,从物理层的线路发出去)
接收数据是对数据进行解封装,从物理层脱衣服
http client ——————>Router ——————> http server
(http://www.baidu.com) 因为数据为http 所以数据要求为可靠的传输 ,由传输层对数据封装TCP形成数据包
应用层产生一个数据,向外发送一个请求百度的指令(DATA→(到达传输层,加一个 tcp)TCP+DATA→形成数据段→IP+TCP+DATA(到达网络层,+IP,IP地址包含源ip地址和目的ip地址)→形成数据包→帧头+IP+TCP+DATA+帧尾(到达数据链路层 +帧头、帧尾,进一步形成数据帧,帧头里有源MAC和目的MAC{通过ARP获取})→形成数据帧(数据链路层对数据包进一步封装帧头和帧尾,形成数据帧)→(物理层将数据帧转化为比特流(到达物理层,一串二进制数),从网卡接口发出)
应用层(表示层、会话层)产生一个数据
到了传输层+tcp或者udp传输方式,形成数据段
到了网络层+IP头,形成数据包
到了数据链路层+MAC帧头帧尾,形成数据帧
到了物理层将数据帧转化成比特流
4、服务端口
DNS:域名服务器(保存域名和IP地址之间的对应关系) 数据库
端口号:0-65535 (在传输层中) 实际可用1-65534
ftp 20、21 ssh 22 Telnet 23 DNS 53 HTTP、Niginx 80 NTP 123/udp HTTPS 443 rsyslog 514 NFS 2049/tcp mysql 3306 redis 6379 Weblogic 7001 php 9000 tomcat 8080(8005、8009) zabbix 10050 10051
用来区分不同的应用程序。
5、获取mac地址
如何获取目的MAC:先发送一个ARP 请求(ARP地址解析协议 ARP relay→ARP应答)通过IP地址获得目标设备的MAC,获得后再次访问不需要再次广播获取。
ARP工作原理:ARP request 请求的目标MAC是FF-FF-FF-FF-FF-FF(广播MAC),源MAC 是自己的MAC ;收到ARP request 将自己的MAC封装到ARP relay 中,以单播的形式返回。
ARP伪造网关
ARP是通过IP地址来获得目标设备的MAC协议,源设备以广播的形式发送ARP request 目标设备收到后,把自己的MAC封装到ARP relay中,以单播的形式返回。
arping -I 网卡 + 当前主机在一个局域网的对方的IP地址
[root@kakaops ~]# arping -I ens33 10.11.67.102
Unicast reply from 10.11.67.102 [00:21:CC:65:81:F1] 1.021ms
6、TCP建立连接三次握手
TCP断开连接四次挥手
7、ICMP协议,侦测远程主机是否存在
禁用ping功能:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
启用ping功能:echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
IP、MAC、路由基础知识
我常用的命令格式
临时添加ip:ip a a 10.11.67.31/24 dev ens33
删除临时ip:ip a d 10.11.67.31/24 dev ens33
添加临时默认路由:ip route add default via 10.11.67.31 dev ens33
删除临时默认路由:ip route del default via 10.11.67.31 dev ens33
反正也是临时添加ip和路由,删不删除的无所谓了
========================================================
1、查看ip和mac
[root@kakaops ~]# yum -y install net-tools
[root@kakaops ~]# ifconfig
[root@kakaops ~]# ip a(=ip addr)
查询mac地址和ip地址的对应关系,只能在同一个网段内
[root@kakaops ~]# arping -I 网卡 + 当前主机在一个局域网的对方的IP地址
[root@kakaops ~]# arping -I ens33 10.11.67.102
Unicast reply from 10.11.67.102 [00:21:CC:65:81:F1] 1.262ms
[root@kakaops ~]# arp -a (显示查看高速缓存中的所有项目)
ARP(地址解析协议)地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。arp -a是显示查看高速缓存中的所有项目。ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址 → MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。
2、IP配置
①、查看ip地址
[root@kakaops ~]# ifconfig //查看所有网卡
[root@kakaops ~]# ifconfig ens33 //单独查看eth0
[root@kakaops ~]# ip a //查看所有网卡
[root@kakaops ~]# ip a s ens33 //单独查看ens33,s=show
②、配置IP(临时)
[root@kakaops ~]# ifconfig ens33 192.168.42.250/24 //写子网掩码,覆盖
[root@kakaops ~]# ifconfig ens33:0 192.168.42.250/24 子网掩码可以不写 ,追加
[root@kakaops ~]# ip a a 10.11.67.31/24 dev ens33 //常用的添加临时ip命令
[root@kakaops ~]# ip a d 10.11.67.31/24 dev ens33 //常用的删除临时ip命令
追加进去的IP地址也可以用于远程连接
注意:
addrIP地址 简写成a
add 添加IP 简写成a
del 删除IP 简写成d
③、启动网卡:
[root@kakaops ~]# ifconfig ens33 up
[root@kakaops ~]# ifup 网卡配置文件
④、关闭网卡:
[root@kakaops ~]# ifconfig ens33 down
[root@kakaops ~]# ifdown 网卡配置文件
对于NAT模式的VMvare默认网关是2,虚拟机和本机的IP要在同一个网段
如果没有ifconfig和arp命令
安装net-tools
yum install net-tools
三种永久更改网卡配置的方法
1、修改网卡配置文件,静态IP配置,动态IP配置
2、图形化设置
3、最小化页面nmtui
网卡配置文件位置
[root@kakaops ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
多块网卡一起使用时,添加一个网卡,还要创建一个网卡配置文件
重启网络服务: 配置文件修改后必须重起网络服务
[root@kakaops ~]# systemctl restart network
动态更改网卡配置文件
TYPE=“Ethernet”
NAME=“ens33”
DEVICE=“ens33”
BOOTPROTO=“dhcp”
ONBOOT=“yes”
静态更改网卡配置文件
TYPE=“Ethernet”
NAME=“ens33”
DEVICE=“ens33”
BOOTPROTO=“static”
ONBOOT=“yes”
IPADDR=192.168.42.88
NETMASK=255.255.255.0
GATEWAY=192.168.42.2
DNS1=114.114.114.114
3、路由配置
NAT
创建一个新的网络(能够跟主机互相通信,可以访问跟宿主机同一网段的所有服务器,除了宿主以外,其他服务器不能访问这个虚拟机,网关是2)
桥接(vmware安装过程没有安装桥接网卡,网关是1)
桥接模式的虚拟机的IP地址跟宿主机本身处于同一个网段.
(10.11.59.110)(10.11.59.111)
网关:跟宿主机也保持一直
相当于独立于局域网内的一台机器,可以跟局域网任何的机器进行互相的通讯.
仅主机
虚拟机只能跟宿主机进行通讯
①、查看路由表
[root@kakaops ~]# ip r
[root@kakaops ~]# ip route
路由表中的默认路由下一跳是本机网关10.11.67.1
default via 10.11.67.1 dev ens33 proto static metric 100
②、添加默认网关
[root@kakaops ~]# ip r a default via 10.11.67.2 dev ens33
[root@kakaops ~]# ip route add default via 10.11.67.2
路由表中没有的下一跳地址,会从默认网关出去(这个网卡最好写,防止多块网卡的情况)
③、删除默认网关
[root@kakaops ~]# ip r d default
自己添加添加的默认网关会被删除
④、添加静态路由
[root@kakaops ~]# ip r a 10.18.45.0/24(网段) via 10.18.44.1(本机网关) dev ens33
⑤、删除静态路由
[root@kakaops ~]# ip r d 10.18.45.0/24
4、网络相关配置文件
网卡配置文件
[root@kakaops ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
开启路由转发功能的主配置文件
永久开启
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p (检验是否成功)
也可以在子配置文件中配置,效果一样,好处是便于分类
在/etc/sysctl.d/目录下建一个以.conf为结尾的文件
[root@localhost ~]# vim /etc/sysctl.d/sunlizhen.conf
临时开启
[root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
此临时开启方法适合所有类似配置
5、LVS中用到的网络配置知识
开启路由转发模式:
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
sysctl -p → net.ipv4.ip_forward = 1
添加默认网关指向
ip route add default via 192.168.138.131
添加ip地址和删除ip地址
ip a a 192.168.138.139/24 dev ens33
ip a d 192.168.138.139/24 dev ens33
负载均衡器和RS都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS
DR添加一个子网掩码长的VIP(模拟公网ip)
RS需要在lo上绑定VIP,并且忽略arp广播,匹配精装ip地址灰包
ip addr add dev lo 172.16.147.200/32 //在lo接口上绑定VIP
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore //忽略arp广播
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 匹配精确ip地址回包
因为:realServer的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让realServer不接受响应.
解决:
echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo上,lo不是接收设备的进口)
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
使用最好的ip来回应,什么是最好的ip?同一个网段内子网掩码最长的