回顾前面的内容
路由器内部连接的叫一个网络,可以包含交换机、集线器、网桥、电脑等。
路由器负责在不同网段转发数据。
应用层负责产生数据,然后传输层把数据分段编号,然后网络层加上源地址和目标地址(数据包)。
传输层切分数据标号,组合数据,丢包处理重传,保证数据完整。
网络层负责在不同网络之间尽力转发数据包,也就是基于数据包的IP地址转发。不负责重传,不负责数据顺序。
路由器工作在网络层、数据链路层、物理层,但主要依赖网络层。
互联网主要复杂在物理层和数据链路层,通过分层的方法就屏蔽了互联网的复杂性,在互联网中就只需要看数据包的地址转发。
视频讲解数据传输的具体过程
ARP
ARP:地址解析协议,(Address Resolution Protocol)负责把IP地址解析成物理MAC地址。
是数据通讯之前的工作,第一次解析MAC地址然后缓存(查看ARP缓存的MAC地址命令arp -a
)
将IP通过广播(本网段) 目标MAC地址是全FF-FF-FF-FF-FF-FF 解析目标IP地址的MAC地址 (ADSL上网就无法查看到其他的MAC,因为是点对点)
ARP --> IP --> ICMP/IGMP
可以利用ARP欺骗网络,网络执法官(欺骗交换机。暴力返回本网段不存在的MAC导致数据丢失,只能控制本网段)、p2p终结者(欺骗路由器,控制流量)等
在本网段通信时,计算机无法验证对方MAC是否正确。
绑定ARP arp -s xxx.xxx.xxx.xxx(IP) xxx-xxx-xxx-xxx-xxx-xxx(MAC)
查看ARP arp -a
清除ARP 本地连接-修复
IP(Internet Protocol Address)
IP:负责在不同网段转发数据包,指互联网协议地址
ICMP (Internet Control Message Protocol)
ICMP:检查网络畅通,网络层是否畅通,返回错误。常使用命令ping
(Packet Internet Groper,因特网包探索器)
ping命令:TTL(生存期,最多经过多少路由器),大致看出对方系统,Linux64 Windows128 Unix255
一直ping: ping xxx(ip) -t
ping固定数据包大小:ping -l 200 xxx(ip)
ping指定TTL大小:ping xxx(ip) -i 2
,可以跟踪沿途路由器ip
互联网常用dnf 8.8.8.8 和 202.99.160.68
请求超时:dns解析到了,消息有去无回。
目标主机无法到达:网关出现问题,出不去,返回有问题的路由器
pathping:windows专用,可以跟踪路径,计算丢包率
tracert:windows,跟踪沿途路由器 tracertoute(路由器上)
IGMP (Internet Group Multicast Protocol)
点对点
广播
组播=多播
IP数据包
通常传输层
分
块
\color{red}{分块}
分块的数据满足数据链路层的最大容量1500字节,但是也可能传输层传送特大包,这时需要网络层
分
片
\color{red}{分片}
分片
QoS区分不同流量的质量,在计算机和路由器都要加标记才行,比如IP电话流量优先传输。
数据包里的数据段最大的长度为216 - 1 = 65535字节,如果不分片数据段最大1480字节
数据链路层传输的数据段最大长度为 1500字节,所以要分片。数据链路层接收网络层的数据段大小范围在46~1500字节
泪滴攻击:分片数据不完整,使网络层一直等待消耗资源
IP数据包结构
数据包由
首
部
\color{red}{首部}
首部 和
数
据
部
分
\color{red}{数据部分}
数据部分 组成,其中数据部分来自传输层,首部来自网络层。
首部
首部前部分固定长度,共20字节,是所有IP数据报必须的。
- 版本:4 bit IPv4 IPv6
- 首部长度:4 bit 一般为20,可变字段很少用
- 区分服务:8 bit 若QoS(服务质量)有指定数据,表示优先级高的服务,语音、IP电话等。规定路由器优先传输的数据
- 总长度:16 bit 216 - 1 = 65535字节,来自传输层的数据段最大65535个字节,但是数据链路层最大1500字节,所以分片。
数据包里的数据最大的长度为216 - 1 = 65535字节,如果不分片数据段最大1480字节。
数据链路层传输的数据段最大长度为 1500字节,所以要分片。数据链路层接收网络层的数据段大小范围在46~1500字节。 - 标识:16 bit 分片数据是否为同一个包,最后相同标识的数据帧会组合成完整数据
- 标志:3 bit 只有两位有意义,标志是否为一个完整包。第二位表示是否是分片数据,最后一位表示是否是最后的数据,正常通信应该是000。
- 片偏移:用来组合分片的数据,具有相同标识的片 包含不同的偏移,表示数据的顺序,用 所在字节/8 表示片偏移的大小
- 生存时间TTL:每过一个路由器减一,防止路由环路数据循环传送不消失
- 协议:标记数据部分所使用的协议,TCP UDP ICMP IGMP。指明数据应该交给谁处理。
ICMP 协议号1
IGMP 协议号2
TCP 协议号6
UDP 协议号17
Ipv6 协议号41
OSPF 协议号89
- 首部检验和:16 bit 首部出错就丢弃,取反求和
- 源地址:32bit
- 目标地址:32bit
- 可变字段:默认没有,IPv6没有这部分。
IP协议
网络层提供的服务就是在不同网段转发数据包,丢失不管,顺序不管。根据目标地址选择从哪个口出去,根据路由表选择最佳路径,可以指定路径(静态路由)也可根据某种协议自动学习路由(动态路由)。
能够使路由器学习到路由表的协议 叫IP协议,包括RIP,OSPF等协议。
网络畅通的条件:数据包有去有回。
静态路由:需要管理员告诉路由器所有没有直连的网络下一跳给谁。只适合于小网络,不能自动适应网络变化。
动态路由:
- RIP协议,周期性(30秒)广播路由表,根据最小跳数选择路径,最大跳数15跳,不适合大网络
- OSPF协议,根据带宽选择最佳路径