结构及传动原理
总结一下,好处有
1. 源端口
2.目的港
3.长度UDP用户数据报的长度,其最小值为8
4. 校验和检测UDP用户数据报在传输过程中是否有错误。如果有错误,则丢弃
TCP/IP分为四层,即应用层、传输层、网络层和网络接口层。
IP数据报由报头和数据部分组成。报头的第一部分是固定长度的20字节,这是所有IP数据报所必需的。报头固定部分之后是长度可变的可选字段。
UDP 是面向消息的,发送方的 UDP 为交给应用程序的消息添加报头,然后将其向下传递到 IP 层。
我的理解是
应用层报文传到传输层,如果使用UDP,会加上UDP头,到达IP层,会加上IP头。
UDP数据包包含(8字节UDP头,我们要发送的实际数据)
UDP头包含(源端口,目的端口,数据包长度,校验和)每部分2个字节。
IP数据报包含(20字节IP数据头,UDP数据包)
数据帧包含(帧头、IP包、帧尾)
UDP 既不合并也不拆分应用层交过来的东西,而是保留这些消息的边界。应用层交给 UDP 的消息长度是多少,UDP 就发多少,也就是一次发一个消息。在 UDP 的接收端,IP 层交过来的 UDP 用户数据报在删除报头后,原封不动地交给上层应用进程。
UDP的优点:
UDP是无连接的,也就是在发送数据前不需要建立连接(当然发送数据结束时也没有需要释放的连接),这样就减少了发送数据前的开销和延迟。
无拥塞控制,传输速度快
UDP头开销为8字节,TCP头开销为20字节。
缺点:传输不可靠。基于UDP协议
常用的UDP协议端口有:
1.DNS:用于域名解析服务,将域名地址转换为IP地址。DNS使用端口53。
2、SNMP:简单网络管理协议,用于管理网络设备,在很多网络设备中都有使用,无连接服务体现了它的优势。
3.TFTP(文件),简单文本传输协议
网络传输方式1.对于无连接类型:
没有建立和断开连接的要求,发送方可以随时自由地发送数据。相反,接收方永远不知道何时何地会收到数据。因此,对于无连接的情况,接收方需要始终确认数据是否已经收到。
在面向无连接的通信中,不需要确认对端是否存在,即使接收端不存在或者不能接受数据,发送端仍然可以发送数据。
2. 对于连接类型:
在发送数据之前,需要在发送主机和接收主机之间建立一条连接通信线路。面向连接就好比打电话,输入对方电话号码拨号后,要等对方拿起电话确认接通后,才能进行真正的通话。接通后再把电话接上,就好比切断电源一样。因此,面向连接模式下,在通信传输前后都要进行建立连接和断开连接的特殊处理。
UDP传输方式
UDP(User)用户数据报协议是一种无连接的传输方式,不提供复杂的控制机制。如果在传输过程中丢失了数据包,UDP 不负责重传。即使出现数据包到达顺序错误,也不负责重传。也没有纠错功能。由于 UDP 是无连接的,所以可以随时发送数据。再加上 UDP 本身的处理简单、高效,所以经常用在以下方面:
1. 总包大小较小的通信(DNS)
2. 视频、音频等多媒体通信(即时通讯)
3. 应用程序通信仅限于局域网等特定网络
4.广播通信(广播、多播)
TCP传输方式
TCP( )传输控制协议是一种面向连接的通讯服务,只有在确认通讯对端存在的情况下才会发送和接收数据,从而控制通讯流量的浪费。TCP在数据传输过程中提供了各种控制功能,当出现丢包时可以进行重发控制,对乱序的数据包也可以进行顺序控制。TCP最大的特点就是可靠传输:
1.应答机制:对方底层收到消息之后,会进行回复。
2、超时重发:向多方发送一份数据,如果对方在一段时间内没有收到,则过一段时间后再次发送给对方,如果没有回复,则认为对方离线。
3、错误校验:如果收到的数据包的序号混乱,TCP会自动进行排序,保证数据的有序性,如果有重复的数据包,那么重复的数据包会被删除。
4、流量控制:当发送的数据达到网卡缓存区域某个上限时,对方就不会一直发送数据,需要等待对方收到数据,如果网卡缓存区域有空间,再发送,保证不会超出网卡缓存。
可靠性协议
(此部分可靠性协议参考论文《基于UDP的可靠文件传输协议设计与实现》)
我们先来设计最重要的可靠性,在给UDP增加报头之前,我们先定义一个8字节的协议报头,里面是2字节的包标识,2字节的发送序号,2字节的文件指针定位和2字节的数据包中的数据大小信息。数据包标志位表示该数据包是文件数据包、确认包还是其他控制包,发送序号用来表示该数据包的顺序信息,指针定位字节数据用来表示数据包中的数据填在文件的哪个位置,最终的大小信息也是在对文件进行读写数据的时候会用到的。
保证协议可靠性的一般流程是(首先只考虑一对一情况下的单向发送):
确认机制
本系统的接收方并不是对所有的数据包都进行确认,在以下几种情况下会用到这种确认机制:
1.收件人收到文件信息包时,必须确认是否已收到。
2.接收方在收到结束包时必须进行确认,然后检测该组内的数据包是否丢失。
3.接收方必须在收到所有数据包后进行确认,才能结束文件传输过程。
总结:
当需要实现可靠传输时使用TCP,由于其面向连接,且具有顺序控制、重传控制等机制,可以为应用程序提供可靠传输。
另一方面,UDP主要用于需要高速传输和实时性的通信和广播通信。我们举个例子,通过IP电话拨打电话,如果使用TCP,如果在传输过程中数据丢失,就会重新发送。这样就会导致无法顺利传输通话方的声音,从而导致无法正常通信。而使用UDP,就不会重新发送。因此,不会出现声音到达时有明显延迟的问题。即使丢失了部分数据,也只会影响一小部分通话。另外,UDP还用于组播和广播通信,而不是TCP。因此,应根据应用的用途,按需使用TCP和UDP。
UDP多用于即时通讯、广播等,TCP多用于文件、数据传输。
需要资料和学习的朋友可以关注+私信;资料;领取资料内容包括;C/C++、Linux内核、Nginx RTSP RTMP HLS 流媒体WebRT CCDN、P2P、K8S、TCP/IP、协程、DPDK等开发,最新的实战项目学习资料,都是BAT架构师十余年的开发经验总结,对大家应该很有帮助,有需要的可以分享给大家。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。