tcpip网络与协议答案
【篇一:网络协议与分析课后习题】
互连的问题是什么?试举例说明。
举例来说,用户a可以通过接入使用以太网技术的校园网,与另外一个使用电话点对点拨号上网的用户b之间进行邮件通信,同时还和一个坐在时速300公里的高铁上的使用wcdma手机进行3g上网的用户c进行qq聊天。但问题的关键在于,这些采用不同技术的异构网络之间存在着很大差异:它们的信道访问方式和数据传送方式不同,其帧格式和物理地址形式也各不相同。
  2、请描述图1-2中,用户a和用户c进行qq聊天似的数据转换和传输过程。
用户a的主机将发送的邮件数据先封装到ip数据包中,在封装到以太帧中,发送到其接入的以太网中,并到达路由器r1。
路由器r1从以太帧中提取ip数据包,根据目标ip地址选择合适的路径,再将其封装成sdh帧,转发到因特网主干网中,经过因特网主干网中若干路由器的选路和转发,到达路由器r3
路由器r3从sdh帧中提取ip数据包,转换成wcdma帧,发送到3g网络中,到达用户c的主机。
用户c的主机提取出ip数据包,最总交付到上层的邮件应用程序,显示给用户c。
3、tcp/ip协议族中的协议主要有哪些?请列举出协议的名称并查其对应的最新rfc编号。
768 udp 用户数据报协议
791 ip internet协议
792 icmp 网际控制报文协议
793 tcp 传输控制协议
826 arp 地址解析协议
959 ftp 文件传输协议
4、画出tcp/ip模型和osi模型之间的层次对应关系,并举例tcp/ip模型中各层次上的协议。tcpip协议pdf
应用层:应用层对应osi模型的上面三层。应用层是用户和网络的接口,tcp/ip简化了
osi的会话层和表示层,将其融合到了应用层,使得通信的层次减少,提高通信的效率。应用层包含了一些常用的、基于传输层的网络应用协议,如telnet、dns、dhcp、ftp、smtp、pop3、http、snmp、rip、bgp等。
传输层:传输层位于ip层之上,为两台主机上的应用程序提供端到端的通信服务。目前,
应用最广泛的传输层协议是tcp和udp。
网络层:网络层又称为网际层、互联网层或ip层,是tcp/ip模型的关键部分。该层主要
完成ip数据包的封装、传输、选路和转发,使其尽可能到达目的主机。该层包括的协议主要有ip、arp、rarp、icmp和igmp,其中,ip协议是网络层的核心。 网络接口层:网络接口层对应osi模型中的物理层和数据链路层,只要底层网络技术和标
准支持数据帧的发送和接收,就可以作为tcp/ip的网络接口,包括前面提到的各种局域网、城域网、广域网技术,如以太网、电话拨号、3g网络等。
  5、例举出某一个具体网络通信过程中的多路复用和多路分解过程,并说明??
多路复用是指多个上层协议复用同一层底层协议数据包
多路分解是指从底层协议数据包解封数据
  第二章
1、简述hdlc是什么?有什么应用?
是什么:
高级数据链路控制(high-level data link control, hdlc)协议是由iso标准化组织制定的一个面向比特的同步数据链路层协议。它是由ibm的同步链路控制(synchronous data link control,sdlc)协议发展而来的。
hdlc协议提供了面向连接和无连接两种服务;它既可以工作在点到点线路方式,也可以工作在点到多点线路方式。hdlc协议不依赖于任何一种字符编码集;数据报文可透明传输;既支持半双工,也支持全双工通信,有较高的数据链路传输效率;所有帧采用了流量控制
和差错控制,传输可靠性高;传输控制与处理分离,具有较大的灵活性。
应用:
广泛应用于数据通信领域、x.25网络、帧中继网络以及作为数据链路层协议连接服务
器到广域网中。
2、简述ppp协议在slip的基础上做了哪些改进?查资料,说明pppoe协议和ppp协议的关系,pppoe的工作流程、帧结构及其应用?
1)改进
slip(串行线路因特网协议)协议是一种简单的帧封装方法,有许多缺陷,比如slip不支持ip地址分配;slip帧中无类型字段,无法同时传输多个上层协议;slip中没有校验字段,链路层上无法检测出由于线路噪声导致的差错。
ppp协议克服了slip协议中的所有缺陷,它支持多种网络协议、多种数据压缩方法、多种身份认证方式、动态地址分配、差错控制和数据加密等。
2)pppoe全称为point to point protocol over ethernet(以太网上的点对点协议),简单地说,就是以太网和ppp结合后的协议,目前广泛应用在adsl接入方式中,用于宽带拨号上网,使连接在以太网上的许多主机共享一条物理线路接入到因特网。
  3、csma/cd和csma/ca分别是什么?有什么区别?
答:csma/cd载波侦听多路访问/冲突检测协议,是一种分布式介质访问控制协议。
其原理如下:
(1) 多个站点平等的接入到共享访问介质(多路访问)。
(2) 每个站在发送帧之前,首先要监听访问介质,只有访问介质空闲时,才允许发
送帧(载波监听)。
(3) 如果两个以上的站同时监听到访问介质空闲并发送帧,则会产生冲突现象。因
此要求每个站在发送数据的同时,仍然继续监听访问介质(冲突检测)。如果出
现冲突,则发送站要发送干扰信号以使所有其它主机都能接收到冲突信号。然
后每一个发送站随机延时一段时间后,再次重新发送帧。
和采用总线拓扑结构的以太网类似,无线局域网中的传输介质也是共享的,需要一定的介质访问控制协议来避免冲突。但是由于在无线传输中有“隐藏站”问题,无线局域网没有采用基于冲突检测的csma/cd技术,而是设计了一种避免冲突的csma/ca(carrier sense multiple access/collision avoidance,载波侦听多路访问/冲突避免)协议。
csma/ca工作原理如下:
(1) 发送站在检测到介质空闲后,先发送一个请求发送帧(rts),帧中存放了它需
要占用介质的时间。
(2) 接收站收到请求rts后,发送准备发送帧(cts),所有站点都会收到该帧,知
道了介质会被占用一段时间。
(3) 发送站发送数据帧。
(4) 接收站确认所收到的数据。
区别
① csma/cd可以一边检测冲突,一边收发数据,一旦检测到冲突,立刻停止数据收发。csma/ca则是必须先检测是否有冲突,得到对端确认后,再发送数据,而不能同时进行,是根据无线网络的特点设计出来的。
② 两者的传输介质不同,csma/cd用于总线式以太网,而csma/ca则用于无线局域网。
③ 检测方式不同,csma/cd通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而csma/ca采用能量检测(ed)、载波检测(cs)和能量载波混合检测三种检测信道空闲的方式。
第三章
1、试描述arp协议软件架构,说明函数间的调用关系。
arp软件初始化是伴随着系统网络模块初始化进行的,网络初始化函数netstart()会调用arp
init()函数初始化arp软件,同时会创建slowtimer(网络计时器)进程,该进程用于维护arp缓存、ip分片队列和ip路由表信息。
arp软件中用于维护arp缓存信息的函数为arptimer(),该函数通过定期遍历arp缓存记录的状态释放超时的arp缓存(通过arpdq()函数),或者重新发送arp请求数据包(通过arpsend()函数)。
当ip模块需要调用netwrite()函数通过网络接口发送或转发ip数据包时,需要调用arpfind()函数查询当前arp缓存中是否存在对应数据包下一跳协议地址的物理地址,若查询失败,应该调用arpalloc()函数创建一个空的arp缓存记录并通过arpsend()函数发送一个arp请求报文。
当网络接口收到一个arp数据包时,网卡驱动会调用数据包复用函数ni_in(),该函数会调用arp输入处理函数arp_in(),arp_in()函数会查询相关的arp缓存记录(arpfind()函数),根据收到的arp报文添加arp缓存记录(arpadd()函数)或者发送获得解析地址的ip数据包(arpqsend()函数)。
2、理解arp报文处理算法,分析其利弊。
arp是一个网络层协议,功能是将网络协议地址转换为物理地址。不妨设为ip转换为mac地址。即arp算法的前提是知道目标ip地址。
arp报文处理算法分为以下几个部分:
1)a要发送数据报文时,会先在arp缓存中。若存在对应项,直接提取即可。(这样可以节省时间)
若arp缓存中没有该ip对应项,则将一个针对特定ip地址的arp请求通过广播发送到本地
网络。
2)本地网络的主机会接收到arp请求报文,会对ip地址进行匹配,若是自己的则把自己的mac作为数据发送arp回应报文给a。并在arp缓存中添加(更新)a的ip的相关项,且在这个过程中若arp缓存中存在a相关的项,收到该请求报文的主机在简单的判断该报文的协议,地址类型,接口层定义等信息之后都会更新自己的arp缓存,更新跟a的ip相关的选项。(不会添加)
即无论arp报文是不是发送给自己的,都更新相关项。这样可以防止突然的硬件地址的改变并节约时间。
另外若是不在本网,则路由器相关接口会相应。
3)arp缓存表采用了老化机制(即设置了生存时间ttl),在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少arp缓存表的长度,加快查询速度。
利:在网络环境安全的情况下,是一种效率很高的处理方法。
弊:arp报文处理算法无条件的将一个看似合法的记录加入到缓冲区中,这种做法是十分危险的,网络攻击者可以构造看似合法的arp请求报文,进行arp欺骗攻击。
  3、简述主机发送ip数据包的过程。
个人觉得
1)数据封装成ip数据包
2)ip数据包在底层没法发送。应该是先运行arp协议得到硬件地址,然后发送到对应的硬件地址的主机。
当ip模块需要调用netwrite()函数通过网络接口发送或转发ip数据包时,需要调用arpfind()函数查询当前arp缓存中是否存在对应数据包下一跳协议地址的物理地址,若查询失败,应该调用arpalloc()函数创建一个空的arp缓存记录并通过arpsend()函数发送一个arp请求报文。(这一段很重要哦)