热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TCP/IP学习day04

第4章ARP:地址解析协议1.背景:当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目

    第4章ARP:地址解析协议

    1.背景:当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的          IP地址。

        因此,在向另外一台主机发送数据时,我们不仅要知道目的主机的IP地址,更要知道该目的主机的硬件地址(MAC地址)。

    2.ARP协议的作用:ARP为IP地址到对应的硬件地址之间提供动态映射(从逻辑Internet地址到对应的物理硬件地址进行翻译),这个过程会自动完成。

    3.过程:  

      a.ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。

      b.目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。

      c.发送数据到该主机。

      一般来说,ARP请求是以广播的形式,而回复是以单播的形式,具体可以抓包看看。

      技术分享

      这张图就是ARP请求和回应的数据格式,具体相关细节参考《TCP/IP协议详解:卷一》

    4.ARP高速缓存:每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。

            在其他主机收到ARP请求时,它们会更新自己的ARP缓存,将这个请求者的IP-----MAC写入自己的缓冲表。

            因此,对于ARP来说,A发送ARP请求后得到B的MAC,A——>B就可以进行,根据上面的话,B就可以不向A发送ARP请求就可以B——>A了。

    5.代理ARP:如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理。

          代理ARP的例子可以详见书上。

    6.免费ARP:在启机或者进行ip重置的时候,主机就会向网络发送一个这个ip的arp请求,当然希望没有人回复这个包,若是有人回复这个包,那么就说明这个ip已经被占          用,这个就是免费arp的过程。

          技术分享

    好了,ARP部分基本概念就是这些,其中还有一些部分不是很明白,比如说在读RP代理时,为什么两条slip分路,一条两端IP地址都有,而作为代理ARP的那一条没有,

    还有,从子网1到13是怎么过来的还不是很清楚。

     技术分享

    把握宏观框架,来日再战细节。

    第5章RARP:逆地址解析协议

    1.背景:具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址。

    2.工作过程:无盘系统向网络中广播一份RARP请求,具有RARP服务器功能的的主机单播reply给该无盘系统,然后通过TFTP协议传送给该无盘系统。它的帧格式和ARP          非常相似。不同的是,ARP服务器通常是在内核内实现的,而RARP的服务器通常是用户空间程序。

    第6章ICMP:Internet控制报文协议

    1.作用:主要用来传递查询和请求信息。

    2.报文格式:

    技术分享

    其中,八位类型和八位代码为如下:

    技术分享

    3.不会产生ICMP报文的情况:

    技术分享

    4.接下来,分别看看差错报文和查询报文的两个例子

      a.ICMP请求地址掩码

      这个例子在《TCP/IP详解:卷一》这本书上可以找到详细的过程,在此我只想说的是,为什么svr4发给sun的包会被bsdi抓到?

      技术分享

      技术分享

      b.ICMP端口不可达错误

        ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该I P首部后面的前8个字节。

        ICMP报文是在主机之间交换的,而不用目的端口号,而每个20字节的UDP数据报则是从一个特定端口(2924)发送到另一个特定端口(8888)。

        在测试ICMP的端口不可达的效果时,只能用udp做实验,tcp是不行的。

    第七章:PING程序

     在这里主要讨论PING的IP记录路由选项

    a.报文格式

    技术分享

    这就是PING利用ICMP记录路由路径的格式,缺点是,最多只能记录九个,而且,它记录的是路由出口的IP,目的主机的IP也会记录,而且,它记录的是一个回路的,来回    都要记录,利用率不高。

    b.TTL

    这个值由发送端来定,譬如,在发送时,主机的TTL为64,但是在目的主机回复的时候,TTL为255,则最后,我们在本地的PING程序得到的是255.

    第8章:Traceroute程序

    1.工作原理:逐跳发送一个UDP的高端口数据包给目的地址,要是没到达目的地址,路由器会返回一个ICMP超时信息,要是到达了目的主机,发现端口不可达,此时目的          主机发送一个”端口不可达”的ICMP报文,这样,我们就知道了数据包在网络中的路径。

    2.相比PING的IP路由记录选项的好处:

      a.并不是所有的路由器都支持IP路由记录。

      b.IP路由记录的个数有限。

      c.但是这样使得记录下来的I P地址翻了一番(一来一回)。

    3.Traceroute的源站选路

      源站选路(source routing)的思想是由发送者指定路由。它可以采用以下两种形式:
      a.严格的源路由选择。发送端指明I P数据报所必须采用的确切路由。如果一个路由器发现
       源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路
         由失败”的I C M P差错报文。
      b.宽松的源站选路。发送端指明了一个数据报经过的I P地址清单,但是数据报在清单上指
         明的任意两个地址之间可以通过其他路由器。

    在具体使用的时候,一个宽松的加上-g选项,在其后列出要经过的IP地址,另外一个是加-G选项。

    宽松源站路由的一个巧妙的应用:把目的地址设为自己,其中必经的一个地址设为原本要到达的地址,这样就可以知道,在通往原来的目的地址上是哪出问题了。

    今天就到这了,有点多,本人菜鸟一个,欢迎各位大神赐教,谢谢!

TCP/IP学习day04


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
author-avatar
mjadhu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有