计算机网络-网络层-详细总结
相关博文:
三言两语轻松计算机网络入门
走进科学之-计算机网络物理层-硬核扫盲
走进科学之计算机网络-数据链路层-硬核扫盲
文章目录
- 计算机网络-网络层-详细总结
- 网络层提供的服务
- 互联网络与虚拟网络
- 数据包的路由
- ARP协议
- ICMP协议
- Internet组播管理协议 IGMP
- IP数据报
- IP地址
- 子网掩码与子网划分
网络层提供的服务
H1 发送给 H2 的分组可能沿着不同路径传送
网络层负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序
- 数据包在Internet中的传输,Internet既有局域网,又有广域网,既有光纤,又有铜线,无线,还有不同的协议
互联网络与虚拟网络
虚拟网络把复杂的Internet看成一个网络,化简问题。虚拟互联网络就是逻辑互联网络,他的意思就是互联起来的各种物理网络的异构性本来就是客观存在的, 但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络,而不用考虑具体的网络异构细节
互联网中间设备又称为中间系统或中继(relay)系统
- 物理层中继系统:转发器(repeater),有点像集线器
- 数据链路层中继系统:网桥或桥接器(bridge)
- 网络层中继系统:路由器(router)
- 传输层/应用层中继系统:网关(gateway)器,网关就是路由器接口的地址。一般是本网段第一个地址
数据包的路由
发送端(封装):
(1)应用层准备要传输的数据;
(2)传输层把文件进行分段并编号;(数据段)
(3)网络层把传输层的每一个数据包增加原IP地址和目标IP地址;(数据包)
(4)数据链路层把每个数据加上MAC地址;两种情况:(数据帧)
使用自己的子网掩码,判断自己和目标地址分别在哪个网段,若在同一个网段(不通过路由器),通过ARP协议广播的方式得到目标IP地址的MAC地址,然后就能封装出一个数据帧;
如果子网掩码不是一个网段(用与运算),通过ARP协议广播的方式得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2(图中路由器),因为M2和M3是点对点通信,没有别的主机,所以它们之间的MAC地址就是FF
(5)物理层把数据帧变成数字信号(bit流),交给物理层传输
接收端(解封):
(1)交换机Switch1(图中的交换机)接收bit流,能对数据进行存储转发。它根据数据帧的MAC地址,确定数据是从哪来的,要去哪
(2)路由器M2获取交换机的数据包,识别其中的IP地址,根据路由表选择出口,它无法识别数据段内容
(3)路由器M2到M3是点对点通信,遵守PPP协议
(4)PC3收到bit流后,数据链路层发现MAC地址是自己的,去掉MAC地址给它的网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来
扩展:
路由器/交换机/集线器不会中病毒,病毒是一个完整的应用程序,且在传输过程中因为分段机制可能变得不完整,无法运行
路由器不能识别数据内容,它只负责信息的传递。但是病毒会影响网络设备。因为病毒会占用网络流量
ARP协议
ARP(地址解析协议Address Resolution Protocol)
应用与局域网,不过路由
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做
从IP地址到硬件地址的解析是自动进行的,这种地址解析过程对主机的用户是透明的
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址
ICMP协议
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告(所以有了ping command)。
ICMP 不是高层协议,而是 IP 层的协议。
ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
ping command
PING是网络层命令,用于测试网络连接量的程序
ping发送一段ICMP回声请求消息给目的地并报告主机是否收到所希望的ICMP回声应答
ping中有一个重要参数TTL( Time To Live),数据包每过一个路由,TTL减一
TTL默认初始值如下:
Linux 64
Windows 128
Unix 256可以根据TTL值+pathping command粗略判定对方是什么系统
pathpring
pathping 能跟踪数据包路径
使用ping能够判断网络通还是不通,比如请求超时,你就不能判断什么位置出现的网络故障造成的请求超时。使用pathping命令能跟踪数据包的路径,能够查出故障点,并且能够计算路由器转发丢包率和链路丢包率以及延迟,据此能够判断出网络拥塞情况
Windows上跟踪数据包路径的命令:tracerert 10.7.1.53
路由器上跟踪数据包路径的命令:traceroute 12.0.0.3
Internet组播管理协议 IGMP
IP多播
使用多播可明显地减少网络中资源的消耗
IP 多播的一些特点
多播使用组地址— IP 使用 D 类地址支持多播。多播地址只能用于目的地址,而不能用于源地址
永久组地址—由因特网号码指派管理局 IANA 负责指派
动态的组成员
使用硬件进行多播
IGMP 使路由器知道多播组成员信息
IGMP 可分为两个阶段
第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器
第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员
IP数据报
上面多次提到IP数据报,这里正式说下IP数据报
这是IP数据报的模型
首部:固定长度,20字节(5*32位),是所有IP数据包必须具有的。后一部分是可选字段,长度可变
- 版本:用来表示TCP/IP是哪个版本,ipv4还是ipv6
- 区分服务:确定更高的传输优先级(如聊天信息优先级高于大文件传输)
- 总长度:确定数据部分长度。一共是16位,最多有2^16-1=65535字节
注意,网络层,数据包最大65535字节;而数据链路层数据最大是1500字节,是不一样的。所以说,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据包会分片。最大传输单元MTU
数据包分片:把数据分割,分别添加IP地址,通过网络发给目标MAC地址。目标在通过网络层拼接。传送过程中可能会丢包,或者后发的先到(解决方法后面讲)
标识:如果出现数据包分片,那么标识用来确定哪些数据包是需要组合的,属于一个包的片标识相同
标志:确定该数据包是完整的还是分片中的一部分。占3位,只有前两位有用,标志字段最低位是MF(More Fragment),MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间一位是DF(Don’t Fragment),只有DF=0才允许分片
片偏移:偏移等于当前字节在数据部分的第几个再除以8,依次表达分片后的数据包的先后顺序
生存时间:上面讲的TTL
协议:
ICMP协议号:1;
IGMP协议号:2;
TCP协议号:6;
UDP协议号:17;域名解析
IPv6协议号:41;
OSPF协议号:89;首部检验和:16位,只检验数据报的首部,不检验数据部分。这里不是采用CRC循环冗余检验码而是采用简单的计算方法。每经过一个路由器就会检验一次
可选字段:用来支持排错、测量以及安全等措施,内容很丰富,选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目,可惜,实际上这些选项很少被使用
IP地址
计算机网络-域名与IP地址详解
子网掩码与子网划分
计算机网络-子网掩码与子网划分