分享

网络协议栈之数据链路层基础讲解

 拿破仑小子 2017-10-31

前言:

网络协议栈主要是TCP/ip协议栈,同时也是构成今天全球互联网的基础,具体它们是怎样运行的,运行原理又是怎样,这就是今天我们需要讲述的知识。

协议栈的四个基本层次:

数据链路层:

本层实现了所有的网卡驱动程序,并且为上层协议数据包和下层物理链路帧提供了通用的转换接口。主要的协议就是arp协议和rarp协议。

网络层:

本层主要实现数据包在网络上选路和转发,提供主机到主机的传输。在本层中,ip协议通过目的地址逐跳的选择下一跳路由,知道数据包到达目的主机;或者是在中间传输失败被丢弃。

在本层中,主要协议是ip协议,但是通常会把icmp协议也归入这一层,严格意义山说icmp也是使用ip协议来进行数据包请求,按照上层协议使用下层协议的规范,应该归为传输层。

传输层:

本层主要是提供数据包的端到端的可信通信,本层主要协议是tcp、udp和sctp协议,本次我们主要是讲述tcp和udp。

tcp协议:主要是为应用层提供可靠的、面向连接的以及面向流的服务。后续详解。

udp协议:主要是为应用层提供不可靠的、基于数据包的协议。

应用层:

本层主要是负责处理数据包的内容逻辑,前面的三个协议主要是保证数据包能够到达目的端,而应用层就是对数据包的内容进行处理。

协议栈的使用方式:

1)发送时封装:

当数据包从应用层->传输层->网络层->数据链路层时,每一层都会在上层数据包头部添加本层头部,这种使用使用方式我们称之为数据包的封装。如到传输层时,添加tcp头部或者是udp头部,此时数据就是tcp报文段。最后发送到网络上就是经过数据链路层封装好的帧数据。

2)接收时分用:

分用的过程和封装的过程正好相反,但是分用是根据报文中的类型字段来区分数据包将传给上层哪一个协议的,如以太网帧的类型字段可以区分是传给arp模块还是ip模块,ip报文中根据协议字段区分传给的是tcp还是udp,tcp报文中根据目的端口号来传给应用层的具体程序的。

arp协议原理讲解:

  1. 原理:arp协议能够实现任意网络层地址到任意物理地址的转换,为了简便,本次主要是介绍ip地址到mac地址的转换。主要实现原理为:arp协议被调用时,会向主机所在的网络发送一个广播信息,该信息中会包含目标主机的网络层地址(IP地址),如果ip地址匹配, 主机就会回应它的物理地址给请求主机。

  2. 以太网arp的报文格式如下:

硬件类型协议类型硬件地址长度协议地址长度操作发送端以太网地址发送端ip地址目的端以太网地址目的端以太网ip地址
2字节2字节1字节1字节2字节6字节4字节6字节4字节

  • 硬件类型:主要是物理地址的类型,如以太网、令牌环等。值为1时表示mac地址。

  • 协议类型:主要是网络层地址的类型,一般是ip地址,值为0x800。

  • 硬件地址长度和协议地址长度分别表示mac地址长度和ip地址长度,值分别为6和4.

  • 操作:主要是4中类型。arp请求(1)和应答(2)、rarp请求(3)和应答(4)。

  • 最后4个字段:数据包两端的地址。请求arp会填充除目的端mac地址之外的其他地址。arp响应主机会填充目的端mac地址。

注意:arp报文的长度为28字节,因此发送的以太网arp数据包的长度为18+28=46个字节,但是以太网标准规定数据部分的长度至少为46字节,因此在进行请求或者是响应时可能数据包长度为64自己。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多