一.ISO七层协议
应用层 | 应用层 |
表示层 | |
会话层 | |
传输层 | 传输层 |
网络层 | 网络层 |
数据链路层 | 物理层 |
物理层 |
物理层:为数据端设备提供原始比特流的传输的通路
网络通信的数据传输介质,由电缆与设备共同构成(网线,中继器)
数据链路层(MAC): 在通信实体间建立数据链路连接
将数据分帧,并处理流控制,物理地址寻址,重发(网卡,网桥,二层交换机)
网络层(IP):为数据在结点之间传输创建逻辑链路,并分组转发数据
对子网间的数据包进行路由选择.(路由器,IP,多层交换机,防火墙)
传输层:提供应用进程间的逻辑通信
建立连接,处理数据包错误,数据包次序(TCP,UDP,进程,端口)
会话层:建立端连接并提供访问验证和会话管理
使用校验点可使会话在通信失效时从校验点恢复通信(服务器验证用户登录,断点续传)
表示层:提供数据格式转换服务
加密与解密,图片编码与解码,数据的压缩和解压缩(URL加密,口令加密)
应用层:访问网络服务的接口
为操作系统或网络应用程序提供访问网络服务的接口(HTTP DNS)
二.数据包在网络中是怎么传输的
当浏览器输入网址之后,到网址显示,其中发生了什么?
1.HTTP
浏览器解析URL,生成HTTP消息。
2.通过DNS查询ip地址(有了远程定位)
DNS服务器保存了Web服务器域名与ip的对应关系。
3.委托操作系统发送HTTP消息
通过 DNS 获取到 IP 后,就可以把 HTTP 的传输工作交给操作系统中的协议栈。
应用程序(浏览器)通过调用 Socket 库,来委托协议栈工作。协议栈的上半部分有两块,分别是负责收发数据的 TCP 和 UDP 协议,它们两会接受应用层的委托执行收发数据的操作。它会第一个先找TCP帮忙
4.加上了TCP报头
5.委托ip模块包装成网络包
6.再加上MAC头部(通过ARP协议获得MAC地址)
7.来到了网卡,生成了电信号
IP 生成的网络包只是存放在内存中的一串二进制数字信息,没有办法直接发送给对方。因此,我们需要将数字信息转换为电信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。负责执行这一操作的是网卡,要控制网卡还需要靠网卡驱动程序。
8.交换机的设计是将网络包原样转发到目的地。
(图为电信号到交换机,再到路由器,最后被转换成数字信号的过程)
交换机的设计是将网络包原样转发到目的地。交换机工作在 MAC 层,也称为二层网络设备。(也就是数据链路层)
计算机的网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有 MAC 地址。
将包存入缓冲区后,接下来需要查询一下这个包的接收方 MAC 地址是否已经在 MAC 地址表中有记录了。
交换机的 MAC 地址表主要包含两个信息:
一个是设备的 MAC 地址,
另一个是该设备连接在交换机的哪个端口上。
交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口。
当 MAC 地址表找不到指定的 MAC 地址会怎么样?
地址表中找不到指定的 MAC 地址。这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备一段时间没有工作导致地址被从地址表中删除了。
这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上,无论该设备连接在哪个端口上都能收到这个包。
这样做不会产生什么问题,因为以太网的设计本来就是将包发送到整个网络的,然后只有相应的接收者才接收包,而其他设备则会忽略这个包。
有人会说:“这样做会发送多余的包,会不会造成网络拥塞呢?”
其实完全不用过于担心,因为发送了包之后目标设备会作出响应,只要返回了响应包,交换机就可以将它的地址写入 MAC 地址表,下次也就不需要把包发到所有端口了。
局域网中每秒可以传输上千个包,多出一两个包并无大碍。
此外,如果接收方 MAC 地址是一个广播地址,那么交换机会将包发送到除源端口之外的所有端口。
9.来到路由器,然后MAC头部可以去掉了
当转发包时,首先路由器端口会接收发给自己的以太网包,然后路由表查询转发目标,再由相应的端口作为发送方将以太网包发送出去。
电信号到达网线接口部分,路由器中的模块会将电信号转成数字信号,然后通过包末尾的 FCS
进行错误校验。
如果没问题则检查 MAC 头部中的接收方 MAC 地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。
总的来说,路由器的端口都具有 MAC 地址,只接收与自身地址匹配的包,遇到不匹配的包则直接丢弃。
路由表的网关列判断对方的地址。
如果网关是一个 IP 地址,则这个IP 地址就是我们要转发到的目标地址,还未抵达终点,还需继续需要路由器转发。
如果网关为空,则 IP 头部中的接收方 IP 地址就是要转发到的目标地址,也是就终于找到 IP 包头里的目标地址了,说明已抵达终点。
知道对方的 IP 地址之后,接下来需要通过 ARP
协议根据 IP 地址查询 MAC 地址,并将查询的结果作为接收方 MAC 地址。
原文:https://www.cnblogs.com/carryup/p/13866957.html