最近在看游双老师的《linux高性能服务器编程》,现将自己之后会用到的知识点进行总结。
现在的网络体系分为物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
各层中常见协议如下:
数据链路层:ARP地址解析协议,RARP反向地址解析协议。
网络层:IP协议,ICMP协议。其中ICMP使用了IP协议提供的服务。
传输层:TCP(传输控制)协议,UDP(用户数据包)协议,SCTP(流控制传输)协议。
应用层:ping(测试网络),telnet(远程登录),DNS(域名解析),OSPF(动态更新路由)。
各层之间的数据封装,即各层协议将接收到的上层数据加上本层协议的头部信息,然后传送到下一层。
常用命令:
arp -a[all] -s[set]
arp -a显示arp缓存中的全部内容。
arp -s ip mac 将该映射添加到arp缓存中。
host -a[all] //host为linux中的DNS客户端程。
host -a ip对DNS服务器发起一次服务。
tcpdump
-i[interface] 指定要监听的网口。
-n[number] 指定ip和port使用数字计法。
-s 设置数据包的大小。
-v 显示一个详细的信息。
-t 不打印时间戳。
-e 显示以太网帧头部信息。
-c 指定数据包的数量。
-x 显示数据包中信息,不包括以太网帧头部。
-X 与-x类似,不过打印出对应的ASCII码。
-XX 与-X类似,不过包括以太网帧头部。
-w 写入到某文件。
-r 从某文件读取。
除此以外,tcpdump还支持表达式:
type:host(主机),net(网络地址),port(端口号),portrange(端口范围)
dir:src(源地址),dst(目的地址)
proto:ip,tcp,udp,icmp
还可以用and(&&),or(||),not(!)进行连接,使用括号前,用进行转义,或者用单引号。