1.选路原理

    在IP搜索路由表分为几个步骤

    1.搜索匹配的主机地址

    2.搜索匹配的网络地址

    3.搜索默认表项.

  IP层进行选路实际是一种选路机制,搜索路由表并决定向哪个网络接口发送分组,区别选路策略,IP层选路把路由放进哪个路由规则,而路由守护程序则选择选路策略

  

  2.路由表

    当执行netstat命令时,会列出路由表 -n用于打印IP地址,在路由表中的Flag标识会有5种标示表明路由状态

  •    U 标示路由可以使用
  • G 标示该路由是一个网关,如果没有标志,表明目的地直接连接
  • H 标示路由是一个主机,目的地是一个完整的地址,如果没有标记,表明是一个网络,目的地是一个网络地址,一个网络号或者与子网号结合
  • D 标示该路由由重定向报文创建
  • M 标示报文被修改

标记G区分了间接路由和直接路由,区别在于发往直接路由的分组不但具有目的地端的IP地址,也具有链路层地址.当分组发往一个间接路由时,IP地址指明最终目的,但链路层指明的是网关

Refent 指的是正在使用路由的活动进程个数,面向连接的协议链接时要固定路由,当主机与slip之间建立Telnet连接时可以看到参数值为1.

use 显示的是通过路由发送的分组数,如果是路由的唯一用户,那么ping程序发送5个分组时,值为5,最后一列(Interface)为本地接口名字

环回接口为lo0,没有设置G标志,指路由不是一个网关,

 默认路由指的是都一个或多个默认路由,UG表明是一个网关

 主机路由表的复杂性取决于主机所在网络的拓扑结构

    1.最简单的情况为主机没有任何网络相连,只能本省通信,只包含环回接口

    2.主机连接局域网,包含环回接口和局域网

  3. 初始化路由表

    每当初始化一个接口时,就为接口自动创建一个直接路由,在对于点对点链路和环回链路,路由到达主机,对于广播接口,路由到达网络

    到达不直接相连的主机或者网络路由必须以某种方式添加到路由表,可以通过运行下列两个命令来添加路由表选项

  

route add default sun
route add slip bsdi

  第三个参数标示目的端,第三个标示网关,最后一个标示路由的度量,route在度量大于0会为路由设置G标志,否则为0时不设置,

  4没有到达目的地的路由

    在没有默认项也没找到匹配项时,路由的选择取决于该IP数据报由主机产生的还是被转发,如果数据报是由本地主机产生,那么发送该数据报的应用程序返回一个差错,或者主机不可达差错.如果是被转发的数据报,那么向主机端发送一份ICMP不可达差错报文

  5.ICMP主机

    当路由器收到一份IP数据报但不能转发时,就会发送一份ICMp差错报,

  6.ICMP重定向差错

    当IP数据报应该发送另一个路由器时,收到数据报的路由器会发送ICMP重定向差错报文交给IP数据报的发送端,只有当主机可以选择路由器发送分组的情况下,才能看到ICMP重定向报文.

    

  1.假定主机发送IP数据报给R!,发现R2是发送该数据的下一站,当数据报发送给R2时,R1检测到他发送的接口与数据报到达接口相同.这样路由器发送重定向报文原始发送端提供线索

  2.R1发送报文给主机,告诉数据报发送R2而不是R1

  重定向一般让具有很少选路信息的主机建立合适的路由表,主机启动时可以只有一个默认表项,一旦发生错误,默认路由器进行重定向,并允许主机对路由表做出改动,ICMP重定向允许主机在选路时不具有智能特性,而把特性放在路由器端中,在ICMP重定向报文中,具有以下格式

  

  ICMP重定向报文的接收者必须查看3个IP地址  

    1.导致重定向的IP地址

    2.发送重定向报文的路由器的IP地址

    3.应该采用的路由器IP地址

  在代码描述中包含以下参数

    1.0:网络重定向

    2.1:主机重定向

    3.2:服务类型和网络重定向

    4 3:服务类型和主机重定向

  在ICMP重定向报文中包含许多规则,报文只能由路由器生成,不能由主机生成,报文为主机使用。

7.ICMP路由器发现报文

  路由器在一份报文中可以通告多个地址,地址数指的是报文包含的地址数,地址大小指的是每个路由器32bit数目,始终为2,生存期指的是通告地址有效的时间(s)

  

  在路由器启动时,定义在所有广播或多播传送接口上发送报文,形式为随机发送,以减少与子网上其他路由器发送冲突的概率,每次通告间隔450s或者600s,一份一份通告报文的默认周期为30min

  使用生命周期域的另一个时机是当路由器的某个接口被关闭时,路由可以在该接口发送最后一个通告报文,并把生命周期设为0

  在主机操作引导一般发送3份路由的请求报文,每3秒发送一次,一旦接收到一个有效的报文,就停止发送.

TCP/IP||IP选路的更多相关文章

  1. http tcp udp ip 间的关系

    首先,我自己梳理一下,其实除了应对以后的笔试,还有需要应对的是自己在编程中对于api的选择,我在满足需求时采取哪种方案更好. 首先,我需要了解的是tcp/ip是一个协议组,有三大层: ip 对应于网络 ...

  2. 005.TCP--拼接TCP头部IP头部,实现TCP三次握手的第一步(Linux,原始套接字)

    一.目的: 自己拼接IP头,TCP头,计算效验和,将生成的报文用原始套接字发送出去. 若使用tcpdump能监听有对方服务器的包回应,则证明TCP报文是正确的! 二.数据结构: TCP首部结构图: s ...

  3. spark Association failed with [akka.tcp:sparkMaster@ip:7077]

    今搭建spark集群, conf/spark-env.sh 配制如下 export SPARK_MASTER_IP=masterexport SPARK_MASTER_PORT=7077export ...

  4. 【前端童鞋看过来!】给大家分享网盘里前端相关书籍,主要是和网络通信(HTTP/TCP/IP)及javascript相关的

    百度云链接:https://pan.baidu.com/s/1kUPdf5H(无密码) 截图: <HTTP权威指南> [豆瓣书评]:此书第一部分是HTTP的概略,如果你没有时间,通读第一部 ...

  5. DNS,TCP,IP,HTTP,socket,Servlet概念整理

    DNS,TCP,IP,HTTP,socket,Servlet概念整理   常见的协议虽然很容易理解,但是看了之后过一段时间不看还是容易忘,笔记如下,比较零碎,勉强供各位复习.如有错误欢迎指正.   D ...

  6. 三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层

    这篇文章主要是来做(da)推(guang)介(gao)的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会 ...

  7. 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述

    我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...

  8. 三十天学不会TCP,UDP/IP网络编程-ARP -- 连接MAC和IP

    继续来做(da)推(guang)介(gao)我自己的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,目前已完成 ...

  9. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

随机推荐

  1. jmeter日期处理beanshell(2)

    import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.text.P ...

  2. @COCI 2016/2017 Round 3@ Meksikanac

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 在平面直角坐标系中,给定一个左下角为 (0, 0),右上角为 ( ...

  3. Android 动态设置控件获取焦点

    之前写过一篇博客,简单的介绍了Android 隐藏EditText的焦点,之所以要隐藏EditText的焦点,是因为当应用在第一次进入某个Activity时,由于该页面中的EditText获取了焦点, ...

  4. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  5. DispatcherTimer 应用实例

    public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //实例化 Dispat ...

  6. 建立一个Web项目及一些错误解决办法

    培训之前,先自学一波,写一个从Hello World,然后记录一下每天学习Java Web的过程:东西很多,有用的会写大量解释,希望能最终学完 然后搞定这门语言吧. 1.配置tomacat:点击win ...

  7. POJ2406 Power Strings 题解 KMP算法

    题目链接:http://poj.org/problem?id=2406 题目大意:给你一个字符串 \(t\) ,\(t\) 可以表示为另一个小字符串循环了 \(K\) 了,求最大的循环次数 \(K\) ...

  8. codeforces 1214

    D 比赛的时候居然看漏了条件... 若在(x, y)格子,那么只能移动到(x+1, y)或(x, y+1) 这样的话就好做了,直接dp,然后统计每一种路径长度经过的点数. #include<cs ...

  9. Centos下添加用户到用户组

    将一个用户添加到用户组中,千万不能直接用: usermod -G groupA 这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员. 应该用 加上 -a 选项: usermod - ...

  10. -Bash: Unzip: Command Not Found解决方法 安装unzip

    利用unzip命令解压缩的时候,出现-bash: unzip: command not found的错误. unzip——命令没有找到,其原因肯定是没有安装unzip.利用一句命令就可以解决了. 命令 ...