当前位置:文档之家› 深入理解IP协议

深入理解IP协议

TCP/IP协议网络层1. 网络层的作用?2. 网络层有哪些协议?3. IP数据包的格式?4. IP数据包传输的过程?5. 为什么需要ARP协议?6. ARP协议通信过程是怎么样的?(ARP协议如何控制网络?)7. 数据包的最大值?(分片的地方?分片重组的地方?分片的原则?)8. 数据包在局域网内怎么从一台主机传送到另外一台主机?9. 数据怎么实现跨网段传输?(路由如何实现跨网段传输?)10. 什么是默认网关?11. 代理ARP的作用?12. 数据跨网段传输时在路由器中的具体情形?(所谓的穿过路由是指什么?)13. 数据包路由的过程?14. 为什么需要ICMP协议?(ICMP协议差错控制与TCP差错控制对比)15. 什么是ICMP协议?16. ICMP协议有哪些数据包?(Ping程序的实现?trancerouter程序的实现?)一。

网络层的作用:TCP/IP协议栈的Internet层主要负责处理主机到主机的通信,决定数据包如何交付:是交给网关(路由器)还是交给本地端口。

二。

网络层的协议及作用:网际协议IP:用来路由网际控制报文协议 ICMP:给IP层提供一定的可靠性地址解析协议ARP:反向地址解析协议RARP三。

IP数据包格式:四。

数据包传输的过程首先,传输层将封装好的数据交给Internet层,Internet层收到数据后,将数据封装成一个IP数据包。

五。

为什么需要ARP协议?IP数据包要想继续向下发送,就必须转化为在物理设备上传输的数据帧。

在物理设备上传输数据时,数据包首先是被网卡接收,如果网卡接收到的数据包的硬件地址与本机不符,则直接丢弃,如果相符,再交由上层协议处理的。

而在我们的网络通信中,源主机的应用程序知道目的程序的IP地址和端口号,却不知道目的主机的硬件地址,因此在通讯前必须获得目的主机的硬件地址。

ARP协议就起到这个作用。

六。

ARP协议通信过程?每台机器上都维护着一个ARP缓存表,保存着IP地址到MAC地址的映射主机A要和主机B(192.168.0.1)通信,则先查询主机A中的ARP缓存表,看是否有该记录,如果有,则取出对应MAC地址。

如果缓存中没有该记录,主机A发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个ARP请求广播到本地网段(本地网段的任何一个主机都可能是接受者,所以用广播, 广播的目的MAC地址为:FF:FF:FF:FF:FF:FF)主机B收到广播的ARP请求,发现其中的IP地址(192.168.0.1)与本机相符,发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中,主机A接收ARP应答,提取MAC地址,并且将IP和MAC映射存入ARP缓存。

对于其他主机,虽然这个ARP请求可能与它无关,但ARP协议软件也会把其中的源MAC 地址与源IP地址的映射记录下来,这样做能够有效的减少ARP请求在局域网的发送次数。

ARP欺骗的原理:七。

数据包的最大值:就像前面我们说的,IP数据包要想继续向下发送,就必须转化为在物理设备上传输的数据帧。

对于网络硬件来说,能传输的物理帧的大小是有物理上限的。

这个上限值就是最大传输单元MTU。

{令牌环网4500字节,以太网1500字节}。

当数据包的比MTU大的时候,数据包是无法封装成帧在网络上传输的,当数据包比MTU小的时候,显然又会浪费网络带宽。

因此,IP数据包最理想的大小应该是相连网络的MTU相符。

又因为,不同的网络MTU 可能不同,当数据包需要经过较小MTU的网络时,我们需要将大数据包划分成更小的数据包(分片),以确保他们能通过无力处理大IP数据包的网络。

分片示意图:原始数据包:分片以后数据包段位移0段位移600分片的优点:可以让数据包穿过MTU多变的网络。

缺点:分片后形成的多个IP数据包,每个都单独路由,又因为重组发送在目标主机,且又一个分片丢失,则整个原始IP数据包丢失,增大丢包风险。

八。

数据在局域网中是如何传播的?我们知道,在局域网中,无论是按何种拓扑结构组网,还是按何种方式来处理介质访问权限,任何两个节点之间都存在实际的线路链接。

因此,我们通过ARP协议,得到目标主机的MAC地址后,在数据链路层将IP数据包封装为数据帧,将数据帧发送到本地网段上,即可将数据帧成功的交给目标主机(目标主机网卡收到数据帧后,判断MAC地址是否为本网卡MAC地址)。

九。

数据是怎么样实现跨网段传输的?这就需要路由器通过IP协议来完成此工作了。

下面我们通过一个实际的例子来看:主机A:192.168.1.1 需要和主机B:172.16.1.1通信。

两个主机并不在同一个局域网,并没有实际的物理线路将他们链接起来。

这个时候,我们在两个网段之间增加一个中转点(路由器),路由器上插有多个网卡,可以同时通过网卡E0接入局域网1 (192.168.1.0/24),同时通过网卡E2接入局域网2(172.168.1.0/24)。

这样,局域网1中的机器A(192.168.1.1)要和局域网2中的机器B (172.16.1.1)通信。

A将数据将数据包发送到本网段,路由器的E1口接收数据包,再将其通过E2口发送到网段B,主机B即可成功接收来自主机A的信息了。

即可实现数据的跨网段传输。

十。

什么是默认网关?默认网关是TCP/IP中的一个配置参数,它是处于本地网络上的某个路由器的接口的IP地址。

在有默认网关的情况下,目的地为非本网段的数据包,源主机都发送给默认网关,由默认网关将数据包正确的发送给目标主机。

在上图中,网络192.168.1.0/24的默认网关为192.168.1.254,目的地为非本地网段的数据包,都发送给这个IP对应的Router,再由该Router转发给目的主机。

十一:什么是代理ARP?在没有默认网关的情况下,我们也可以使用代理ARP技术来实现让路由器完成数据的跨网段传输功能。

如果我们将网络中所有主机的目的地都设为本地网络,那么当有要发送给外网IP的数据包时,源主机依然会认为目的地为本网段,而使用目的IP发出ARP请求。

这个时候,对于目的IP不是本网段的ARP请求,连接在本网段的路由器使用自己的MAC地址回复这个ARP 请求。

于是主机A将数据发到本地网段,连在本地网络的路由器接收数据,路由器再将数据转发到正确的目的地。

(其实运行代理ARP的路由器就相当于默认网关)代理ARP的优点:简化了主机的管理(不用再每个主机都单独配置默认网关了)缺点:因为针对每个局域网,外网IP都是很多的,所以:1.在路由器上需要保存一个很大的ARP缓存。

2.每个外网IP都需要发送ARP请求,增大了内网的通信。

在上图中,当没有设置默认网关的时候,主机A发送给主机B的数据包,主机A发送ARP 请求后,由连接E1口的Router 用自己E1口的MAC地址回复该ARP请求。

十二.路由器中数据跨网段传输的具体情形?每个路由器中都存有一张路由表,记录着目标网段和对应的网卡出口的映射。

在上面的例子中,路由器的E1口收到数据包,根据数据包取出对应的目的网段的地址172.16.1.1,然后路由器查找路由表,根据IP地址,找到通过E2口可以达到目标网络。

于是,路由将数据包从E1口读入,穿过路由器,从E2口写出。

十三:路由过程:1.主机A的传输层将数据交给网络层,网络层加上双方IP地址,TTL等IP报头信息,成为IP数据包,网络层将IP数据报交给数据链路层。

2.数据链路层根据IP地址,通过ARP得到MAC,封装为物理帧,通过网卡发出。

3.主机B接收物理帧,根据MAC地址判断:如果目的MAC地址不是本网卡MAC地址,则丢弃;如果是发给自己的,则交给网络层处理。

4.网络层通过IP地址判断:如果是发给自己的,则交给上层协议处理;如果不是发给自己的,则在路由表中查找此IP合理的下一跳地址(即通过哪个网卡发送到下一个网段),并将数据通过内存,从接收数据网卡的IP程序拷贝到需要发送数据网卡的IP程序。

在发送网卡中,IP程序将数据包交给链路层,链路层发送ARP请求,得到下一跳的目的MAC地址,封装为帧,发送。

如此反复,直到IP数据包到达最终正确的接收主机。

十四。

为什么需要ICMP?因为IP协议不提供可靠性且不能保证信息传递,因此发生问题时,通知发送人是很重要的。

(IP协议是一种不可靠的协议,无法进行差错控制。

但IP协议可以借助其他协议来实现这一功能,如ICMP)十五。

什么是ICMP?ICMP:Internet Control Message Protocol 即Internet消息控制协议。

ICMP定义了一套差错报文和控制报文,用于用户主机与路由之间交换不可到达地址、网络拥塞、重定向到更好的路径、报文生命周期超时等信息。

ICMP协议是一种提供(有关阻止数据包传递的)网络故障问题反馈信息的机制。

(针对阻止数据包传递或者网络故障。

)它让TCP等上层协议能够意识到数据包没有送达目的地。

关于ICMP与TCP的差错控制对比?比如主机A到主机B的通信,中间Router r1 到Router r2 的网络连接断了。

通过ICMP,则可以快速诊断出出错原因,并且报告主机。

(差错诊断)TCP的差错控制,主要是体现在,网络断了,收不到确认回复,TCP会一直再次发送数据包,直到收到确认回复。

(差错处理)ICMP提供一组易懂的出错报告信息。

发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。

发送设备随后可根据ICMP报文确定发生错误的类型,确定如何才能更好地重发失败的数据报。

但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。

十六。

ICMP协议有哪些数据包?一个ICMP数据包实际上就是一个(数据部分为ICMP协议数据的)IP数据包。

ICMP头IP头ICMP数据Type Code Checksum如前所述,ICMP主要分为差错报文和控制报文。

差错报文包括:目标不可到达(网络、协议、主机、端口不可到达;禁止分割、目标网络不认识、目标主机不认识等等)、超时、参数问题、重定向(网络重定向、主机重定向等)等等控制报文包括:请求回显(ping请求)、回显应答(ping应答)、地址掩码请求、地址掩码应答等等如上,我们可以发现,同一类型的错误(不可到达)可能有不同种类(网络不可到达、主机不可到达),因此,我们使用type来code两个标志来确定一个具体的错误。

因为需要指出具体是哪个主机上的哪个程序发出的信息没有到达。

因此,每一个ICMP的错误消息,应该包含:1.具体的错误类型(Type/code 决定)2.引发ICMP错误消息的数据包的完全IP包头(哪个主机的数据)3.数据报的前8个字节----UDP报头或者TCP中的port部分(主机上的哪个程序)因此,ICMP错误消息的格式应该为如下:Type(8) Code(8) Checksum(16) Unused(32)Internet Header +64 Bits of Original Data Datagram控制报文因为控制的消息各不相同,所以有所差异。

相关主题