精华内容
下载资源
问答
  • 虚电路服务与数据报服务的对比

    千次阅读 2018-07-19 22:33:15
    数据报服务 思路 可靠通信应当网络来保证 可靠通讯应当用户主机来保证 连接建立 必须有 不需要 终地址 仅在连接建立阶段使用,每个分组使用短虚电路号 每个分组都有终点...
      虚电路服务 数据报服务
    思路 可靠通信应当由网络来保证

    可靠通讯应当由用户主机来保证

    连接的建立 必须有 不需要
    终地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
    分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
    当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
    分组的顺序 总是按发送顺序到达终点

    到达终点时不一定按发送顺序

    差错处理和流量控制 由网络负责,也可以由用户主机负责 由用户主机负责
    展开全文
  • #UDP协议###1.简介UDP(User Datagram Protocol),用户数据报协议,是OSI(Open System Interconnection,...UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠应...

    131f509c33f61ade6b8471bb5b6aba96.png

    #UDP协议
    ###1.简介

    23011273c7050597cbe7e66a06be68d7.png

    UDP(User Datagram Protocol),用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。常用的UDP端口号有:

    ef5699346b04b3db62ad066ad71ac16f.png

    UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
    UDP在IP报文中的位置如下图所示:

    88a387a2bef815a7f26e06618c5d1353.png

    ###2.UDP使用
    在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的QQ就是使用的UDP协议。

    既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。

    关于UDP协议的最早规范是RFC768,1980年发布。尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP协议的存在价值。因为相对于可靠性来说,这些应用更加注重实际性能,所以为了获得更好的使用效果(例如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(例如,画面质量)。这就是UDP和TCP两种协议的权衡之处。根据不同的环境和特点,两种传输协议都将在今后的网络世界中发挥更加重要的作用。

    ###3.UDP报头
    UDP报头由4个域组成,其中每个域各占用2个字节,如下图所示:

    • UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据包通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。

    • 数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。(对于一次发送多少字节比较好,后面会讲到)

    • UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。

    • 许多链路层协议都提供错误检查,包括流行的以太网协议,也许你想知道为什么UDP也要提供检查和校验。其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
      ###UDP特性

    • UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当UDP它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

    • 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。

    • UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。

    • 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。

    • UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。

    • UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

    ###实例
    ####服务端实现

    import (
    	"os"
    	"fmt"
    	"net"
    )
    
    //处理错误信息
    func checkError(err error) {
    	if err != nil { //指针不为空
    		fmt.Println("Error", err.Error())
    		os.Exit(1)
    	}
    }
    
    func receiveUDPMsg(udpConn *net.UDPConn) {
    	//声明30字节的缓冲区
    	buffer := make([]byte, 30)
    
    	//从udpConn读取客户端发送过来的数据,放在缓冲区中(阻塞方法)
    	//返回值:n=读到的字节长度,remoteAddr=客户端地址,err=错误
    	n, remoteAddr, err := udpConn.ReadFromUDP(buffer) //从udp接收数据
    	if err != nil {
    		fmt.Println("Error", err.Error()) //打印错误信息
    		return
    	}
    
    	fmt.Printf("接收到来自%v的消息:%s", remoteAddr,string(buffer[0:n]))
    
    	//向远程地址中写入数据
    	_, err = udpConn.WriteToUDP([]byte("hao nimei"), remoteAddr)
    	checkError(err)
    }
    
    func main() {
    
    	//解析IP和端口得到UDP地址
    	udp_addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8848")
    	checkError(err)
    
    	//在解析得到的地址上建立UDP监听
    	udpConn, err := net.ListenUDP("udp", udp_addr)
    	defer udpConn.Close() //关闭链接
    	checkError(err)
    
    	//从udpConn中接收UDP消息
    	receiveUDPMsg(udpConn) //收消息
    }
    

    ####客户端实现

    import (
    	"net"
    	"fmt"
    	"os"
    )
    
    func main() {
    	//请求连接服务器,得到连接对象
    	conn,err:=net.Dial("udp","127.0.0.1:8848")
    	defer  conn.Close()
    	if err!=nil{
    		fmt.Println("网络连接出错")
    		os.Exit(1)
    	}
    
    	//向连接中写入消息
    	conn.Write([]byte("hello nimei"))
    	fmt.Println("发送消息","hello nimei")
    
    	//读取代表收取消息(阻塞)
    	buffer := make([]byte, 30)
    	n, err := conn.Read(buffer)
    	if err!=nil{
    		fmt.Println("读取消息错误:err=",err)
    		os.Exit(1)
    	}
    
    	fmt.Println("收到消息",string(buffer[:n]))
    
    }
    展开全文
  • 使用数据报服务的时候, 对比的方面 虚电路服务 数据报服务 思路 可靠通信应当网络来保证 可靠通信应当用户主机来保证 连接的建立 必须有 不要 目的站地址 仅在连接建立阶段使用,每个分组使用短的...

    虚拟电路服务和数据报服务

    • 使用数据报服务的时候,
    对比的方面 虚电路服务 数据报服务
    思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
    连接的建立 必须有 不要
    目的站地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有目的站的全地址
    分组的顺序 总是按照发送顺序到达目的站 到达目的站时不一定按发送顺序
    端到端的差错处理和流量控制 可以由分组交换网负责,还可以由用户主机负责 由用户主机负责
    分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
    当节点出故障时 所有通过出故障的结点的虚电路均不能工作 故障结点可能丢失分组,一些路由可能会发生变化
    展开全文
  • 计算机通信的一个争论焦点--可靠交付应当谁来负责到底是网络还是端系统?...2、数据报服务 二、虚电路服务 这只是原节点和目标节点建立一条逻辑连接。可以不写地址,如从H1到H2逻辑连接是固定了。 如...

    计算机通信的一个争论焦点--可靠交付应当由谁来负责到底是由网络还是端系统?

    实际上是端系统实现的可靠传输而不是网络,网络在比较堵的情况下有可能把数据包丢了,路由器不管,对方接受到的数据丢包了则让发送方重发。

    一、网络层应该向运输层提供什么服务?

    1、虚电路服务

    2、数据报服务

    二、虚电路服务

    这只是原节点和目标节点建立的一条逻辑连接。可以不写地址,如从H1到H2的逻辑连接是固定了。

    如果虚电路的网断开了则H1和H2将无法通信,但是两个通信设备可以建立多个虚电路连接

     

    ① 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而不是真正建立一条物理连接

    ② 需要注意的是电路交换的电话通信是先建立了一条真正的连接,因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。

    ③ 对于虚电路服务,如果目标主机处理不过来可以通知发送主机发停止发送,处理完成后通知其继续发

    三、数据报服务

    数据报写上ip地址,由路由器选择下一次怎么走。更灵活。

    路由器不管数据发送过程是否出错,反正处理不过来就丢,比如路由器的口只能接受20个数据包,来了100个排队站不下则丢失了。

    传送过程走哪条路径也是路由器根据路由表临时决定的。如果某条网线断了可以自动选择另一条路径。

    对于数据报服务

    ① 网络层向上只提供简单灵活的、无连接的尽最大努力交付的数据报服务。 

    ② 网络在发送分组的时候不需要先建立连接,每个分组(IP数据报)独立发送,与其前后的分组无关(不进行编号)

    ③ 网络层不提供服务质量的承诺,即传送的分组可能出现出错、丢失、重复和失序(不按顺序到达终点

    尽最大努力交付

    ① 由于传输网路不提供端到端的可靠传输服务,这就使网络中路由器可以做的比较简单,而且价格低廉(与电信网的交换机相比)

    ② 如果主机(端系统)中的进程之间的通信需要可靠传输那么就由网络主机中的运输层负责可靠交付(包括差错控制,流量控制等)

     现在的计算机使用的就是数据报服务而不是虚电路服务

     更多虚电路和数据报的知识还可以参考:https://blog.csdn.net/21aspnet/article/details/7249522

    展开全文
  • IP数据报

    千次阅读 2018-06-08 17:03:45
    在Internet中它是能使连接到网络上所有设备实现相互通信的一套规则,它提供了一种尽力而为、无连接的数据报交付服务。“尽力而为”含义是不保证IP数据报能成功到达目的地,任何可靠性必须上层(例如TCP)提供...
  • UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠应用层负责。常用的UDP端口号有:53(DNS)、69(TFTP)、161(SNMP),使用UDP协议包括:TFTP、SNMP、NFS
  • 1. 客户-服务器通信基本问题客户和服务器通信是为了...对应用协议来说,可用传输机制有可靠连接字节流类型和不可靠无连接的数据报类型。服务器处理大量客户请求,从而并发是服务器一个基本问题,如何处理
  • 文章目录UDP简介内容(了解)实际应用场所(了解)报文格式端口号长度校验值主要特点无连接不可靠的面向数据报 ...UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠应用
  • 虚拟电路网络与数据报网络

    千次阅读 2018-05-08 17:16:01
    一、网络层服务概述 在传输层每个应用可以被提供使用两个服务:无连接 ...原因就是:在计算机通信中,可靠交付应该谁来负责?是网络核心还是网络边缘端系统? 针对上面问题,有两种重要的服务实现,分...
  • 在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期争论。争论焦点实质就是:在计算机通信中,可靠交付应当谁来负责?是网络还是端系统?
  • TCP是什么传输控制协议(TCP,Transmission Control Protocol)是一种面向连接可靠的、基于字节流传输层通信协议,IETF...TCP假设它可以从较低级别协议获得简单,可能不可靠的数据报服务。 原则上,TC...
  • Socket通信Demo

    2020-02-03 23:49:21
    Java提供了非常强大网络功能...socket可分为无连接的数据报socket和面向连接流模式socket,分别对应与UDP和TCP服务。 无连接的数据报socket 对应是UDP传输协议,它不提供可靠性,在传送数据报之前不需要与接...
  • UDP实现TCP可靠传输

    千次阅读 2018-10-22 11:30:12
    udp与tcp区别 TCP(TransmissionControl Protocol 传输...UDP是(User Datagram Protocol 用户数据报协议),一种无连接、不可靠的、基于数据报的传输层协议,提供面向事务简单不可靠信息传送服务可靠...
  • 数据报服务 可靠通信应当用户主机来保证 因特网网络层向上只提供简单灵活、无连接、尽最大努力交付的数据报服务。 转发和路由选择 转发和路由选择这两个概念很重要,一定要区分开,他们严格定义如下:转发...
  • 解答:面向连接虚电路服务和无连接的数据报服务。 对比方面 虚电路服务 数据报服务 思路 可靠通信应当网络来保证 可靠通信应当用户主机来保证 ...
  • Linux网络通信—Socket(TCP实现) 一、socket概述 ...数据报套接字定义了一种无连接的服务,数据通过相互独立报文进行传输,是无序,并且不保证可靠,无差错。使用数据报协议UDP协议。 原始套接字 原
  • 网络层笔记一、网络层提供服务的方式 引言:在计算机网络领域。网络层应该向传输层提供怎样的服务(“面向连接”还是“无...2网络层提供不可靠交付数据报服务 3虚电路与数据报的主要区别 1、网络层提供可
  • 网络层提供两种服务

    千次阅读 2015-02-20 16:37:08
    争论焦点实质就是:在计算机通信中,可靠交付应当谁来负责?是网络还是端系统? 两种服务:网络层应该向运输层提供怎样服务? §虚电路服务 §数据报服务 因特网:数据报服务 网络层向上只...
  • 网络层不能提供数据报的可靠交付服务。 虚电路:只是逻辑上的链接。 互联网端系统负责可靠交付。 运输层提供可靠性,负责差错处理、流量控制等。 运输层协议的作用范围是:提供进程之间的逻辑通信。 应用进程...
  • 1、UDP是无连接不可靠的数据报协议,UDP常见应用程序是DNS(域名解析系统),NFS(网络文件系统),SNMP(简单网络管理协议); 2、在使用UDP客户服务器程序中,客户不与服务器建立连接,而是只管使用sendto函数...
  • Socket通信机制(学习总结)

    千次阅读 2016-06-28 15:44:34
    一、什么是Socket: 1、Socket是两个程序进行双向数据传输网络通信的端点,一个地址和一个端口来标识...通信链路提供了可靠的,全双工字节流服务。 Socket是两个进程间通信端点,每个socket有两个流:一个
  • UDP 是User Datagram Protocol简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接传输层协议,提供面向事务简单不可靠信息传送服务。它是IETF RFC 768是UDP正式规范。 UDP报头  UDP报头4个...
  • 1.虚电路和数据报服务的对比 对比的方面 虚电路服务 数据报服务 思路 可靠通信应当网络来保证 可靠通信应当用户主机来保证 连接的建立 ...
  • 虚电路服务与数据报服务,下表为二者对比 对比方面 虚电路服务 数据报服务 思路 可靠通信应当网络来保证 可靠通信应当用户主机来保证 连接建立 必须有 不需要 终点地址 仅在连接建立阶段使用...
  • RIP及距离向量算法

    2018-10-09 21:39:00
    虚电路服务与数据报服务的对比 对比的方面 虚电路服务 数据报服务 思路 可靠通信由网络保证 可靠通信由终系统保证 连接的建立 必须有 不需要 终点地址 仅在连接建立阶段使用,每个分组...
  • 网络层

    2013-07-23 21:23:17
    网络层提供俩种服务:虚电路服务,可靠...数据报服务可靠通信由用户主机来保证。因特网采用设计思想是:网络层只向上提供简单灵活、无连接、尽最大努力交付的数据报服务,此时,网络层不提供服务质量保证。
  • [UDP] C#UDP入门|Socket通信|UdpClient通信

    万次阅读 2012-12-16 10:32:53
    UDP 是User Datagram Protocol简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接传输层协议,提供面向事务简单不可靠信息传送服务。它是IETF RFC 768是UDP正式规范。 UDP报头  UDP报头4个...
  • 网络层和传输层

    2020-08-02 18:25:15
    A、让网络负责可靠交付:虚电路服务 B、网络尽最大努力交付:数据报服务 对比方面 虚电路服务 数据报服务 思路 可靠通信应当网络来保证 可靠通信...
  • 数据报服务 思路 可靠通信应当网络来保证 可靠通信应当用户主机来保证 连接建立 必须有 不需要 终点地址 仅在...
  • 4、任何要求的可靠性必须上层来提供(如T C P) 5、I P提供不可靠、无连接的数据报传送服务 6、普通的I P首部长为2 0个字节(分为5个部分,每部分4个字节,每个字节8位) 7、大部分网络设备的MTU都是1500(也就是...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 216
精华内容 86
关键字:

数据报服务的可靠通信由