• 02_常见网络层协议的头结构


    1.ARP报文的报文结构

    ARP首部的5个字段的含义:

    硬件类型:值为1表示以太网MAC地址。

    协议类型:表示要映射的协议地址类型,0x0800 表示映射为IP地址。

    硬件地址长度:在以太网ARP的请求和应答中都是6,表示MAC地址长度。

    协议地址长度:在以太网ARP请求和应答中都是4,表示IP地址长度。

    在ARP协议包中,保留出硬件地址长度字段和协议地址长度字段可以使ARP协议在任何网络中被使用,而不局限于以太网中。

    op: ARP数据包的类型,ARP请求设置为1,ARP应答设置为2。

    备注:虽然ARP和IP协议都属于网络层的协议,但是从分层的结构来看,ARP处于网络层的最底层

    而IP层属于网络层的顶层。

    1.1 ARP协议的简介

    ARP全称为Address Resolution Protocol(地址解析协议),是根据IP地址来获取物理地址的一个TCP/IP协议。

    主机发送消息时将包含目标IP地址的ARP请求广播到局域网上的所有主句,并接收返回消息,来确定目标的MAC地址。收到返回消息后将该IP地址和MAC地址存入本机ARP缓存中并保留一段时间,下次请求时直接查询ARP缓存来节约资源。

    局域网中的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其存入本机的ARP缓存中。

    ARP协议是通过目标设备的IP地址,来获得目标设备的MAC地址,来保证通信的顺利进行。

    1.2 ARP协议的工作流程

    主机A发送数据之前先判断主机A的ARP的缓存表中是否包含主机B的MAC地址,如果没有,主机A把要发送的数据挂起并发送一个ARP请求包,发送完成后等待主机B的应答包到来,到来之后把挂起的数据包添加以太网首部发送至主机B中。

    2.IP协议

    各个字段的解析如下:

    版本:指IP协议的版本,IPv4和IPv6。

    首部长度: 单位使字长(4个字节),最常用的首部长度是20个字节(即首部长度为0101)。

    区分服务:实际上一直没有被使用过。

    总长度:首部和数据之和的长度。最大65534字节。

    标识:每产生一个数据报,计数器就加1,并将此值赋给标识字段。

    标志:占3位只有2位有意义,最低位为MF,MF=1表示后面还有分片的数据报。

    MF=0表示这是若干数据报片中的最后一个。

    标志字段的中间一位,DF(Don't Fragment) 不能分片。DF=0时,才允许分片。

    片偏移:占 13 位片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也
    就是说,相对用户数据字段的起点,该片从何处开始。片偏移以 8 个字节为偏移单位。这就是
    说,除了最后一个分片,每个分片的长度一定是 8 字节( 64 位)的整数倍。
    生存时间:
    协议:
    部校验和:
    源地址:
    目的地址:
    数据区域:

    2.1 IP协议的简介

    IP是Interneet Protocol的缩写,是网络层的协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。

    根据端对端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

    为了能适应异构网络,IP强调适应性、简洁性和可操作性,并在可靠性上做了一定的牺牲。

    重点是IP数据报的分片与重组原理。

    3. ICMP协议

    ICMP Internet Control Message Protocol Internet 控制报文协议。它是 TCP/IP 协议簇的
    一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是
    否可达、路由是否可用等网络本身的消息,这些控制消息虽然并不传输到用户数据,但是对于
    用户数据的传递起着重要的作用。
    ICMP协议时一种面向无连接的协议,用于传输出错报告控制信息。也是属于网络层协议。
    主要用于:主机与路由器之间传递控制信息,包括报告错误、交换寿险控制和状态信息等。
    当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。

    1.ICMP差错报文

    (1) 目的站不可到达

    当路由器发送的数据报不能发送到指定目的地时,或者说当路由器不能够给数据报找到路
    由或主机不能够交付数据报时,就丢弃这个数据报,然后向发送数据报的源主机设备发回一个
    终点不可达数据报文。如下图所示:

    4. UDP协议

     UDP协议是TCP/IP协议栈的传输层协议,是一个简单的面向数据报的协议。

    UDP不属于连接型协议,因而资源消耗小,处理速度快,通常在音频、视频和普通数据传输时使用UDP较多。

    UDP报文的封装流程图:

    5.TCP协议

    TCP(Transmission Control Protocol 传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。

    5.1 TCP的三次握手

     5

    5.2 TCP的四次挥手

     

    5.3 TCP的报文结构

     

    TCP数据报在IP层的封装如下:

     

  • 相关阅读:
    Linux下的常见工具的简单使用
    Git: tag管理
    Nexus3搭建以及使用
    记录一下自己涉及到的时间及金额方法的处理
    ROS实验笔记之——FAST-LIVO
    入门篇-其之六-Java运算符(中)
    rabbitmq-exporter部署方式
    基于SE-YOLOV4的变电站断路器分合状态识别算法
    MySQL数据库——第一节 — MySQL数据库基础
    【推荐系统】ESMM:一种有效估算后点击转换率的方法
  • 原文地址:https://blog.csdn.net/zaichen321/article/details/132747613