码迷,mamicode.com
首页 > 其他好文 > 详细

计算机网络(三)---剖析七层协议

时间:2020-10-24 10:29:26      阅读:24      评论:0      收藏:0      [点我收藏+]

标签:list   span   网络层   工作   通过   网络通信   自己   arp   用户   

一.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 地址。

 

计算机网络(三)---剖析七层协议

标签:list   span   网络层   工作   通过   网络通信   自己   arp   用户   

原文地址:https://www.cnblogs.com/carryup/p/13866957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!