精华内容
下载资源
问答
  • 当数据报经过N个不同类型的网络后会因其MTU不足够大 而无法将整个数据报传过去。所以将数据报分段 到达目的之后重组。 我想知道 这些IP数据报是根据什么分成段 到达目的之后又依据什么将零散的段重组呢。 (传闻是...
    当数据报经过N个不同类型的网络后会因其MTU不足够大 而无法将整个数据报传过去。所以将数据报分段 到达目的之后重组。
    
    我想知道 这些IP数据报是根据什么分成段 到达目的之后又依据什么将零散的段重组呢。
    
    (传闻是有几个标志标识了哪个地方是IP首部或TCP首部这些的。 )


    ip数据包包头内部有一个16位的标识来区分每一个ip数据包,同时3位的标志位中有一位来表示“更多分片”,
    也就是说这一位置位的时候表示该ip包被分片了并且当前这一片还不是最后一片,如果是最后一片的话就是置0的。
    还有一个13位的偏移字段表示当前ip包(如果是分片)在原包中所处的偏移位置。对了,分片的每个ip包的长度字段表示的是当前分片的长度。
    因此有了上面这些信息就可以在最后一片到达目的主机的时候能够将所有的分片进行重组。ip分片的时候是与上层协议(TCP)不相关的。
    流程如下:ip包在途经MTU比较小的路线的时候会将ip包进行分片,理论上除了最后一片外前面的所有分片都是将送往的链路的MTU大小,
    然后每一个分片的ip标识以及源目的ip等都相同,但除了最后一个分片外标志位中的“更多分片”字段位被置为1,并且偏移字段和长度字段也被填写为适当的值。
    当分片到达目的主机后再根据上面的这些信息进行重组。

    展开全文
  • 1、 比较虚电路服务和数据报服务的优缺点。 答:数据服务的特点: 1、主机...数据传送完毕,释放虚链路 优缺点: 1、报文短时,数据报既迅速又经济,虚电路太浪费网络资源 2、在进行存储转发时,数据报需要更多...

    1、 比较虚电路服务和数据报服务的优缺点。 答:数据服务的特点: 1、主机随时可发送数据 2、每个分组独立选择路由 3、分组不一定按顺序到达目的主机 4、某个分组可能丢失(不可靠服务) 虚电路服务的特点: 1、选拨号建立电路,然后再通话 2、分组都必须沿着虚电路传送,数据传送完毕后,释放虚链路 优缺点: 1、当报文短时,数据报既迅速又经济,虚电路太浪费网络资源 2、在进行存储转发时,数据报需要更多开销携带完整的地址信息,虚电路只需携带需电路号 3、数据报只承担端到端的差错,虚电路保证分组按顺序交付,不丢失,不重发 4、虚电路对网络流量控制比数据报更容易 试从多个方面比较虚电路和数据报这两种服务的优缺点。 答:数据报服务的优缺点如下: ①通信前不用建立连接:主机只要想发送数据就随时可发送。 ②每个分组要用目的地址。 ③每个分组独立地选择路由。 ④数据报不能保证按发送顺序交付给目的站。 ⑤主机负责端到端的差错处理。 ⑥主机负责端到端的流量控制。 虚电路服务的优缺点如下: ①通信前要通过虚呼叫建立虚电路,通信结束后还要释放虚电路: ②仅在建立连接时要用目的地址,连接建立后用虚电路号。 ③所有分组按同一路由达到目的,因此,它能保证按发送顺序交付给目的站。 ④路由故障时,经过该路由器的所有虚电路均不能工作,因而,必须在重建虚电路后,才可保证通信正常进行。 ⑤通信子网负责端到端的差错处理。 ⑥通信子网负责端到端的流量控制。

     

     

    HDLC(High-level Data Link Control),高级数据链路控制。前身是面向比特的规程SDLC,后经ISO修改才称为HDLC的。在CISCO的路由器中,HDLC是默认的传输协议,与普通的HDLC的结构相似,为此,我们就以普通的HDLC对其结构进行分析。 HDLC的帧结构 数据链路层的数据是以帧为单位的。一个帧的结构具有固定的格式。标志字段F(Flag ),放在帧的开头和结尾,作为帧的边界,用于解决比特同步的问题。帧校验序列FCS(Frame Check Sequence)字段共占16bit,它采用的生成多项式是CRC-CCITT。所检验的范围是从地址字段的第1个比特起,到信息字段的最末1个为止。控制字段C共8bit。HDLC的许多重要功能都要靠控制字段来实现。 PPP的帧格式和HDLC的相似。与HDLC不同的是多了2个字节的协议字段。当协议字段为0x0021时,信息字段就是IP数据报。若为0xC021,则信息字段是链路控制数据,而0x8021表示这是网络控制数据。PPP不提供使用序号和确认的可靠传输。PPP工作在网络层与数据链路层中,包括NCP 与LCP协议。NCP是在第三层用于局域网中的多协议封装,LCP用于第二层的广域网链路控制协议。 从两者的结构上来看,PPP有比HDLC更复杂的控制机制,处理的时候需要的时间相对要多些。从通信的连接来看,HDLC在连接与断开时采取的是双方握手协议;PPP使用的是一个鉴别认证机制,双方通过连接,然后协商,身份的鉴别,LCP的配置,打开通信到通信结束,完成整个过程。所以在整个测试中,PPP在链路的连接到数据的处理,所耗费的时间都要比HDLC要多。特别在大行的数据传输时,更能体现出HDLC的传输速度。但PPP在安全方面却比 HDLC要更胜一筹,其身份验证可以根据安全的要求对所有接收的数据进行检测,通过鉴定后才会把数据接收转发否则丢弃掉。因此,对两协议的选用可视传输的要求来考虑。(以下分别是两协议的通信链路连接状态图)

    转载于:https://www.cnblogs.com/warlock/archive/2010/07/19/1780417.html

    展开全文
  • 一、数据帧封装TCP封装(四层)主机建立了到达目的地的TCP连接,便开始对应用层数据进行封装。主机A会对待发送的应用数据首先执行加密和压缩等相关操作,之后进行传输层封装。 Web应用是基于传输层的TCP协议传输...

    数据转发过程概述

    数据包在相同网段内或不同网段之间转发所依据的原理基本一致

    a71f83cfb81a0eedd4fbe0ddd12f8afd.png

    一、数据帧封装

    TCP封装(四层)

    当主机建立了到达目的地的TCP连接后,便开始对应用层数据进行封装。

    5faf63685edacadf80c9bfe174350eca.png

    主机A会对待发送的应用数据首先执行加密压缩等相关操作,之后进行传输层封装。 Web应用是基于传输层的TCP协议传输数据的。

    IP封装(三层)

    主机A完成传输层封装后,一般会进行网络层数据封装,在使用IP进行封装时,需要明确IP报文的源和目的地址。如果IP报文的大小大于网络的最大传输单元(MTU),则该报文有可能在传输过程中被分片

    e84e62d83f043d55a58ee27b4ead5349.png

    查找路由

    主机A必须要拥有到达目的地的路由

    每个主机都会独自维护各自的路由表项。主机A在发送数据前需要先检查是否能够到达目的端,这个过程是通过查找路由来完成的。

    4375774d66f8e497bbef35eca64fe6b7.png

    ARP请求

    通过ARP缓存表找到下一跳的MAC地址

    如果表项里没有下一跳的MAC地址,主机A会发送ARP请求

    b63439fc8155fed7c630029ad417e13c.png

    以太网封装(二层)

    主机A在链路层封装数据帧时,会遵循IEEE 802.3Etherne_II标准,Ethernet_II帧头中的类型字段填充为0x0800,以表示网络层使用的是IP协议。源MAC地址为主机A的MAC地址,目的MAC地址为网关路由器E0/0接口的MAC地址。

    ef46e64b3863dccddffe79c52855fe0b.png

    二、数据帧解封装

    RTB以服务器A的MAC地址作为目的MAC继续转发。

    服务器A接收到该数据帧后,发现目的MAC自己的MAC,于是会继续处理该数据帧

    f7a718b915a7ac2d76af54c6f1cee15b.png

    服务器A检查数据包的目的IP地址,发现目的IP自己的IP地址相同。

    服务器A剥掉数据包的IP头部后会送往上层协议TCP继续进行处理。

    aa454f827c99d87ca8d878a22e30012b.png

    服务器A检查TCP头部的目的端口,然后将数据段发送给应用层的HTTP协议进行处理。

    95f776e68530b592397cafacbdb33f8c.png
    展开全文
  • TCP任何保证可靠的数据传输?

    千次阅读 2016-12-06 21:13:20
    什么是可靠,所谓的可靠就是说发送方发送的数据到达接收方的时候不会发生...当到达目的主机,在目的主机的网络层进行对收到的数据报进行拼装,发现这个报文段缺少了一些部分不完整,所以在目的主机的网络层就是吧这个

    什么是可靠,所谓的可靠就是说发送方发送的数据到达接收方的时候不会发生错误,不会丢失,不会乱序。

    在网络层表现看来是这样的,当从运输层传下报文段之后,封装成ip数据报,然后经过复杂的网络传输到目的主机,在传输过程中可能在这个复杂的大网络中发生数据报的分片,丢失的情况。当到达目的主机后,在目的主机的网络层进行对收到的数据报进行拼装,发现这个报文段缺少了一些部分不完整,所以在目的主机的网络层就是吧这个报恩段丢弃,传送给源主机一个ICMP报文段请求源主机重新发送这个报文。当这个报文安全无误的到达目的主机的网络层之后然后去掉首部直接上相交付给运输层的接受缓存中。但是在向上交付报文段的时候可能接受缓存满了导致这个报文段丢弃或者在硬件传出过程中发生了比特差错这也不是不可能的。为了避免数据不可抛传输,那么在运输层就要对数据的可靠性做一个保证。

     

    在运输层分为两个协议UDP和TCP,UDP是一个不可靠的协议,也就是说他仅仅提供复用和分用的功能但是对于比特差错或者丢弃不做任何处理。但是TCP是一个面向连接的协议,他能够保证从源主机交付的数据正确无误的传输到目的主机的对应的进程中。所以接下来将要介绍的是TCP是如何保证数据可靠的传输的。

     

    1.TCP是怎么保证没有比特差错的?

    为了保证接受的报文段是没有比特差错的,TCP中引入了这三个机制:

    ①差错检测:也就是引入校验和。在TCP的首部中有一个占据16为的空间用来放置校验和的结果。在源主机的运输层开始接受到一个从应用进程传下来的数据的时候,会将他封装成一个报文段,加上至少20字节的首部。同时会将这个报文段首部和数据还有伪首部部分一起根据取反码和的形式计算出校验和添加到首部中。传输到目的主机的运输层之后,会计算这个通过这个校验和检查是否存在比特差错。

    控制消息:当检测到发生比特差错之后要对发送发进行信息的反馈使得能够根据返回决定是否进行重传。一般理论上会有两种返回一种是肯定的反馈ACK,在TCP中反馈信息是接收到的分许中最后一个字节序号的下一位。一种是否定反馈,但是为了减少网络中的注入分组的数量减少负担取而代之的是通过发送上一个分组的确认信息表明当下这个分组没有正确的接收。

    重传:如果接收方接收到的是一个换掉的ACK或者上一个分组的确认之后意味着要再发一遍这个分许。怎么发后面将分析到。

     

     

    2.TCP是怎么保证重传的?

    发送发重传之后,接收方值怎么知道这个分组是重传的分许,或者说接收方怎么知道我是不是已经接受了这个分组的?引入了序列化的机制。由于TCP是面向字节流的协议,所以会为每一个字节编制一个序号。同时在TCP首部中也会有这个序号字段。但是由于一个分组中包含了多个字节,所以说这个TCP首部中的序号是分组中发送多个字节的第一个字节的序号值。

     

    3.TCP是怎么处理分组丢弃的问题的?

    以上这几个问题是基于分组没有丢弃但是仅仅发生比特差错的时候。如果发生比特差错怎么办。协议张引入了定时器这个机制。也就是说在某一时刻设置一个定时器,只要在定时器设置的时间内没有收到对应分组的确认信息,那么就会重传对应的一个或者几个分组。

     

     

    4.TCP是如何提高传输性能的?

    在TCP协议中为了提高传输性能是不可能一次只能发送一个分组介绍到这个分组确认之后在发送下一个分组的,因为这样对于信道的利用效率会大大减少,所以为了提高信道的利用率一般一次发送多个分组,并且将这几个分组为单位开始设置定时器。

    同时也引入了快速重传的机制。

     

    5.TCP为什么引入接受缓存这个数据结构?

     

    如果没有接受缓存的话,或者说只有一个缓存的话,为了保证接受的数据是按顺序传输的,所以如果位于x序号之后的序号分组先到达目的主机的运输层的话必然丢弃,这样的话将在重传上花费很大的开销,所以一般如果有过大的序号达到接收端,那么会按照序号缓存起来等待之前的序号分许到达,然后一并交付到应用进程。

     

     

    TCP可靠传输的详细过程:

     

    发送发伪代码:

    NextSeqNum = InitialSeqNumber
    SendBase = InitiSeqNumber
    
    loop(forever){
    	switch(event){
    
    		event: 接收来自应用程序产生的数据data放入到发送缓存中
    				if(定时器没有开启)
    					start_timer
    				将包装后的报文段交付给网络层形成IP数据报
    				NextSeqNum = NextSeqNum + length(data)
    		break;
    
    		event:如果定时器超时
    			  发送那个没有确认的序号最小的分组
    			  start_timer
    		break;
    
    		event:接收到ACK,将ACK中的确认号赋给y
    			  if(y > SendBase){
    			  	SendBase = y;
    			  	if(目前还有尚未确认的部分){
    			  		start_timer
    			  	}
    			  }else {
    			  	开始对y进行计数
    			  	if(发送ACK的确认号为y的个数为3个的时候){
    			  		重新发送序号为y的哪一个分组
    			  	}
    			  }
    		break;
    	}
    }


    接收方:

    若分组在之前未被接收过,则被缓存并且发送ACK(这个ACK是上一个完整交付了的最后一个分组的序号);如果检查序号接受过则丢弃。

    若该分组的序号等于接收窗口的继续号,则该分组以及以前缓存的序号连续的分组(交付给上层)。发送ACK。

    其他情况,忽略该分组。

     

     

     

     

     

     

    展开全文
  • UDP不保证UDP数据报到达其最终目的地,不保证各个数据报的先后顺序跨越网络后保持不变,也不保证每个数据报到达一次。(可与TCP进行对比) TCP传输控制协议 TCP提供客户与服务器之间的连接,并提供了可靠性。...
  • 网络部分题集

    千次阅读 2018-08-13 21:45:44
    假设TTL的初始值为3,两台主机之间存在4个路由器,则该数据包到达目的的TTL的值为?数据包无法送达 生存时间(TTL):长度8比特, 最大 值为255。 IP包进行传送时,先会对该字段赋予某个特定的值。用来控制...
  • 多播路由器在转发分组时,需要把收到的分组复制成多个副本,分别下发到下面的R1R2路由器,分组到达目的局域网时,由于局域网具有硬件多播功能,因此不需要复制分组,多播成员就会收到分组。 多播数据报 目的地址不...
  • 计算机网络复习题

    2014-12-29 19:01:35
    网络层:分组(包)packet, 或IP 分组,IP 数据报 运输层:TCP:报文段segment, UDP:用户数据报user datagram 3. 网络体系结构中各层的主要设备 物理层:中继器(转发器)repeater、集线器hub(扩大冲突域)、网卡...
  • UDP是面向无连接的用户数据报协议,在传输前不需要先建立连接,且UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,目的主机的传输层收到UDP报文,不需要给出任何确认信息,也就是说,报文发送之后,...
  • 性能监视器可以通过图像来形象地观察网络的性能数据,或者将数据保存在日志文件中以备日后分析用、或者生成有关网络性能的报表、或者系统性能超过变化范围时激活相应的警报向网络管理员报警。 性能监视器的功能 ...
  • 问题4-18:路由表中只给出到目的网络的下一跳路由器的IP地址,然后在下一个路由器的路由表中再给出再下一跳的路由器的IP地址,最后才能到达目的网络进行直接交付。采用这样的方法有什么好处? 问题4-19:链路层广播...
  • 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。 (3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些...
  • 所需要的输出电路空闲时,再将该文发向接收交换机或终端,它以“存储——转发”方式在网内传输数据。报文交换的 优点是中继电路利用率高,可以多个用户同时在一条线路上传送,可实现不同速率、不同规程的终端间...
  • 问题3-2:当数据链路层使用PPP协议或CSMA/CD协议时,既然不保证可靠传输,那么为什么对所传输的帧进行差错检验呢? 问题3-3:既然现在因特网使用得最多的数据链路层协议并不保证可靠传输,那么为什么我们在数据链路...
  • 网络爬虫Spider

    2010-02-03 00:41:35
    WebCrawler的主要功能是自动从Internet上的各Web 站点抓取Web文档并从该Web文档中提取一些信息来描述该Web文档,为搜索引擎站点的数据库服务器追加和更新数据提供原始数据,这些数据包括标题、长度、文件建立时间、...
  • ARP地址解析协议

    千次阅读 2017-03-05 16:02:34
    所以当数据报到达目标网段,需要知道目的主机的MAC地址才能通信。 到达目的网段,源主机发出ARP请求,询问目的主机的MAC地址是多少,并将这个请求广播到本网段,目的主机以太网地址填写FF:FF:FF:FF:FF:
  • 分组到达目的网络后,再利用主机号host-id 将数据报直接交付给目的主机。 按照整数字节划分 net-id 字段和 host-id 字段,就可以使路由器在收到一个分组时能够更快地将地址中的网络号提取出来。
  • 首先看看以下这段话:路由器把需到达网络网络号保存在路由表中,一个IP数据报被路由器接收到时,路由器先从该IP数据报中取出目的站点的IP地址,根据IP地址计算出目的站点所在网络网络号,然后用网络号去查找...
  • 首先看看以下这段话:路由器把需到达网络网络号保存在路由表中,一个IP数据报被路由器接收到时,路由器先从该IP数据报中取出目的站点的IP地址,根据IP地址计算出目的站点所在网络网络号,然后用网络号去查找...
  • 这些技术提供了控制网络数据流 量的附加功能。这些功能特性会使读者能够加强进出网络报文的附加功能。通过智能地对数 据本身进行操作,例如,可以操纵 I P报文中的源和目的地址,或者给某种通信报文分配较多 的...
  • UDP不保证UDP数据报到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报到达一次。UDP是一个简单、不可靠、无连接的协议,而TCP是一个复杂、可靠、面向连接的协议。 TCP提供确认...
  • 网络层(IP)出现很多问题,比如丢包 乱序 重复等。 TCP怎么确保可靠性呢? 1:应用数据被分割成TCP认为最合适发送的数据块 2:TCP发出一个段,...5:TCP报文段作为IP数据报来传输,IP数据报到达可能会失序,因此TC
  • 分类的IP地址(五)

    千次阅读 2014-04-17 00:25:33
    IP层转发分组流程 1、在路由表中,对每一条路由最主要的是两个信息:(目的网络地址,下一跳地址)。并且这个思路是这样的: ...2、路由器收到一个待转发的数据报,在从路由表得出下一跳路由器的IP地址,不是
  • 多播 Multicast Socket示例

    热门讨论 2007-10-05 16:18:02
    相对于极度消耗网络带宽的广播来说(广播只能在intranet内广播),UDP组播有了很大的优化,只有终端加入到了一个广播组,UDP组播的数据才能被他接受到. UDP组播是采用的无连接,数据报的连接方式,所以是不可靠的....
  • 多播 Multicast Socket

    2007-08-06 16:39:05
    相对于极度消耗网络带宽的广播来说(广播只能在intranet内广播),UDP组播有了很大的优化,只有终端加入到了一个广播组,UDP组播的数据才能被他接受到. UDP组播是采用的无连接,数据报的连接方式,所以是不可靠的....
  • 制来调整MTU值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作. 鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时. 最好将UDP的数据长度控件在548字节(576-8-20)以内. ...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

当数据报到达目的网络后