1:web网络服务:访问互联网时如淘宝,电商后都有web服务器,传统公司apache,互联网公司一般用 web服务器
2:网络的特性
速度:带宽
成本
安全性
可用性:系统的正常运行时间 / 总时间(正常+异常)的百分比。cluster(集群)可实现高可用性
可扩展性:模块化
可靠性
拓扑:1总线拓扑(早期) 2环状拓扑 3 星型拓扑(主用) 4双环拓扑:外环坏了,内环备用,FDDI:光纤数字分布式接口,叫城市网络,5全网状拓扑:成本高
3:网络模型分层:由于网络比较复杂,分层降低复杂性
OSI:开放系统互联:网络国标:开放系统互连参考模型是一个为实现开放系统互连所建立的具有通信功能的分层模型,简称OSI参考模型。
ISO:国际标准化组织,ISO对网络下了一个标注定义就是OSI
IOS:苹果的操作系统
ATM:异步传输模式
BAT:A:阿里 B:腾讯 T:小米
AEEE:国际电子电器工程师协会(国际组织)
OSI七层模型:
1)物理层:主要作用是用来传输比特流以0 1 代表电压的高低,灯光的闪灭,这一层的数据就叫做比特。
2)数据链路层:1物理地址=MAT地址 2定义了如何让格式化数据进行传输,3以及如何让控制对物理介质进行访问,4这一层通常还会提供错误检测和纠正,以确保数据的可靠传输
3)网络层:数据传输 ,路由数据包,对位于不同地理位置的网络中的两个主机系统之间提供连接和最佳路径选择,
4)传输层:确保数据的可靠性,它的作用主要是将从下层接收到的数据进行分段和传输,到达目的地址后再将数据进行重组,通过错误检测和恢复
5)会话层:主机间通信通过传输层(端口号:传输端口与接收端口)建立数据传输的通路,主要是在系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
6)表示层:1确保接受系统可以读出该数据,2格式化数据,3协商用于应用层的数据传输语法,4提供加密
7)应用层: 是最靠近用户的OSI层,这一层作为用户的应用程序(例如电子邮件、文件传输和终端仿真)来提供网络服务。提供用户身份服务
4:PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
物理层的 PDU是数据位 bit
数据链路层的 PDU是数据帧 frame 最小数据位是46-1500
网络层的PDU是数据包 packet
传输层的 PDU是数据段 segment
其他更高层次的PDU是消息 message
5:三种通讯模式
单播:unicast 目标是一台机器
广播: broadcast 目标是所有人
多播/组播: multicast 目标是部分人
6:LAN:局域网:
1 Computers
PCs 普通电脑
Servers :服务器
2 Interconnections
NICs :网卡
Media :网线
3 Network devices
Hubs :集线器
Switches :交换机
Routers :路由器
4 Protocols :通信相关的网络协议
Ethernet
IP
ARP
DHCP
单工: 单向传输 电视机,电台
双工: 双向传输
半双工:对讲机
全双工:电话,视频,语音聊天
冲突域:冲突检测的载波侦听多路访问CSMA/CD(早期通讯方式)冲突 域不同 ,
广播域:WAN
7:UTP分为非屏蔽式双绞线(常用) 和 屏蔽式双绞线(价格高)外层加固
8:UTP直通线(Straight-Through):两边线序相同
9:UTP交叉线(Crossover):线序不同,一边是T568B 一边是T568A,
总结:同一类型的设备相连要用交叉线,不通设备相连用直连线,现在的网卡智能化后,不用做交 叉,电脑和交换机相连,交换机内部的接口已经做好交叉,企业路由器和交换机相连
10: 以太网工作在物理层和数据链路层,以太网定义了数据链路层的相关内容, 以太网平时用的网卡都有MAC地址,出厂的网卡都有MAC地址,
11:00:0c:29:94:7b:38 MAC地址:世界唯一的,16进制,目标和源是48位,前一半是国际组织分配的编号,后一半是厂家自己的编号,type:网络层协议的类型
12:Hub集线器:多端口中继器 ,带有广播的特性,没有任何安全性,同一时间只能一台电 脑发数据,效率低下,Hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在Hub的哪个 端口,简单说HUB相当于网线,工作在物理层
13:网桥工作原理:学习的时候是根据源地址,转发的时候是根据目标地址,
1 网桥是不能隔断广播的,能隔断冲突域,网桥只有两个接口,配合集线器来连,
2 交换机有多个接口,直接连主机就可以了,是全双工(FULL),可以同时发送信息
网桥交换机工作在数据链路层
14: hub:集线器 switch:交换机 router:路由器
15:主要是连接广域网
16:路由器:主要工作在网络层:只要和网络通讯都有路由表,记录的不是MAK地址,记录的是IP地址,把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成
17:网卡主要工作在数据链路层
18:VLAN:虚拟局域网
• 分隔广播域
• 安全
• 灵活管理
19:TCP/IP协议 cat /etcservices 对应的协议区分标记:端口号是在传输层中
工作在传输层
(特性)1面向连接协议(在通讯的时候确 保网络状态的稳定才会发送包)
2全双工协议
3半关闭
4错误检查
5将数据打包成段,排序
6确认机制,(可靠的协议)
7数据恢复,重传(断电续传)
8流量控制,滑动窗口
9拥塞控制,慢启动和拥塞避免法
10传输层中有
TCP(可靠的,面向连接的,有包的编号,有纠错能力哪个包出错了可重新发送)
UDP(不面向连接,不可靠,没有包的标记,带来的结果是有的包可能是错误的)
1工作在传输层
2提供不可靠的网络访问
3非面向连接协议
4有限的错误检查
5传输性能高
6无数据恢复特性
(2)网络协议和端口号:cat /etc/services
http (web协议) 80
https(加密的web协议) 443
ftp(文件传输协议) 21
dns (域名解析协议)53
tftp(小文件传输协议) 69
smtp(邮件传输协议) 25
pop3(邮箱有关协议) 110
imap (从服务器上下载邮件用)143
telnet 23
ssh(远程连接协议) 22 端口号总数是65536个
(3) IANA:互联网数字分配机构(负责域名,数字资源,协议分配)
0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固系统应用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-49151:用户端口或注册端口,但要求并不严格,分配给程序注册为某应用用,
1433/tcp(SqlServer),1521/tcp(oracle),
3306/tcp(mysql),11211/tcp/udp (memcached)
49152-65535:动态端口或私有端口,客户端程序随机使用的端口
客户端访问的随机号的范围:/proc/sys/net/ipv4/ip_local_port_range
( 4)(TCP包头)
(5)我们在着重讲一下在三次握手和四次挥手中的用到序列号、确认号及标志位。
1. 序列号seq
占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序 号,第一个字节的编号由本地随机产生,给字节编上序号后,就给每一个报文段指派一个序号,序列号seq就是这个报文段中的第一个字节的数据编号。
2. 确认号ack
占4个字节,期待收到对方下一个报文段的第一个数据字节的序号,序列号表示报文段携带数据的第一个字节的编号,而确认号指的是期望接受到下一个字节的编号,因此挡墙报文段最后一个字节的编号+1即是确认号。
3. 确认ACK
占1个比特位,仅当ACK=1,确认号字段才有效。ACK=0,确认号无效。
4. 同步SYN
连接建立时用于同步序号。当SYN=1,ACK=0表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使用SYN=1,ACK=1.因此,SYN=1表示这是一个连接请求,或连接接收报文,SYN这个标志位只有在TCP建立连接才会被置为1,握手完成后SYN标志位被置为0.
5. 终止FIN
用来释放一个
( 6)三次握手的过程
通过抓包,查看三次握手,先走TCP协议,后面的都是ssh协
step1:第一次握手
建立连接时,客户端发送SYN包到服务器,其中包含客户端的初始序号seq=x,并进入SYN_SENT状态,等待服务器确认。(其中,SYN=1,ACK=0,表示这是一个TCP连接请求数据报文;序号seq=x,表明传输数据时的第一个数据字节的序号是x)。
step2:第二次握手
服务器收到请求后,必须确认客户的数据包。同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。(其中确认报文段中,标识位SYN=1,ACK=1,表示这是一个TCP连接响应数据报文,并含服务端的初始序号seq(服务器)=y,以及服务器对客户端初始序号的确认号ack(服务器)=seq(客户端)+1=x+1)。
step3:第三次握手
客户端收到服务器的SYN+ACK包,向服务器发送一个序列号(seq=x+1),确认号为ack(客户端)=y+1,此包发送完毕,客户端和服务器进入ESTAB_LISHED(TCP连接成功)状态,完成三次握手。
( 7)四次挥手的过程
step1:第一次挥手
首先,客户端发送一个FIN,用来关闭客户端到服务器的数据传送,然后等待服务器的确认。其中终止标志位FIN=1,序列号seq=u。
step2:第二次挥手
服务器收到这个FIN,它发送一个ACK,确认ack为收到的序号加一。
step3:第三次挥手
关闭服务器到客户端的连接,发送一个FIN给客户端。
step4:第四次挥手
客户端收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加一。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
( 8)常见面试题:
1.为什么需要三次握手,两次不可以吗?或者四次、五次可以吗?
我们来分析一种特殊情况,假设客户端请求建立连接,发给服务器SYN包等待服务器认,服务器收到确认后,如果是两次握手,假设服务器给客户端在第二次握手时发送数据,数据从服务器发出,服务器认为连接已经建立,但在发送数据的过程中数据丢失,客户端认为连接没有建立,会进行重传。假设每次发送的数据一直在丢失,客户端一直SYN,服务器就会产生多个无效连接,占用资源,这个时候服务器可能会挂掉。这个现象就是我们听过的“SYN的洪水攻击”。
总结:第三次握手是为了防止:如果客户端迟迟没有收到服务器返回确认报文,这时会放弃连接,重新启动一条连接请求,但问题是:服务器不知道客户端没有收到,所以他会收到两个连接,浪费连接开销。如果每次都是这样,就会浪费多个连接开销。
(9): ss -ntl:查看该机器上有哪些软件监听远程访问的网站,
20: ping命令 调大判断网络的稳定性,默认每次只发一个包ping -s 指定包的大小,每次发多少包 -f ping 192.168.30.128 -c 10 (ping10次)
21: ARP: 在网络层 工作机制,信任机制 基于广播 通讯过一次就会在主机上生成缓存表
(1): 如果在同一个网段工作原理是A,B主机进行通讯 ,A基于发arp广播,可能会找到一台假冒的ip地址和MAK地址, arp得到的MAK地址就是假的
(2) :如果不在同一个网段,A主机会就发arp广播 ,把数据发送到网管,(也就是和路由器相邻的接口),同时会学习网管的MAK地址,路由的另一个接口则会通过发arp广播就行寻找C主机,则进行通讯
- (3):此图为夸路由的情况下,
arp帮助我们得到对方的
地址,进行arp通讯后才
能进行三次握手,四次挥手。
22:RARP:知道MAC地址,想要寻求一个IP地址,通过DHCP服务器,获取到一个固定的ip
23:面试题:打开浏览器访问一个网站背后的详细的工作步骤
1:包与包之间的传递(22个幻灯片)一部分步骤
2:大体步骤总结:和对方进行通讯,
1)首先要知道对方的IP
2)通过arp广播获取到对方mak地址
3)三次握手
4)数据传输
24;Internet 协议特征
运行于 OSI 网络层
面向无连接的协议
独立处理数据包
分层编址
尽力而为传输
无数据恢复功能
-IPv6地址 16进制
-ipv9 ,10进制 ,中国发明的
和对方通讯需要认证,比较安全
二:IP地址
它们可唯一标识 IP 网络中的每台设备
每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成:
• 网络ID::表示在哪个网段
• 标识网络
• 每个网段分配一个网络ID
• 主机 ID: :表示在哪个网段的那台主机
• 标识单个主机
• 由组织分配给各设备
特殊地址
1: IP地址分类
A类地址: 前8位网络ID,后24位主机ID 1-126
0xxxxxxx(网络ID).主机ID.主机ID.主机ID
00000001.主机ID.主机ID.主机ID 主机ID不能为0
11111111.00000000.00000000.00000000 255.0.0.0 子网掩码
01111111.主机ID.主机ID.主机ID 即127.主机ID.主机ID.主机ID
127.x.x.x 给回环地址用
0.0.0.0 表示所有地址
10.0.0.0网段号不能用
假如:10.255.255.255 10.0.0.0 广播 不能用
网络数 2^7-2=126个
一个A类网络的主机数量: 2^24-2=16777214
最小网络ID:1.0.0.0
最大网络ID:126.0.0.0
B类地址, 前16位网络ID,后16位主机ID 128-191
10xxxxxx.xxxxxxxx.主机ID.主机ID
11111111.11111111.00000000.00000000 255.255.0.0
网络数:2^14=16384
一个B类网络的主机数:2^16-2=65534
最小网络ID:10000000 128
最大网络ID:10111111 191
C类地址,前24位网络ID,后8位主机ID 192-223
110xxxxx.xxxxxxxx.xxxxxxxx.主机ID
11111111 11111111 11111111 00000000
网络数:2^21=2097152
一个C类网络的主机数:2^8-2=254
最小网络ID:11000000 192
最大网络ID:11011111 223
D类地址 224-239
用于多播
1110xxxx.主机ID.主机ID.主机ID
11100000 224
11101111 239
E类地址
保留地址,用于实验室
11110xxx.主机ID.主机ID.主机ID
240-254
192.168.0.0/255.255.0.0
192.168.255.255/255.255.0.0 192.168.0.1 - 192.168.255.254
2:子网掩码
A:10.0.0.0/8 255.0.0.0
B:172.16.0.0/16 255.255.0.0
C:192.168.1.0/24 255.255.255.0
3: 公式:
1)网络(网段)数量=2^可变网络ID位数
2)一个网络的主机数量=2^主机ID位数-2=2^(32-网络ID位数)-2
3)网络ID=IP与子网掩码netmask
4) 划分子网数=划分成2^N个(网络ID位向主机ID位借N位)netid
5) 划分子网:一个大网络(主机多=主机ID位数多,网络ID位数少)划分成多个小网络(主机少=主机ID位数少,网络ID位数多),网络ID位向主机ID位借N位,划分成2^N个小网
6)合并超网:多个小网合并成一个大网,主机ID位向网络ID位借位
00000000 0
00000001 1
00000010 2
00000100 4
00001000 8
00010000 16
00100000 32
01000000 64
10000000 128
11000000 192
10101110 128+32+8+4+2=174
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255
4:两台主机如果在同一个网段里,那就是网络ID相同 结果,不在同一个网络
5: 练习(1):(判断两个主机有没在同一个网段)
1- 172.20.222.123/20 网络id;172.20.222.123
2 -172.20.230.100/20 网络id;172.20.240.123
1- 172.20.222.123/20
网络ID1-: 172.20.11011110(222的二进制).0
子网掩码1:255.255.:11110000.0 通过网络ID1和子网掩码比对“与”
172.20.11010000(转化为十进制208).0
子网掩码2:255.255.:240.0
2 -172.20.230.100/20
网络ID1-: 172.20.11100000.0(230的二进制).0
子网掩码1:255.255.:11110000.0 通过网络ID1和子网掩码比对“与”
172.20.11100000.0(转化为十进制224).0
子网掩码2:255.255.:240.0
练习(2):(判断两个主机有没在同一个网段)
201.133.199.100/24
201.130.188.100/24 是否在一个网络? 不在
201.133.199.100/20
11000111
11110000
201.133.188.100/20 是否在一个网络? 不在
10111100
11110000
201.133.199.100/24 A
201.133.188.100/16 B
A 先判断是否和B在一个网络
如果在一个网络,则ARP,如果不在一个网络,ARP查网关的MAC, 封包
目的mac:网关mac 来源mac:A mac |目的ip:B IP 来源ip: A IP
route
目的mac: B mac, 来源mac: 网关mac | 目的IP:B IP 来源IP: A IP
练习(2):(判断两个主机有没在同一个网段)
A 192.168.1.100/16
B 192.168.2.100/24
A 访问 B 同一网段
1) 192.168.0.0
2) 192.168.2.100与16 = 192.168.0.0 用A自己的子码掩码进行与
B 访问 A 不通网段
1) 192.168.2.100与24 = 192.168.2.0
2) 192.168.1.100与24 = 192.168.1.0 用B自己的子码掩码进行与
练习(3) 1 192.168.199.111/21
1)网络ID:192.168.192.0
192.168.199.111
255.255.248.0 子网掩码
192.168.11000111(十进制199).111
255.255.11111000(十进制248).0
192.168.192(二进制11000000).0
2)netmask:255.255.248.0
3)主机数:2^11(就是32-21)-2=2046
4)min ip,max ip 最小ip 最大ip 网络数不能改变
192.168.11000 000.00000001 192.168.192.1/21
192.168.11000 111.11111110 192.168.199.254/21
练习(4) 222.111.188.123
netmask:255.255.255.192(11000000)
1) 网络ID:222.111.188.64
222.111.188.01xxxxxx
255.255.255.11000000
222.111.188.64
2)CIDR:222.111.188.123/26
3) 主机数:2^(32-26)-2=62
4)Min IP,222.111.188.65 Max IP:222.111.188 126
222.111.188.01 000001 222.111.188.65
222.111.188.01 111110 222.111.188 126
练习(5) 划分子网:一个大网络(主机多=主机ID位多,网络ID位少),划分成多个小网 络(主机少=主机ID位少,网络ID位数多),网络ID位向主机ID位借N位,划分成2^N个小网
10.0.0.0/8 分成2个小网:10.0.0.0/9 10.128.0.0/9
10.00 000000.0.0 10.0.0.0/10 借向主机ID借两位
10.01 10.64.0.0/10
10.10 10.128.0.0/10
10.11 10.192.0.0/10
10.0 0000000.0.1 借向主机ID借一位
10.0.0.0/9
10.0 0000000.0.1 min:10.0.0.1
10.0 1111111.255.254 max:10.127.255.254 10.127.255.255
10.1 1111111.255.254
10.1 0000000.0.0/9
10.1 0000000.0.1 min:10.128.0.1 10.128.0.0
10.1 1111111.255.254 max:10.255.255.254
练习(6) 10.0.0.0/8 划分32个子网给32个省公司使用
公式) 划分子网数=划分成2^N个(网络ID位向主机ID位借N位)
1)新的子网netmask:255.248.0.0
32=2^N
N=5 所以就是向主机ID借5位
新子网网络ID位:8+5=13
255.11111000.0.0
255.248.0.0
2) 新的子网:min netid,max netid
10.00000 000.0.0 10.0.0.0/13 min netid
10.11111 000.0.0 10.248.0.0/13 max netid
3) 新的子网存放最多的主机数是多少?
主机ID=32-13=19
2^19-2=52万
4)max netid IP:min ip ,max ip ?
10.11111 000.0.1 minip:10.248.0.1
10.11111 111.255.254 maxip:10.255.255.254
练习(7) 河南省10.248.0.0/13,划分17个子网给17个地市使用
1)新的子网netmask:255.255.11000000.0 255.255.192.0
新子网网数位数:
2^N>=17,N=5 借5位
13+5=18位
2) 新的子网:min netid,max netid
10.11111000.00000000.0 10.248.0.0/13
10.11111 000.00000000.0 10.248.0.0/18 1 第一个网
10.11111 100.00000000.0 10.252.0.0/18 17 第十七个小网
10.11111 111.11 000000.0 10.255.192.0/18
3) 新的子网存放最多的主机数是多少?
主机ID位=32-18=14
2^14-2=16000
4)max netid IP:min ip ,max ip ?
10.252.0.0/18
10.11111 100.00 000000.1 minip:10.252.0.1
10.11111 100.00 111111.11111110 maxip:10.252.63.254
练习(8) 如果按照A,B,C,总共多个网段?
A:
0xxxxxxx.X.X.X
2^7=128
1-126 0和127排除
B:
10xxxxxx.xxxxxxxx.X.X
2^14=16*1024=
C:
110xxxxx.xxxxxxxxx.xxxxxxxxx.X
2^21=
练习(9)把多个小网合并成一个大网(有共同点才能合并)
10.0.0.0/8 00001010
172.20.0.0/16 1010 次地址不能合并
220.78.10101 000(网络ID)(168).0/18
220.78.10101 001(169).0/18
.....
220.78.10101 111(175).0/18
220.78.10101 000.0 (新网络的网络ID) 220.78.168.0/21 借三位供 21
A:192.168.000000 01.0/24 合并网络A,B
B:192.168.000000 10.0/24
192.168.0.0/22 新的网络
192.168.000000 11.0/24
192.168.000000 00.0/24
把下图中的172.16.14.132/30 三个小网划分为一个大网
172.16.14.136/30
172.16.14.140/30
172.16.14.1000 01 00
172.16.14.1000 10 00
172.16.14.1000 11 00
172.16.14.10000000/28
172.16.14.128/28新的大网
6:lo 在回环地址上增加一个新的地址
ip addr add 1.1.1.1/8 、dev/ lo 用IP a查看
ip addr add 2.2.2.2/16 dev/lo
三:路由
跨网络通信:路由 :路由表现为路由记录
1:路由分类:
主机路由:到达网络中的某一台电脑,某一个地址,这个路径怎么走,用的不太多
网络路由:到达某个网段的路径,用的比较多
默认路由:0.0.0.0 到达互联网,如果其他的两个路由不匹配了,那就选择默认路由走
优先级:精度越高,优先级越高
2:路由表构成:没有路由表就会和网络中的其他主机通讯失败
1目标(Destination): 数据包发送的目标路径 (三种路由分类)192.168.0.0
2netmask(Genmask):24 16
3interface(接口):本路由器的出口,从哪个接口出去才能到达发送数据的地址
4gateway(网关):
1)直连(主机和路由器直连):不需要配置
2)非直连(中间隔着一些路由):下一个路由器邻近本路由器的接口地址
3:路由器关心目标地址,不关系源地址,它只根据目标地址层层转发,不关心接收
A和B通讯的过程
A---1 R1 2 ---3 R2 4--- 5 R3 6 --- B
通过浏览器firefox 访问http:///B 底层的通讯过程(前期)
1): A先判断B和A是否在同一个网段 (通过A 用自己的IP地址和自己的子网掩码与得到有个结果,再用B的ip地址和自己的子网掩码与得出另一个结果,做比较,如果不在同一个网段,A只能把数据包发往R1的路由器的网关)
2) :A gateway:R1 IP1 ( A的主机上提前配好了默认网关IP1)
ARP IP1 ---> MAC1(通过ARP广播把IP1的地址解析成 MAC1)
APR cache(ARP的缓存表) : IP1--MAC1
数据报文 R1上收到收据包
frame:(帧) dest mac(目标mac):mac1 src mac(源mak):macA
ip: dest ip(目标IP):IPB src ip: IPA
tcp: dest port(目标端口):80 src port:xxxxx,syn(随机生成的端口)
3): R1 查路由表
net B(B主机所在的网络) 2(接口) IP3(网关)
ARP IP3 ---> mac3 (通过ARP广播把IP3的地址解析成 MAC31)
frame:(帧) dest mac(目标mac):mac3 src mac(源mak):mac2
ip: dest ip(目标IP):IPB src ip: IPA
tcp: dest port(目标端口):80 src port:xxxxx,syn(随机生成的端口)
4 ):R2 查路由表
net B 4 (接口) IP5(网关)
ARP IP5 ---> mac5
frame:(帧) dest mac(目标mac):mac5 src mac(源mak):mac4
ip: dest ip(目标IP):IPB src ip: IPA
tcp: dest port(目标端口):80 src port:xxxxx,syn(随机生成的端口)
5) :R3 查路由表
netB 6(接口) 没有下一个路由器了,不用配网关
ARP IPB ---> macB
frame:(帧) dest mac(目标mac):macB src mac(源mak):mac6
ip: dest ip(目标IP):IPB src ip: IPA
tcp: dest port(目标端口):80 src port:xxxxx,syn(随机生成的端口)
4:route命令 (每个网卡接口配上IP地址后,相邻网段的路由记录会自动生成)
路由管理命令
查看:route -n
添加:route add 临时添加的
添加:即使生效
/etc/sysconfig/network-scripts(新建后面的文件)/route-IFACE
• 注意:需service network restart生效
• 两种风格:
vim /etc/sysconfig/network-scripts /route-eth0(指定网卡名)
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
route add [-net(网络路由)|-host(仅主机路由)] target [netmask Nm] [gw(网关地址) Gw] [[dev(接口)] If] 网关地址要和自己的IP地址在同一个网段
目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1
删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3
目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
测试两台机器centos7 ens37:192.168.1.100/24
IP修改成:ifconfig ens37 192.168.1.100/24 自动跟新网络路由
ping :192.168.1.100 (显示网络无法到达,因为没有路径)
route add default ens37
ping :192.168.1.100 (能ping通了)因为ens37和 centos6这两个 主机物理上是在同一个网段
centos6 eth1:192.168.2.100/24
IP修改成:ifconfig ens37 192.168.2.100/24 自动跟新网络路由
route add default eth1
总结:一个物理网段上配不同的IP地址,想通的话以前都是加路由,现在是加路由表就可以通了
5:配置动态路由
通过守护进程获取动态路由
• 安装quagga包
• 支持多种路由协议:RIP(判断路由器的数量,选择最少的路径走)、OSPF(综合考虑,带宽比较快的)和BGP
• 命令vtysh配置
6:关闭防火墙
7:查看通讯过程中经过了多少路由,traceroute/mtr/tracepath +需要到达的ip地址 /也可看ttl
8:路由实验 ,两个路由
A--vmnet10(10网段)--eth0 R1 eth1 --vmnet11(11网段)--eth0 R2 eth1 --vmnet12(12网段)-B
A:192.168.1.100/24 gateway:192.168.1.1
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
R1:
eth0: 192.168.1.1/24
eth1: 172.16.0.1/16
echo 1 > /proc/sys/net/ipv4/ip_forward
R2:
eth0:172.16.0.2/16
eth1:10.0.0.1/8
echo 1 > /proc/sys/net/ipv4/ip_forward
B:10.0.0.100/8 gateway:10.0.0.1
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=10.0.0.100
PREFIX=8
GATEWAY=10.0.0.1
9:路由实验 ,A和B进行通讯经过 三个路由
A--net1(代表网络地址)--1 R1 2--net2C--3 R2 4--net3D--5 R3 6--net4--B
R1(R1收到数据包,只负责把数据包发送至R2,所以就应该配 到R2的路由表)
net1和net2c是R1直连,所以不用加路由,默认有
route add -net net4/N4(子网掩码) gw ip3 只加此条
route add -net net3/N3(子网掩码) gw ip3 不加
或者route add default gw ip3(网络的边缘可以这样写)
R2 (路由表)
route add -net net1/N1 gw ip2
route add -net net4/N4 gw ip5
R3 (路由表)
route add -net net1/N1 gw ip4
route add -net net2/N2 gw ip4
或者route add default gw ip4 (网络的边缘可以这样写)
四:基本网络配置
将Linux主机接入到网络,需要配置网络相关设置。
一般包括如下内容:
1: 主机名 hostname查看 linux中没有网络通讯功能(ping+主机名)ping不通
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
2:centos6:修改网卡名称
以太网:eth[0,1,2,...]
网卡识别并命名相关的udev配置文件:
vim /etc/udev/rules.d/70-persistent-net.rules
查看网卡:网卡驱动模块
dmesg |grep -i eth
ethtool -i eth0
lsmod |grep e1000
卸载网卡驱动:
modprobe -r e1000
rmmod e1000
装载网卡驱动:
modprobe e1000 网卡名就会生效
3:静态指定:
ifconfig, route, netstat 老命令
ip: object {link, addr, route}, ss, tc 新命令
system-config-network-tui,setup 图形化界面设置
配置文件
4:动态分配:
DHCP:
5:可以让指定网卡自动获取一个并且手工指定一个,同一网卡上配置多个IP
6: 配ip地址
IPADDR=x.x.x.x
NETMASK=255.x.x.x
GATEWAY=x.x.x.x
DNS1=x.x.x.x
DNS2:第二个DNS服务器指向
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
三台主机
pc1:1.1.1.1/24
pc2:2.2.2.2/24
route: 1.1.1.254/24 2.2.2.254/24
三台主机上修改网卡名,网卡地址
ifdown eth2
ifup eth2
pc1:
route add -host 2.2.2.2 gw 1.1.1.254
pc2:
route add -host 1.1.1.1 gw 2.2.2.254
route:
开启IP转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
iptables -F
r1: route add -net 3.3.3.0/24 gw 2.2.2.253
r2: route add -net 1.1.1.0/24 gw 2.2.2.254
pc1:route add default gw 1.1.1.254
pc2:route add default gw 3.3.3.253
ifconfig 命令
[eth0|eth1]
-a 显示所有的网卡信息,包含非激活状态的网卡
eth0 down 禁用指定网卡= ifdown eth0(有配置文件才能执行)
eth0 up 启用指定网卡 = ifdown eth1(有配置文件才能执行)
ip link 查看网卡当前的状态:down或者up
ifconfig eth1 1.1.1.1/24 :临时修改IP地址可以测试临时地址用的,如果禁用掉网卡,在启用 网卡,地址就没有了
7:.修改网卡的配置
MAK地址的修改:在配置文件中把HWADDR=.......改为MACADDR,,,,,,为假的MAK
路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
/etc/sysconfig/network-scripts/ifcfg-IFACE:
说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受
NM控制;建议CentOS6为“no”
8: 配置静态ip和多网卡绑定
1通过自动获取(dhcp)的方式来进行网络连
2用(static)的方式来配置一个固定的ip
IP、MASK、GW、DNS相关配置文件:
一:终端中输入vim /etc/sysconfig/networkscripts/ifcfg-eth0
二:进行编辑并保存退出
dns:域名解析:可以设置多个
dns:查看dns有没有生效 cat /etc/tesolv.conf
三:重启网络服务:service network restart(centos7)
四:ping网关进行测试
一:先增加两个网卡,如:eth2/3 把centos6里面的eth2和eth3绑定成虚拟网卡bond0如下:
三:创建虚拟网卡band0的配置文件ifcfg-bond0:vim/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes 开机自动启动
NM_CONTROLLED=yes
BOOTPROTO=static
BONDING_OPTS="miimon=100 mode=1"
mode=1表示主备模式,也就是只有一块网卡是active的,只提供失效保护。miimon=100表 示每100ms检查一次链路连接状态,如果不通则会切换物理网卡miimon是毫秒数,miimon是毫秒数,每100毫 秒触发检测线路稳定性的事件。mode 是ifenslave的工作状态。
IPADDR=1.1.1.1 要绑定到的地址
NETMASK=255.255.255.0
三:然后分别对eth2和eth3的配置文件并保存
vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
HWADDR=00:50:56:3d:28:04
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
vim /etc/sysconfig/network-scripts/ifcfg-eth3
EVICE=eth3
HWADDR=00:50:56:37:2b:03
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
四:重启网络服务:service network restart
注意:如果出现报错,则关闭 service NetworkManager stop 服务
五:查看bond状态
查看bond信息
cat /proc/net/bonding/bond0
查看bond模式
cat /sys/class/net/bond0/bonding/mode
六:ping进行测试
将centos7的网卡名更改为原始命名方式
基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpX Y:slot ,X:port
(2) 名称组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
1.修改/boot/grub2/grub.cfg
可直接在linux16 行的最后加上net.ifnames=0
也可以先修改/etc/default/grub,在rhgb quiet后面加上 net.ifnames=0
然后再用grub2-mkconfig -o /boot/grub2/grub.cfg来重新生成带net.ifnames=0配置的新grub.cfg文件
2.改配置文件,先改配置文件,再改文件当中的DEVICE=
如mv ifcfg-ens33 ifcfg-eth0
vim ifcfg-eth0
DEVICE=eth0
3.reboot
nmcli
bash-completion 包决定了可以在centos7中补齐选项、参数
启用或禁用某网卡接口
nmcli device disconnect eth0 等同于 ifdown eth0
nmcli device connect eth0 等同于 ifup eth0
启用或禁用某网卡上的ip地址
ip link set down eth2 等同 ifconfig eth2 down
ip link set up eth2 等同 ifconfig eth2 up
增加connection.id
nmcli connection add type ethernet con-name eth2-magedu ifname eth2
更改connection.id
nmcli connection modify ens38 connection.id eth2-redhat
更改connection配置
nmcli connection modify eth0-office ipv4.method manual ipv4.addresses 1.1.1.1/24 ipv4.gateway 1.1.1.254 ipv4.dns 8.8.8.8
切换connection配置
nmcli connection up eth0-office
nmcli connection up eth0-home
查看connection配置
nmcli connection show eth0-office
增加ipv4.address
nmcli connection modify eth0-office +ipv4.addresses 3.3.3.3/24
减少ipv4.address
nmcli connection modify eth0-office -ipv4.addresses 3.3.3.3/24
修改ipv4.address
nmcli connection modify eth0-office ipv4.addresses 9.9.9.9/24
修改后生效
nmcli connection up eth0-office
如果直接修改配置文件,要使用reload才能生效
nmcli connection reload
删除配置文件
nmcli connection delete eth0-a1
使用nmcli配置bonding
1.增加bond配置文件
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup
2.将物理网卡作为slave加入bond
nmcli connection add type bond-slave ifname eth2 con-name bond-slave-eth2 master bond0
nmcli connection add type bond-slave ifname eth3 con-name bond-slave-eth3 master bond0
3.给bond0设置ip,并启用
nmcli connection modify bond0 ipv4.method manual ipv4.addresses 1.1.1.1/24
nmcli connection up
使用nmcli配置team
1.增加team配置文件
nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "loadbalance"}}'
2.将物理网卡作为slave加入team
nmcli connection add type team-slave con-name team0-slave-eth2 ifname eth2 master team0
nmcli connection add type team-slave con-name team0-slave-eth3 ifname eth3 master team0
3.给team0设置ip,并启用
nmcli connection modify team0 ipv4.method manual ipv4.addresses 1.1.1.1/24
如要修改team模式
nmcli connection modify team0 team.config '{"runner": {"name": "activebackup"}}'
查看team状态
teamdctl team0 state
使用nmcli配置bridge
nmcli connection add type bridge con-name br0 ifname br0
nmcli connection add type bridge-slave con-name br0-eth4 ifname eth4 master br0
nmcli connection modify br0 ipv4.method manual ipv4.addresses 2.2.2.2/24
nmcli connection up br0
7:配置当前主机的主机名hostname 127.0.0.1
系统启动慢,一般要是改了主机名,一定要改hosts文件在etc/hosts文件下加新的主机名和IP地址
centos5/6
当前生效: hostname(后面跟新的名字) rhel5.magedu.com 重启生生效:
1:vim /etc/sysconfig/network
HOSTNAME=rhel5.magedu.com(新的名字)改完后不会立即生效
2: hostname(后面跟新的名字) rhel5.magedu.com
3:exit(重新登录后提示符就会变)
centos7
cd /etc/sysconfig/network
hostnamectl status:查看当前主机信息
cat /etc/hostname:查看有没生效
当前生效: hostname rhel7.magedu.com
重启生效 hostnamectl set-hostname instructor.magedu.com
cat vim /etc/sysconfig/network(也可以存网关)重启后生效
8:网卡别名
对虚拟主机有用
将多个IP地址绑定到一个NIC上
eth0:1 、eth0:2、eth0:3
ifconfig命令: 适合于临时做实验
ifconfig eth0:0 192.168.1.100/24 up 启用
ifconfig eth0:0 down 删掉
ip命令:
ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0(加上label 对于ifconfig管用)
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
如果想永久生效
tcpdomp icmp -nn(抓包工具)
9:dns名字解析
dns:域名解析:可以设置多个
1 dns:查看dns有没有生效 cat /etc/tesolv.conf
2/etc/.conf
/etc/hosts:把名字翻译成ip地址,做名字解析:通常用dns,也可以在vim/etc/hosts下完成 比如:192.168.31.6 www.baidu.com 也可能存在钓鱼网站, 与/etc/hosts相比优先于DNS
vim /etc/nsswith.conf :调整dns和hosts的优先级
向解析:FQDN-->IP
dig -t A FQDN
host -t A FQDN
4 反向解析:IP-->FQDN
dig -x IP
host -t PTR IP
5:vim /etc/hosts文件:在文件中
10:显示网络连接状态:
netstat 打印网络接听状态接口等信息
netstat
numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口;
-e:扩展格式
-p: 显示相关进程及PID
netstat -tuanp ***tcp和udp 服务和进程都可
netstat -tan ***显示tcp的所有的连接,无论是监听的还是正在连接的,直接显示IP,不用域名,
netstat -uan ***显示udp的所有的连接,无论是监听的还是正在连接的,直接显示IP,不用域名,
netstat -rn 等同于 route -n
netstat -i 显示所有网卡收发包的信息 查看网卡的状态
RX表示收到的包
netstat -L=ens33 显示指定网卡收发包的信息 等同于 ifconfig -s ens33
查看路由表:netstat -r=route -n=ip route
ss 显示网络连接状态,查看服务启动没启动,监听端口.若端口开启,服务就是启动状态
1 netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。
2 选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
ss -tan
ss -uan
ss -tuan
ss -tuanp
3 TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
4 EXPRESSION:
dport =
sport =
示例:’( dport = :ssh or sport = :ssh )’
5 常用组合:
-tan, -tanl, -tanlp, -ua
6:常见用法
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的
ssh连接
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的 HTTP连接
ss -s 列出当前socket详细信息
IP
可以进行IP地址的查询,修改,网卡的禁用,网卡的激活,增加路由表,增加虚拟ip地址 yum -y install
配置Linux网络属性:ip命令
ip - show / manipulate routing, devices, policy routing and tunnels
OBJECT := { link | addr | route }
ip link - network device configuration 网卡设置,查看网卡信息
ip link set down eth2 等同 ifconfig eth2 down 设置网卡设备
ip link set up eth2 等同 ifconfig eth2 up
up and down:激活或禁用指定接口
ifup/ifdown
ip l show up 查看已经激活的网卡信息
ip a 产看ip地址
ip ilnk set ens33 down
show [dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
[broadcast ADDRESS]:指明广播地址
ip address show - look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ip address flush - 使用格式同show
ip addr add 172.16.100.100/16 dev eth0 label eth0:0增加一个地址
ip addr del 172.16.100.100/16 dev eth0 label eth0:0 删除单个地址
ip addr flush dev eth0 label eth0:0 删除eth0的所有地址,
添加路由:ip route add
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
添加网关:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
删除路由:ip route delete
显示路由:ip route
清空路由表:ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
把网卡的工作模式由dhcp改为static
ifdown eth2 ; ifup eth2
网卡动态改为静态
ip link 设置网卡设备
set DEVICE up/down
ip link show +网卡名 查看某块网卡的信息
ip a[ddr] s[how]
a[ddr] a[dd] 1.1.1.1/24 dev eth2 [label eth2:hello]
a[ddr] d[el] 1.1.1.1/24 dev eth2
a[ddr] f[lush] dev eth2 删除指定网卡的所有地址
ip route add 10.10.10.10 via 172.18.0.1
ip route add 192.168.0.0/24 via 172.18.0.1
ip route add default via 172.18.0.1
ip r f dev eth2 清空关于eth2上的所有路由信息