文章目录

  • 1、发送数据的过程
  • 2、ARP协议
    • 2.1 ARP协议使用过程
    • 2.2 ARP协议4种典型情况
  • 3、DHCP协议
    • 3.1 DHCP使用过程
  • 4、ICMP协议
    • 4.1 ICMP差错报告报文
    • 4.2 ICMP询问报文
  • 5、ICMP的应用
  • THE END

1、发送数据的过程

\qquad 五层网络结构数据发送的过程如下所示:

\qquad 数据发送的请求由应用层进行发起,之后在传输层将应用层需要发送的数据进行数据报的分片操作(收到最大传输单元MTU的限制),之后网络层将每一份数据报添加源主机地址IP1和目的主机地址IP3,进行数据报的初步封装;之后数据链路层将网络层封装的数据报加头-源主机的物理地址MAC1和目的主机的物理地址MAC3,加尾-FCS(帧检验序列),将数据报进行二次封装;最后由物理层将封装好的数据报进行传输。
\qquad 上述过程中,当源主机和目的主机在同一个局域网内部,则数据链路层在封装数据报的过程中,由于不知道目的主机的物理地址MAC3,所以需要借助ARP协议获取到MAC3,获取方式是通过广播ARP进行请求分组,之后目的主机采用单播ARP相应分组,返回给源主机MAC3。其中ARP高速缓存中有局域网内部的IP地址和MAC地址的映射关系。

\qquad 若源主机和目的主机不在同一个局域网范围之内,则源主机的“下一跳”将以局域网的默认网关为“目的地”,和上述叙述一样通过ARP协议获得默认网关的物理地址MAC6,之后首先将数据传送到默认网关。之后数据在路由器之间进行转发,直到数据转发到目的主机所在的局域网的路由器,之后MAC9对应的路由器会通过ARP协议获得目的主机的物理地址MAC5,之后成功将数据发送到目的主机。

2、ARP协议

\qquad 由于在实际网络的链路上传送数据时,最终必须使用MAC地址,ARP协议就是用于完成主机或路由器IP地址到MAC地址映射,即解决下一跳走哪的问题。

2.1 ARP协议使用过程

\qquad 检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组同一个局域网中所有主机都能收到该请求。目的主机收到请求之后就会向源主机单播衣蛾ARP相应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。

2.2 ARP协议4种典型情况

\qquad 1) 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
\qquad 2) 主机A发给另一个网络的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
\qquad 3) 路由器发给本网络的主机A:用ARP协议找到主机A的硬件地址;
\qquad 4) 路由器发给另一个网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。

3、DHCP协议

\qquad 动态主机配置协议DHCP是应用层的协议,使用客户/服务器方式,客户端和服务端通过广播的方式进行交互,基于UDP。
\qquad DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址,子网掩码,默认网关,DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址重租。

3.1 DHCP使用过程

\qquad 1) 主机广播DHCP发现报文,
\qquad 2) DHCP服务器广播DHCP提供报文
\qquad 3) 主机广播DHCP请求报文,没有被主机接受的DHCP服务器撤回刚刚提供的IP地址等配置
\qquad 4) DHCP服务器广播DHCP确认报文

4、ICMP协议

\qquad TCP/IP协议栈示意图如下所示:

\qquad ICMP的作用是为了更有效地转发IP数据报和提高交付成功的机会… …
\qquad ICMP协议支持主机或路由器:差错(或异常)报告,网络探询,通过发送特定的ICMP报文。ICMP报文的格式如下所示:

4.1 ICMP差错报告报文

\qquad 1) 终点不可达:当路由器或者主机不能交付数据报时,就向源点发送终点不可达报文;无法交付
\qquad 2) 源点抑制:当路由器或者主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点直到应当把数据报的发送速率放慢;拥塞丢数据
\qquad 3) 时间超过:当路由器收到生存时间TTL=0的数据报时,除了丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先时间内不能收到一个数据报的全部数据片时,就把已经收到的数据报片都丢弃,并向源点发送时间超过报文;TTL=0
\qquad 4)参数问题: 当路由器或者目的主机收到的数据报首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文;首部字段有问题
\qquad 5) 改变路由(重定向):当路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器-可以通过更好的路由。值得更好的路由
\qquad ICMP差错报告报文数据字段的格式如下所示:

不应发送ICMP差错报文的情况
\qquad 1) 对ICMP差错报告报文不再发送ICMP差错报告报文;
\qquad 2) 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文;
\qquad 3) 对具有组播地址的数据报都不发送ICMP差错报告报文;
\qquad 4) 对具有特殊地质(如127.0.0.0或者0.0.0.0)的数据报不发送ICMP差错报告报文

4.2 ICMP询问报文

\qquad 1) 回送请求和回答报文:主机或者路由器向特定主机发出的询问,收到此报文的主机必须给源主机或者路由器发送你ICMP回送回答报文。测试目的站是否可达以及了解其相关状态;
\qquad 2) 时间戳请求和回答报文:请某个主机或者路由器回答当前的日期和时间。用来进行时钟同步和测量时间。

5、ICMP的应用

\qquad Ping:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。
\qquad Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。

THE END

三十二、ARP协议、DHCP协议、ICMP协议相关推荐

  1. 静态树表查找算法及C语言实现,数据结构算法C语言实现(三十二)--- 9.1静态查找表...

    一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...

  2. 虚拟机dhcp服务器怎么检验,实验十二虚拟机上DHCP服务器的配置和验证.doc

    实验十二 虚拟机上DHCP服务器的配置与验证 一.实验目的 了解DHCP的基本概念和服务器的新特性 掌握DHCP服务器的安装与配置 掌握DHCP的运行方式 掌握DHCP客户机的设置 掌握ipconfi ...

  3. 【正点原子FPGA连载】 第三十二章基于lwip的TCP服务器性能测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    第三十二章基于lwip的TCP服务器性能测试实验 上一章的lwip Echo Server实验让我们对lwip有一个基本的了解,而Echo Server是基于TCP协议的.TCP协议是为了在不可靠的互 ...

  4. axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  5. 计算机网络(三十二)网络管理

    计算机网络(三十二)网络管理 1.SNMP 2.MIB 3.RMON 1.SNMP 是一款基于UDP/IP的协议 . 在TCP/IP的网络管理中可以使用SNMP(Simple Network Mana ...

  6. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  7. ASP 三十二条精华代码

    整理收藏: ASP 三十二条精华代码 1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table b ...

  8. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  9. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  10. 三十二、Java集合中的ArrayList

    @Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

最新文章

  1. jMeter 模拟 web 高并发请求
  2. 常用WebService一览表(一)
  3. [读书笔记] - 《深度探索C++对象模型》第5章 构造、解构、拷贝语意学
  4. lisp语言如何画小红点_实验四、五 用AutoCADLISP语言编程绘图
  5. python分割文件为小文件_Python实现将一个大文件按段落分隔为多个小文件的简单操作方法...
  6. PAP和CHAP认证
  7. 【Nginx系列】- Nginx源码复杂安装
  8. windows10系统精简:NTlite工具
  9. 读《线上幽灵:世界头号黑客米特尼克自传》 有感
  10. labview 编程样式_LabVIEW编程实例:一个简单通用的“关于”对话框模板实现
  11. 学计算机的的用87键键盘可以吗,键盘87和108键区别
  12. 要来了!国内安卓统一推送标准将于 今年3 月开启测试
  13. C语言程序设计 | 大小端
  14. python是哪一类型编程语言_什么是编程语言呢?编程语言有哪些种类呢?
  15. 2013年多益网络校园招聘笔试题
  16. 阿里资深软件测试工程师总结的这几点,让你轻松搞懂性能调优
  17. 【动画图解微积分笔记】 (一) -1.概述 (附B站视频)
  18. 安搭Share:中国最神奇的城市:500年出一个天子
  19. 基于PHP扩展的WAF实现
  20. 北邮软工硕士复试笔试科目

热门文章

  1. MSSQL数据库注入(一)
  2. C++11中的chrono库
  3. myeclipse10破解失败过程
  4. html prefetch的原理,HTML5中rel属性的prefetch预加载功能使用
  5. iOS 开发:绘制像素到屏幕
  6. 树莓派入门(一)之树莓派简介
  7. Linux里面Bash的使用方法
  8. 【程序】在STM32单片机上实现基于LwIP 2.1.3协议栈raw API的DHCP服务器,为其他设备分配IPv4地址(20220122版)
  9. 你怎样看待计算机与人类的发展,计算机语言与人类语言的相互渗透
  10. 【深度探讨】如何利用区块链改善公共服务