计算机网络知识补习
协议
Ethernet_II 帧
14个字节
dst MAC + src Mac + Type = 6 + 6 + 2 = 14Bytes
在数据链路层还会在报文结尾添加FCS(帧校验序列),但是Wireshark里并不会把他显示出来
ARP和RARP协议
(Reverse) Address Resolution Protocal
将32位网络层地址转为链路层48位MAC地址,逆地址解析协议相反。
关于属于哪一层协议比较模糊,目前比较多的人认为:
在tcp/ip里属于网络层,在OSI里属于链路层(存疑)
报文格式:
由Ethernet_II
和ARP
两部分构成(所以从这里来看还是当成网络层比较好)
ARP部分共28字节
包括8字节的报头(硬件类型,上层协议类型,MAC地址长度,IP地址长度,操作类型)
剩下20字节为:源mac,源IP,目的mac(00填充),目的IP
某个主机收到一个arp广播之后,查看报文里的IP是不是自己的IP,如果不是就只将对方IP/MAC记录到arp表里
arp -a # 查看arp表
如果是自己的IP,返回
ARP协议在IPV6中不再使用,取代其的是NDP
ICMP协议
Internet Control Message Protocol,”主要用来检测网络通信故障和实现链路追踪“
虽然从报文格式来看,ICMP报文在IP报头之后,但ICMP属于网络层协议,常见的用途包括PING和traceRoute
例如PING:
包括8字节的报头,以及后面的报文,PING的报文为32个小写的英文字母(请求和响应都是这个结构)
内网IP
因特网分配编号委员会(IANA)保留了3块IP地址做为私有IP地址:
10.0.0.0 ——— 10.255.255.255
172.16.0.0——— 172.16.255.255
192.168.0.0———192.168.255.255
NAT机制
Network Address Translation
静态NAT:内网IP与公网IP一一对应,静态NAT不能减少公网IP地址的使用
动态NAT:将公有地址池以先到先得的方式分配(公网IP少于内网IP)
**端口地址转换(NAPT/PAT)**:路由器通过报文的IP是0~65535的哪个,决定将报文发送给内网哪台主机
DNS
DNS解析:UDP协议,端口53
解析顺序:浏览器缓存,本地Hosts文件,路由器缓存,然后才是DNS服务器解析(循环解析,递归解析)
DHCP
Dynamic Host Configuration Protocol,UDP协议
简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。
在DHCP报文开始会有一个op字段,包括:
请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。
应答报文:DHCP Offer、DHCP ACK和DHCP NAK。
首先客户端广播(Discover),然后服务器应答(Offer),客户端选择最先收到的offer进行广播(Request),服务器对其进行IP地址分配(DHCP ACK)
IPv4
为什么要用子网掩码?
分离网络地址和主机地址,两台主机通信时,对子网掩码进行与操作得到网络地址
网络地址相同,就用ARP协议发现mac地址,如果不同就发送到网关(路由器的IP地址)
192.168.1.1/30 斜杠后面的就是子网掩码,表示有几个1,例如24就是255.255.255.0
IPv4数据包的选项部分
变长、可选。有一个一字节的选项码。例如
严格源路由,选项后面会跟着一个列表,数据包必须严格经过上面所有路由器
宽松源路由,只给出关键点,剩下的由自动路由选择功能补充
广播
受限广播:ip.dst==255.255.255.255,只能本地广播,路由不会转发。(Ether帧的dst是ff:ff:ff:ff:ff:ff)
直接广播:ip.dst的主机地址全设置为1,网络地址同ip.src(Ether的dst还是6个ff),例如:
192.168.1.1/30可以发送广播包(192.168.1.7),使主机192.168.1.5/30 也可以接收到该数据包,前提是之间的路由器要开启定向广播功能。
ICMP
ping of death
数据包分片之后重组,重组之后缓冲区溢出
ICMP Smurf 反射放大攻击
伪造ip.src,大量机器向被攻击主机返回icmp echo