OSI

计算机网络层级

以前在协议组学到的一些东西,互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。
七层划分为从高到低:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

物理层

物理层就是唯一看得见摸得着的一层,也是最底层。它指的是计算机与计算机之间的物理连接,可以是光纤,双绞线,电话线,电磁波信号。是计算机网络组成必不可少的一层。

链路层

物理层传输的只是010二进制信号,如果没有编解码,将不会有任何意义。链路层的意义就是对二进制信号进行编码与解码。

局域网

局域网是一种私有网络,一般在一座建筑物内或建筑物附近,比如家庭、办公室或工厂。局域网络被广泛用来连接个人计算机和消费类电子设备,使它们能够共享资源和交换信息。当局域网被用于公司时,它们就称为企业网络,互联网就是由一个个局域网组成。

一个经典例子:ethernet

对物理层的二进制信号分组,每一组称为一个数据包,ethernet协议规定了ethernet数据包的结构。

head data
18byte 46~1500byte

1.源地址(6 byte)
2.目标地址(6 byte)
3.数据类型(6 byte)

此处的地址指的就是mac地址,Ethernet规定接入Internet的设备都必须具备网卡,发送端的和接收端的地址便是指网卡的地址,即Mac地址。每块网的Mac地址都应该是唯一的。

ethernet广播

数据在局域网中以Ethernet协议传输时,采用的是广播的方式,所有的数据包都是可以被接收到的,但是一般只接收目标地址与本机Mac地址相符的包,因为正常情况下数据是被加密的,即使接受到了发给别人的数据包,也没有用。所以数据的加密是很重要的。

网络层

那么问题来了,1.广播中怎么知道目标的Mac地址?2.怎么与不在同一个局域网的主机通信?

IP编址

除了Mac地址,还有一个比较常提及的地址IP地址。IP地址用于标识主机所处的局域网。IP地址是由网络地址与主机地址两部分所组成。

网络地址

网络地址可用来识别设备所在的网络,网络地址位于IP地址的前段。当组织或企业申请IP地址时,所获得的并非IP地址,而是取得一个唯一的、能够识别的网络地址。同一网络上的所有设备,都有相同的网络地址。IP路由的功能是根据IP地址中的网络地址,决定要将IP信息包送至所指明的那个网络。

主机地址

主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以主机地址来区别。

IP路由

IP主要包含三方面内容:IP编址方案、分组封装格式及分组转发规则

互联网是由许多个局域网连接所形成的大型网络。如果要在互联网中传送IP信息包,除了确保网络上每个设备都有一个唯一的IP地址之外,网络之间还必须有传送的机制,才能将IP信息包通过一个个的网络传送到目的地。此种传送机制称为IP路由。
网关:局域网的出入口,连通不同的局域网。在IP路由的过程中,由网关负责选择路径,IP信息包则是被传送的对象。
IP信息包传送时还有一项很重要的特性,即使用非连接式的传送方式。非连接式的传送方式是指IP信息包传送时,源设备与目的设备双方不必事先连接,即可将IP信息包送达。即源设备完全不用理会目的设备,而只是单纯地将IP信息包逐一送出。至于目的设备是否收到每个信息包、是否收到正确的信息包等,则由上层的协议(例如TCP)来负责检查。
使用非连接式的优点是过程简单化,可提高传输的效率。此外,由于IP信息包必须通过IP路由的机制,在一个个路由器之间传递,非连接式的传送方式较易在此种机制中运行。
不同局域网间的数据传输:通过网络地址区分,计算机运算判断出目标不在同一个局域网内,

ARP

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

IP发包

计算机网络模型就像套娃,底层套上层,一层又一层。位于网络层的IP数据包被套在了数据链路层ethernet的数据里。它大概长这样。

ethernet head ip head ip data

如果源主机和目标主机在同一局域网内,包长这样

源Mac 目标Mac 源IP 目标IP data

目标Mac地址可通过ARP查询得到。ARP包长这样

源Mac FF:FF:FF:FF:FF:FF 源IP 目标IP data

返回目标MAC地址。
如果源主机和目标主机不在同一局域网,包长这样

源Mac 网关Mac 源IP 目标IP data

网关mac也通过ARP查询得到。这时候ARP包长这样

源Mac FF:FF:FF:FF:FF:FF 源IP 网关IP data

返回网关MAC地址。

传输层

应用层

我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。
如果想要使传输的数据有意义,则必须使用到应用层协议。