负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序。
有点像送快递,一个人往另一个地方寄快递,每个快递走不同的路线,可能后发的先到了,也可能丢件了。但是网络层不管这些,只管寄快递
这里的互联网特指Internet,Internet既有局域网,又有广域网,既有光纤,又有铜线,无线卫星,还有不同的协议,这是Internet复杂所在。
由于互连网络是全球最大的网络,里面用到的设备和介质是各种各样,对于我们使用者来说,不用关心里面实现的技术细节,所以我们可以把整个internet当做一个虚拟互连网络,只要我们输入正确的地址就可以相互通信。这样可以进行更好的分层管理。
PC:计算机;Hub:集线器;Switch:交换机;Router:路由器
发送端(封装):
(1)应用层准备要传输的数据;
(2)传输层把文件进行分段并编号;(数据段)
(3)网络层把传输层的每一个数据包增加原IP地址和目标IP地址;(数据包)
(4)数据链路层把每个数据加上MAC地址;
两种情况:(数据帧)
使用自己的子网掩码,判断自己和目标地址分别在哪个网段,
若在同一个网段(不过路由器),通过ARP协议广播的方式得到目标IP地址的MAC地址,然后就能封装出一个数据帧;
如果子网掩码不是一个网段(用与运算),通过ARP协议广播的方式得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2,因为M2和M3是点对点通信,没有别的主机,所以它们之间的MAC地址就是FF。
(5)物理层把数据帧变成数字信号(bit流)
接收端(解封):
(1)交换机Hub0接收bit流,能对数据进行存储转发。它根据数据帧的MAC地址,确定数据是从哪来的,要去哪。
(2)路由器M2获取交换机的数据包,识别其中的IP地址,根据路由表选择出口,它无法识别数据段内容。
(3)路由器M2到M3是点对点通信,遵守PPP协议。
(4)PC3收到bit流后,数据链路层发现MAC地址是自己的,去掉MAC地址给它的网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来。
不会,路由器不能识别数据内容。它只负责信息的传递。但是病毒会影响网络设备。因为病毒会占用网络流量,导致其他设备忙着转发没用的数据包
ARP为IP服务,IP为ICMP/IGMP服务
IP协议:把数据包从一个网段转到另一个网段,就是用来选择路径用的。
将IP地址通过广播(本网段,不通过路由器,路由器隔绝广播),目标MAC地址是FF-FF-FF-FF-FF-FF,解析目标IP地址的MAC地址。
cmd中输入arp -a查看arp的缓存
ARP是解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射关系。如果所找的主机和原主机不在同一个局域网上,那么就要通过ARP找一个位于本局域网上的某个路由器的MAC地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
从IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知情的。
只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的MAC地址。
(1)发送方是主机,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
(2)发送方是主机,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
(3)发送方是路由器,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
(4)发送方是路由器,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
只知道自己MAC地址就能获得其IP地址
arp绑定命令:arp -s 本机地址 MAC地址
查看arp缓存:arp -a
清楚缓存:本地连接—>修复
ICMP:在IP之上,用来测试网络层有没有故障。使用最多的命令是ping。
为了提高IP数据报交付成功的机会,在网络层使用了ICMP(Internet Control Message Protocol)。
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告;
ICMP不是高层协议,而是IP层协议;
ICMP报文件为IP层数据报的数据加上数据报的首部,组成IP数据报发送出去。
ping(Packet Internet Grope)命令诊断网络故障
PING是网络层命令。
TTL是数据报的生存时间,每过一个路由器就会减1,作用是防止数据报在网络中循环。TTL默认初始值如下:
Linux 64
Windows 128
Unix 256
可以根据TTL值粗略判定对方是什么系统。
ping的参数
ping www.baidu.com -t表示一直ping下去
ping -l 200 www.baidu.com 发送200字节大小的包来ping
ping 8.8.8.8 -i 2更改数据包TTL时间,能够跟踪数据包途径的路由器
Windows上使用pathping 跟踪数据包路径,计算丢包情况
pathping www.baidu.com
windows上跟踪数据包路径的命令:tracert www.baidu.com
在路由器上跟踪数据包路径的命令:traceroute www.baidu.com
ping的特性
(1)PING,因特网包探索器,用于测试网络连接量的程序。ping发送一饿ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。
(2)ping指端对端联通,通常用作可用性检测,但是某些病毒会强行大量远程执行ping命令抢占你的网络资源,导 致系统网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。
(3)如果打开IE浏览器访问网站失败,可以通过ping命令测试到Internet的网络连通,可以为你排除网络故障提供线索。
点到点通信:A ,B之间通信
广播:目标MAC地址全是F,目标IP地址全是255,也就是全是1.全网广播不能跨越路由器。
组播=多播:分组广播。
使用多播一般用于直播,网络会议,能够节省带宽。
IGMP协议的作用就是周期性扫描本网段内有没有主机在访问多播数据包。
首部:第一部分是固定长度,20字节,是所有IP数据包必须具有的。后一部分是可选字段,长度可变。
每一行32bit相当于1个字节,一共5行,共20字节。
(1)版本:用来表示TCP/IP是哪个版本,ipv4还是ipv6.
(2)首部长度:用来标识固定部分和可变部分的总共长度(如果没有可变部分,首部长度可以不用定义了)
(2)区分服务:确定更高的传输优先级。
(3)总长度:确定数据包的总长度。一共是16位,数据包最大有2^16-1=65535字节。
注意,网络层,数据包最大65535字节;而数据链路层数据最大是1500字节最大传输单元MTU,是不一样的。
所以说,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据链路层将数据包分片传输。
数据包分片处理:把数据分割,分别添加IP地址,通过网络发给目标MAC地址。目标在通过网络层拼接。传送过程中可能会丢包,或者后发的先到(泪滴攻击就是利用目标机发送破坏的IP包(重叠的包货过大的包负荷)可以通过TCP/IP协议来瘫痪各种不同的操作系统)。所以需要编号。
(4)标识:如果出现数据包分片,那么标识用来确定哪些数据包是需要组合的。
(5)标志:确定该数据包是完整的还是分片中的一部分。
标志(flag)占3位,只有前两位有用,标志字段最低位是MF(More Fragment),MF=1表示后面还有分片, MF=0表示最后一个分片。标志字段中间一位是DF(Don’t Fragment),只有DF=0才允许分片。
(6)片偏移:偏移等于当前字节在数据部分的第几个再除以8.
IP数据报分片举例
(7)生存时间:就是TTL,time to live,每过一个路由器就减1。8位二进制。防止数据包在网络中循环。
(8)协议:用协议号标识数据部分是什么数据。
IP数据报首部的固定部分中的各字段
ICMP协议号:1; //以下都是10进制的数字
IGMP协议号:2;
TCP协议号:6;
UDP协议号:17;域名解析
IPv6协议号:41;
OSPF协议号:89;
(9)首部检验和:16位,只检验数据报的首部,不检验数据部分。这里不是采用CRC检验码而是采用简单的计算方法。每经过一个路由器就会检验一次。
(10)源地址和目的地址都是IP地址,都占32位,只符合IPv4。IPv6是128位。
(11)可变部分:一般没用,IPV6就没有了。
(1)网络畅通的条件
沿途路由器必须知道下一跳给谁,数据包有去有回。
需要管理员告诉路由器所有没有直连的网络下一跳给谁。
缺点:适合于小规模网络,不能自动调整路由。
动态学习
(1)RIP协议
周期性广播(30s)路由表,选择路径的依据是最少的跳数,最大跳数是15跳,所以一般不适合大网络。
(2)OSPF协议
根据带宽选择路径。
网络地址(网络号)唯一指定了每个网络。同一网络中的每台计算机都共享相同的网络地址,并用它作为自己IP地址的一部分。ABC对应的子网掩码分别是255.0.0.0和255.255.0.0和255.255.255.0
特殊的几个地址
127.0.0.1 本地换回地址
169.254.0.0
10.0.0.0,172.16.0.0–172.31.0.0,192.168.0.0–192.168.255.0 保留的私网地址
注意,全为1是广播,所以63,127,191,254不选