網絡的功能和優點:
- 數據和應用程序
- 資源
- 網絡存儲
- 備份設備
網絡的特徵:
- 速度
- 成本
- 安全性
- 可用性
- 可擴展性
- 可靠性
- 拓撲
開放系統互聯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