华人澳洲中文论坛

热图推荐

    TCP/IP协定——IP协定

    [复制链接]

    2022-9-1 15:32:10 21 0

    引言
    IP协定是TCP/IP协定族中最中心的协定,一切的TCP,UDP、ICMP以及IGMP等协定都以IP数据报的格局传输。IP协定提供最佳的传输办事,其提供无衔接、不成靠的数据传输。也许这句话读起来很矛盾,为何说是最佳的传输办事,但同时又是不成靠的呢。
    最佳的传输能够以为IP协定会尽所有才能抵达目的主机,若半途产生过错无奈抵达目的主机,也会前往一个ICMP过错报文。收到IP协定前往的过错报文后,本机就知道报文没有胜利抵达目的主机。而接上去的传输牢靠性,即重传,则不属于IP协定的范畴,而是经过TCP协定(或者本人完成的运用层协定)来包管。
    不成靠是指即便传输过程当中泛起过错,IP协定其实不担任处置报文重传的任务,而是交给下层协定。
    无衔接是指IP协定的首部中不保留保护任何对于后续数据报的相干形态信息。
    3.2.IP首部
    IP数据报的格局如图3-1:


    3-1
    版本:IP协定的版本号,IPV4即为4
    首部长度:包孕恣意选项,以32位字为单位的长度。因为是一个4比特字段,可知IP首部最长为16*4字节,即64字节
    办事类型:包罗一个3 bit的优先权子字段(当初已被疏忽),4 bit的TOS子字段和1 bit未用位但必需置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高牢靠性和最小费用。4 bit中只能置其中1 bit。假如一切4 bit均为0,那末就象征着是个别办事。
    总长度:代表IP数据包的总长(包罗其后承载的协定首部与用户数据),因为其有16bit,单位为字节数,可知IP数据报的总长度为65536字节。不外只管IP首部允许其传输如斯大的字节数,以太网封装的链路层也是不允许的,以太网封装的链路层,最大允许承载的IP数据报长度为1500字节。而且主机也要求不克不及接纳超过576字节的数据报。该限度不会影响到TCP协定,由于TCP协定会被动将数据包分段传输。
    标识:独一的标识主机发送的每一个份数据报,通常每发送一份数据报就会加1,在IP分片中起到程序重组的作用。
    标记:标记该报文类型,在IP分片中代表该报文是不是是分片报文
    片偏移:分片报文中指明偏移量
    生存时间TTL:设置数据报能够通过的路由跳数,每通过一个路由则减1,减到0仍为抵达目的主机则抛弃该报文。可解决黑洞路由,报文始终占用带宽的问题。TTL最大值为255.
    协定:即指明IP首部后承载的协定类型,如ICMP/IGMP/TCP/UDP等,前文曾提到该字段。
    首部检修和:仅包罗IP数据报首部的检修和,检修和的计算不包孕其承载的IGMP/ICMP等协定的报文内容。检修和能够检修IP数据报在传输过程当中,首部是不是泛起的过错。RFC 1071包孕了如何计算检修和的办法,感兴致能够理解。
    源IP地址:即前文所述的32位互联网地址,代表报文的始发主机。
    目的ip地址:代表报文的目的主机。
    选项:是一个任选项,能够用作下列畛域,但很少被使用。
    平安和处置限度(具体内容可参考RFC 十一08)记载门路(即报文传输过程当中,让通过的路由器记载其地址)时间戳(即报文传输过程当中,让通过的路由器记载其时间与地址)宽松的源站选路(为数据报选定一系列必需通过的IP地址)严格的源站选路(与宽松的源站选路相似,然而要求只能通过指定的这些地址,不克不及通过其余的地址)很少被使用且并非一切的主机与路由器都完成了这些选项。值得留意的是选项字段必需是32位的整数倍,由于首部长度是32bit的整数倍。若未达到32位的整数倍,能够用0填充。
    3.3.IP路由选路
    IP协定提供的最实质的办事之一就是为报文提供选路功用。
    IP层的路由功用存在两种模式,一种是路由器模式,一种是主机模式。个别来讲,主机是不作为路由器模式使用。
    路由器模式与主机模式的实质区分在于零碎是不是转发从网络口接纳进来的报文。若配置为主机模式,则对目的ip非本机的报文,零碎做抛弃处置,而路由器则会去查找路由表(提供选路信息的转颁发),若查找到则将该报文从对应的网络接口转收回去,转发以前需求更改报文的源目MAC地址,且TTL-1(如前文所述,为了避免黑洞路由占用带宽),若TTL被减为0,则做抛弃处置不转发。两种模式关于目的ip属于本机或者为播送地址(播送地址即前文所述的5类互联网地址中主机号为全1的互联网地址)的报文,数据报就被送到由I P首部协定字段所指定的协定模块进行处置。
    包孕选路信息的路由表中,个别都包孕下列这些信息:
    目的IP地址:能够是一个主机地址(即全掩码的IP地址,主机号包孕非0值,这类称为主机路由),也能够是一个网络地址(即非全掩码的IP地址,主机号为全0,这类称为网络路由)
    下一跳路由器的IP地址或直连IP的网络地址:下一跳路由器的IP地址即报文需求转发到的下一个网络接口的IP地址(这个网络接口与以后的路由器直连);而直连IP的网络地址会间接表明该网段IP地址的路由出口,报文间接从该出口转发(条件是该报文的目的IP必需存在,可经过ARP报文探测验证)。
    标记:指明路由的类型,例如路由是直连网络地址仍是真实的下一跳地址,路由时OSPF协定计算地址仍是BGP协定学习地址等。
    网络接口:为数据报传输指定一个网络接口。
    IP路由选择是逐跳地(hop-by-hop)进行的。从这个路由表信息能够看出,IP其实不知道抵达任何目的的残缺门路(固然,除了那些与主机间接相连的目的)。一切的I P路由选择只为数据报传输提供下一站路由器的IP地址。它假设下一站路由器比发送数据报的主机更接近目的,并且下一站路由器与该主机是间接相连的。
    IP路由选择次要实现下列这些功用:
    搜寻路由表,寻觅能与目的IP地址彻底婚配的表目(网络号和主机号都要婚配)。假如找到,则把报文发送给该表目指定的下一站路由器或间接衔接的网络接口(取决于标记字段的值)。搜寻路由表,寻觅能与目的网络号相婚配的表目。假如找到,则把报文发送给该表目指定的下一站路由器或间接衔接的网络接口(取决于标记字段的值)。目的网络上的一切主机均可以经过这个表目来处理。例如,一个以太网上的一切主机都是经过这类表目进行寻径的。这类搜寻网络的婚配办法必需斟酌可能的子网掩码。对于这一点咱们在下一节中进行探讨。搜寻路由表,寻觅标为“默许(default)”的表目。假如找到,则把报文发送给该表目指定的下一站路由器。假如下面这些步骤都没有胜利,那末该数据报就不克不及被传送。假如不克不及传送的数据报来自本机,那末个别会向生成数据报的运用顺序前往一个“主机不成达”或“网络不成达”(即IP协定隶属ICMP协定报文)的过错。
    图3-2,是我在一个路由器查看路由表的后果:


    3-2
    S代表该路由时动态配置,不是经过协定生成。重点关注标注的三条路由,分别是主机路由、网络路由和默许路由。查表时,优先查找主机路由表,若能婚配中,则报文间接根据查表后果转发。若无奈婚配中,则持续查找网络路由表,若婚配中网络路由则根据查表后果转发。若仍无奈婚配中,查找是不是存在默许路由,存在的话婚配默许路由转发。若一切的都无奈婚配中,那末抛弃该报文。
    举个例子,一个目的IP是200.1.1.2的报文进来,那末间接命中主机路由表,报文间接根据查表后果,往下一跳网络接口IP为192.168.3.1的路由器转发。若进来的报文目的IP为200.1.1.3,那末无奈命中主机路由表,而命中了网络路由表,那末就往下一跳网络接口IP为192.168.4.1的路由器转发。若进来的报文目的IP为100.1.1.2,那末既不克不及命中主机路由表,也不克不及命中网络路由表,只能命中默许路由,那末就往下一跳网络接口IP为101.0.0.1的路由器转发.
    这里有人可能会疑难,显著主机路由能更准确婚配,间接整个使用主机路由就完事了,为何还需求网络路由的存在。这里次要斟酌的是资源容量问题,硬件资源是无限的,一个路由表不成能有限大,能让你包容那末多的主机路由。因此,网络路由是颇有须要的,网络路由的存在大大缩减了对路由表容量的要求。
    值得留意的是,在这个转发过程当中,报文中的目的IP地址一直都未修正(使用源路由选项时会修正,但这类状况很少泛起),一切的路由决策都是经过这个目的IP来决策。
    3.4.子网寻址与子网掩码
    当初一切的主机都要求反对子网寻址(RFC 950规则)。再也不把一个互联网IP地址单纯的认作由网络号与主机号组成,而是将主机号再次进行划分,主机号分为子网号和主机号两部份。这么做的次要益处在于使得互联网地址的使用更为灵敏,由于往往一个网络号后是用不了这么多主机的,例如B类的互联网地址,有16位的主机号,便可以包孕2^16的主机数量,而往往这一个网络号下不会存在这么多主机,存在极大的挥霍。图3-3展现了B类地址的一种子网编址形式。


    3-3
    这类对B类地址的子网划分是对比典型的划分办法,这类形式在利用点分十进制的形式表现IP地址时,能够很容易的区别子网号和主机号。大部份对互联网地址的划分都是对B类互联网地址的划分,其实对C类地址也是能够划分的,只是C类地址的主机号自身只要8位,可用来划分的位数较少。不止C类地址,A类地址也是常常会被划分。
    总结一句,这类划份子网的形式十分灵敏,纷歧定需求8位一个总体的划分,能够经过子网掩码来准确划分到详细的位。例如一个A类地址表现成40.40.40.2/24,那末24就标识前24位属于网络号+子网号,而咱们知道A类地址的网络号只要8位,能够知道该地址的网络号为前8位,即40,而子网号有16位,即40.40,主机号为2。掩码有一种常常使用的表现办法,40.40.40.2/24这个也能够等价表现为40.40.40.2 255.255.255.0,其中255.255.255.0就是咱们所说的真实的子网掩码。
    3.5.ifconfig命令与netstat命令
    既然咱们曾经理解了所谓的IP地址与子网掩码,那末在咱们的主机上能够如何查看本人的网络接口所属的IP地址与相应的子网掩码呢。
    在unix零碎与类unix零碎(linux)上能够使用ifconfig命令查看相应的ip地址,图3-4是我在一个linux零碎上用命令查看的后果


    3-4
    能够看到存在多个网络接口,分别调配有B类地址,C类地址与环回地址,其中netmask即子网掩码,能够发当初这台主机上,子网掩码与互联网地址的网络号位数相反。同时能够发现,各个网络接口的MTU最大值为1500(前文链路层所述,以太网接口的IP数据报MTU规模为46-1500),而环回接口的MTU为65536,是IP首部所能承载的最大数据报字节数。这是由于环回接口接纳的包是由本机收回,不需通过网络传输(前文TCP/IP简介所述,MTU的限度与传输时延相干),因此能够发最大的IP数据报。
    除了ifconfig能够查问本机网络接口的信息,也能够经过netstat -in来查看主机的网络接口与IP地址。
    3.6.小结
    本篇次要讲述了
    IP首部的详细格局,并初步讲述了各个字段的用处。IP的首要功用选路,讲述了选路的原理,即按照报文的目的IP来查路由表,决策终究的报文出口。也大略讲述了主机与路由器在处置报文时的差异。引见了子网以及子网掩码的概念讲述了在零碎上查阅主机网络接口的两条首要命令,ifconfig与netstat

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题28

    帖子39

    积分183

    图文推荐