计算机网络层级
以前在协议组学到的一些东西,互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。
七层划分为从高到低:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
物理层
物理层就是唯一看得见摸得着的一层,也是最底层。它指的是计算机与计算机之间的物理连接,可以是光纤,双绞线,电话线,电磁波信号。是计算机网络组成必不可少的一层。
链路层
物理层传输的只是010二进制信号,如果没有编解码,将不会有任何意义。链路层的意义就是对二进制信号进行编码与解码。
局域网
局域网是一种私有网络,一般在一座建筑物内或建筑物附近,比如家庭、办公室或工厂。局域网络被广泛用来连接个人计算机和消费类电子设备,使它们能够共享资源和交换信息。当局域网被用于公司时,它们就称为企业网络,互联网就是由一个个局域网组成。
一个经典例子:ethernet
对物理层的二进制信号分组,每一组称为一个数据包,ethernet协议规定了ethernet数据包的结构。
head | data |
---|---|
18byte | 46~1500byte |
head
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协议,但是那样的话,如果没有应用层,便无法识别数据内容。
如果想要使传输的数据有意义,则必须使用到应用层协议。