网络的功能和优点:
网络的特征:
- 速度
- 成本
- 安全性
- 可用性
- 可扩展性
- 可靠性
- 拓扑
开放系统互联OSI:
![]()
三种通讯模式:
unicast broadcast multicast
![]()
冲突域和广播域:
冲突域:两个网络设备同时发送数据,如果发生了冲突,则两个设备处于同一个冲突域,反之,则各自处于不
同的冲突域
广播域:一个网络设备发送广播,另一个设备收到了,则两个设备处于同一个广播域,反之,则各自处于不
同的广播域
三种通讯机制:
单工通信:只有一个方向的通信
半双工通信:通信双方都可以发送和接收信息,但不能同时发送,也不能同时接收
全双工通信:通信双方可以同时发送和同时接收
TCP/IP 分层:
![]()
![]()
三次握手:
![]()
四次挥手:
![]()
有限状态机 FSM:Finite State Machine
有限状态机FSM 注释
CLOSED 没有任何连接状态
LISTEN 侦听状态
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已改善关闭连接请求,挂靠对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被支关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认
客户机端的三次握手和四次挥手状态转换:
服务器端的三次握手和四次挥手状态转换:
![]()
tcpdump 抓包工具
udp包头:
![]()
internet层协议:
- IP协议
- ICMP协议
/proc/sys/net/ipv4/icmp_echo_ignore_all 关闭ICMP回应
- ARP协议
- RARP协议
基本网络配置:
将Linux主机接入到网络,需要配置网络相关设置。一般包括如下内容:
- 主机名(hostname)
- IP地址和子网掩码(IP/netmask)
- 路由(默认网关gateway)
- 主DNS服务器(dns)
- 次DNS服务器
centos 6 网卡名称:
- 以太网:eth[0-9]
- ppp:ppp[0-9]
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
ARP表
arp -n
查看网卡驱动:
dmesg |grep –i eth
ethtool -i eth0
卸载网卡驱动:
modprobe -r e1000
rmmod e1000
装载网卡驱动:
modprobe e1000
网络配置方式:
静态指定:
ifconfifig, route, netstat
ip: object {link, addr, route}, ss, tc
system-confifig-network-tui,setup
配置文件
动态分配:DHCP: Dynamic Host Confifiguration Protocol
ifconfig命令
#查看指定网卡状态
ifconfig [interface]
#查看所有网卡状态
ifconfig -a
#启用/禁用网卡
ifconfig IFACE [up|down]
ifdown eth1 (禁用网络)
ifup eth1 (启用网络)
#设置网卡IP
ifconfig IFACE IP/netmask [up]
route命令
查看路由表
route
route -n
添加路由表:route add
route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]
删除路由器:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
配置动态路由
通过守护进程获取动态路由
安装quagga包,通过命令vtysh配置
支持多种路由协议:RIP、OSPF和BGP
netstat命令:来自于net-tools包 建议用ss代替
显示网络累链接:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--
numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
常用选项:
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e:扩展格式
-p: 显示相关进程及PID
常用组合: -tan -uan -tnl -unl
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s eth0
ip命令 来自于iproute包,代替ifconfig
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip命令说明:
OBJECT := { link | addr | route }
ip link - network device configuration
set dev IFACE,可设置属性:up and down:激活或禁用指定接口,相当于 ifup/ifdown
show [dev IFACE] [up]::指定接口 ,up 仅显示处于激活状态的接口
ip地址管理:
ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global|link|host}]
[broadcast ADDRESS]
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域,global: 全局可用.link: 仅链接可用,host: 本机可
用
[broadcast ADDRESS]:指明广播地址
ip address show
ip addr flush
#禁用网卡
ip link set eth1 down
#网卡改名
ip link set eth1 name wangnet
#启用网卡
ip link set wangnet up
#网卡别名
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
管理路由 ip route用法:
#添加路由:
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
#添加网关:
ip route add default via GW dev IFACE
#删除路由:
ip route del TARGET
#显示路由:
ip route show|list
#清空路由表:
ip route flush [dev IFACE] [via PREFIX]
ss命令:ss [OPTION]... [FILTER]
来自于iproute包,代替netstat,netstat 通过遍历 /proc来获取 socket信息,ss 使用 netlink与内核
tcp_diag 模块通信获取 socket 信息
选项:
| -t |
tcp协议相关 |
| -u |
udp协议相关 |
| -w |
裸套接字相关 |
| -x |
unix sock相关 |
| -l |
listen状态的连接 |
| -a |
所有 |
| -n |
数字格式 |
| -p |
相关的程序及PID |
| -e |
扩展的信息 |
| -m |
内存用量 |
| -o |
计时器信息 |
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
常用选项组合:
-tan, -tanl, -tanlp, -uan
常见用法:
# 显示本地打开的所有端口
ss -l
# 显示每个进程具体打开的socket
ss -pl
# 显示所有tcp socket
ss -t -a
# 显示所有的UDP Socekt
ss -u -a
#显示所有已建立的ssh连接
ss -o state established '( dport = :ssh or sport = :ssh )'
#显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http )'
#列出当前socket详细信息
ss -s