网络分层模型
OSI七层模型
OSI(Open System Interconnection)七层模型称为开放式互联网的参考模型,是一个逻辑上的定义和规范,并不是实际中的网络一定是按OSI七层模型来设计的。
TCP/IP五层(或四层)模型
- 应用层:负责程序之间的沟通,网络编程主要针对应用层。
- 传输层:负责两台主机之间的数据传输。
- 网络层:负责地址管理和路由选择,例如在IP协议中,通过IP标识一台主机,路由器工作在网络层。
- 数据链路层:负责设备之间数据帧的传送和识别。
- 物理层:负责光/电信号的传递方式。
下四层为内核管理,应用层为用户管理。
同一局域网下数据的传递
数据包的发送
- 在任何时刻,同一局域网中只能有一台主机在向网络上发送数据
以太网
-
以太网基于冲突检测机制
- 当以太网中有一台主机要向网络发送数据时,会进行一下步骤:
- 监听信道上是否有信号在传输。
- 如果有,则表明信道属于忙碌状态。则继续监听,直到信道空闲为止
- 如果没有监听到任何信号,就传送数据
- 传输的时候继续监听,如果发现冲突,则执行退避算法,随机等待一段时间,重新执行步骤1.(当冲突发生时,涉及冲突的计算机会返回到监听信道状态)
- 如果未发现冲突则发送成功,是所有计算机在尝试再一次发送数据之前,必须在最近一次发送后等待9.6微秒
- 监听信道上是否有信号在传输。
- 当以太网中有一台主机要向网络发送数据时,会进行一下步骤:
令牌环网
- 令牌环网的结构组成一个环形,环形的一圈是主机,主机中存在一个令牌,由一号机开始向下传递,当某一个主机获得该令牌之后,才能向网络中发送消息。
数据包的传递
- 封装:数据包由客户端最顶层的应用层产生,从客户端的最顶层由上向下,每一层在向下交付数据时都会对数据包进行封装,最终到达物理层进行传输。
- 传送:当数据包到达物理层之后,在同一局域网里的所有主机的数据链路层都可以看到发送的数据包,每个主机的数据链路层会对数据包进行解析,查看数据包的mac地址是否是本主机的mac地址,如果是则将该数据包进行解包并向上层交付。
- 解包:在数据包进行封装时,除了最顶层报头,每一层的报头中都必须包含一个字段,该字段表明该包头属于上层的哪个协议。
MAC地址&IP地址
MAC地址
- mac地址用来识别数据链路层中相连的节点
- mac地址的长度为48位,一般用16进制数字加上冒号的形式来表示
- mac地址全球唯一,在主机出厂时就已经内嵌在网卡中,不能被修改(虚拟机中的mac地址不是真实的mac地址)
IP地址
IPv4&IPv6:随着互联网的快速发展,世界上的计算机越来越多,同时一个IP只能标识网络中的一台主机,因为IPv4是一个32位的整数,所以它可以标识的主机数是有限的,为了解决当前面临的困境,随即产生了IPv6,IPv6的地址有128字节,它可以标识更多的主机。
- IP地址是在IP协议中用来标识网络中不同主机的地址
- 对于IPv4来说,IP地址是一个32位的整数
- 通常用点分十进制来表示一个主机的IP地址
数据的跨网络传输(跨越局域网)
- 国际互联网可以看作是许许多多的局域网相互连接形成的一张大的局域网。
- 局域网与局域网之间使用路由器连接。
跨越局域网传输时,刚开始的数据包中填写的mac地址是路由器的mac地址,来源mac地址是发送端的mac地址,路由器收到数据之后,会对数据进行一次解包,将数据交付到网络层,路由器检测数据包的目的IP地址,然后发现目的IP地址与连接路由器某端口的IP地址一致,则路由器对数据包进行重新封装,经过封装之后,数据包的来源mac地址就会变成路由器的mac地址,再将数据包发送到对应的端口中。
在数据包跨网络传输的过程中:
- mac地址可能一直发生变化
- IP地址不会发生变化