网络--udp知识(代码片段)

小智RE0 小智RE0     2023-03-10     693

关键词:



UDP的功能比较弱, 仅对IP层进行简单的接口包装, 应用程序可基于UDP;
而TCP可实现的功能,在应用程序层也可实现,那么即可绕开TCP,直接基于IP编程.


TCP对比UDP

协议TCPUDP
是否可靠可靠不可靠[大概率丢包,乱序,重复]
协议流式协议报文协议
形式点对点可广播/组播
/流量控制,拥塞控制无策略

UDP协议:即用户数据报协议, 应用层将数据报文交给UDP之后,UDP啥也不做,直接透析给IP层.


关于TCP与UDP的常用场景;
TCP: http协议, RPC框架,微服务框架;
UDP:DNS域名管理,音视频,流媒体;

DNS使用UDP的需求:

  • DNS作为基本上网时解析域名查找Ip的必须品, 高频率会访问到DNS,而使用TCP的可能会产生延迟问题;
  • 在浏览器也有缓存,即使UDP丢包,也没啥问题.即使无缓存了,也可以重新尝试查找.

HTTP不用UDP的原因是: 一旦丢包就会导致网页解析出现问题,可能出现乱码,重传时也会产生问题.


那么是否可以来降低UDP丢包的概率呢?

  • 一般来说 UDP数据包的长度为 216 -1,作为数据包头部就是用了2个字节(16位)表示包的长度.
    减去数据头大小,剩余都可存放数据: (216-1) - 8[UDP数据头大小] - 20[IP头大小] = 65507字节.

  • UDP包的实际长度为: MTU(1500字节) - 8 [UDP头部大小] - 20[IP头部大小] = 1472字节.

那么就可以限制应用程序发包的时候别超过1472字节,以免发生IP分片,就可能出现丢包,若某个分片丢失,则认为丢包.


已知TCP面向连接,仅可以点对点通信,无法广播通信.
而UDP可广播/组播.

比如你需要和对方通信,但是未知对方的IP地址,此时只能做广播


网络--udp知识(代码片段)

UDP的功能比较弱,仅对IP层进行简单的接口包装,应用程序可基于UDP;而TCP可实现的功能,在应用程序层也可实现,那么即可绕开TCP,直接基于IP编程.TCP对比UDP协议TCPUDP是否可靠可靠不可靠[大概率丢包,乱序,重复]协议流式协议报文协议形... 查看详情

linux网络编程必学!——linux_网络编程_udp(代码片段)

文章目录1.预备知识1.1ip地址1.2端口号2.网络字节序2.1大端模式和小端模式2.2字节序转换函数3.sockaddr结构4.认识UDP协议5.socket编程接口6.代码实现UDP7.UDP协议常见问题7.1udp报文丢失问题7.2udp报文乱序问题7.3udp流量控制问题1.预备知识1... 查看详情

java面试题计算机网络知识点总结(代码片段)

计算机网络知识点总结1、计算机网络体系结构图1.1、传输层TCP和UDP的区别和作用?1.2、面向连接和面向无连接的区别?1.3、基于TCP和UDP的有哪些协议?1.4、TCP和UDP协议的使用场景1.5、TCP协议如何保证可靠传输?1.6... 查看详情

python网络编程tcp/udp(代码片段)

目录网络编程1.网络编程基础知识1.1什么是网络1.2网络协议OSI7层模型TCP/IP模型1.3 LinuxWindows命令行查看网络信息1.4 IP地址1.4.1概念:1.4.2IP地址分类:1.5 端口 1.5.1概念1.6服务器和客户端1.6.1服务端(Server):1.6... 查看详情

网络网络编程(代码片段)

文章目录一、预备知识1.源IP地址、目的IP地址2.端口号(port)PIDvsPORT3.TCP、UDP(1)TCP(2)UDP4.网络字节序函数5.IP地址的表示二、socket编程函数1.socket(1)domain(2)type(3&# 查看详情

字节跳动java面试还要问网络知识?懂一点就好(代码片段)

...六、UDP实现数据上传1、UDP接收端2、UDP发送端3、测试七、网络层的安全问题1、安全问题都有哪些?2、ipidea简介更多详见全球领先的互联网大数据IP资源3、ipidea生成api链接,复制链接即可应用4、生成代理ip操作使用方式一... 查看详情

手把手写c++服务器(14):基于udp测量两台机器之间的网络延迟(代码片段)

前言:网络延迟是网络编程中不可避免的话题,特别是直播、聊天等实时性要求高的应用场景,对网络延迟特别敏感。常用的测量网络延迟工具有基于TCP的qperf等,但是手写一个测量网络延迟的工具可以更好地帮... 查看详情

linux篇第十八篇——网络套接字编程(预备知识+udp套接字的编写)(代码片段)

⭐️本篇博客开始给大家介绍网络编程中的套接字编程——基于UDP协议的套接字和基于TCP的套接字,这篇博客主要介绍基于UDP协议套接字,下一篇介绍基于TCP协议的套接字。在介绍套接字编程之前,我会先给大家介绍... 查看详情

linux篇第十八篇——网络套接字编程(预备知识+udp套接字的编写)(代码片段)

⭐️本篇博客开始给大家介绍网络编程中的套接字编程——基于UDP协议的套接字和基于TCP的套接字,这篇博客主要介绍基于UDP协议套接字,下一篇介绍基于TCP协议的套接字。在介绍套接字编程之前,我会先给大家介绍... 查看详情

软件测试体系学习及构建-网络基础知识了解(代码片段)

网络基础知识了解1计算机网络定义2计算机网络分类3网络层次4OSI七层网络模型5部分层物理设备(举例)6TCP/IP模型6.1各层协议6.2IP协议6.3ICMP协议6.4ARP协议6.5UDP与TCP协议6.6TCP三次握手6.7应用层协议7端口8IP地址8.1含义8.2特点8... 查看详情

udp网络编程(代码片段)

UDP网络通信类DatagramSocket和DatagramPacket实现了基于UDP协议网络程序。UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。DatagramPacket对象封装了U... 查看详情

狂神说java笔记--网络编程部分笔记(代码片段)

传送门==>B站遇见狂神说—网络编程笔记和练习只是跟着视频整理的;有的知识点并没有整理进来.ml1.什么是计算机网络2.网络通信的两个要素3.IP地址4.port:端口5.通信协议6.TCP实现聊天7.TCP文件上传实现8.UDP消息发送9.UDP实现... 查看详情

qttcp/udp网络协议入门实操udp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操&#x 查看详情

qttcp/udp网络协议入门实操udp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操(补充)此文只是最简单 查看详情

qttcp/udp网络协议入门实操udp通讯(代码片段)

...章请点击这里:    QTWidget学习笔记姊妹篇:    QtTCP/UDP网络协议入门实操(一)TCP通讯QtTCP/UDP网络协议入门实操(二)UDP通讯QtTCP/UDP网络协议入门实操(补充)此文只是最简单 查看详情

udp.3.事件选择模型(代码片段)

...crosoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket基于UDP的网络编程还有5种模型&# 查看详情

网络协议_udp详谈(代码片段)

文章目录1.UDP简介2.UDP特点3.UDP首部格式4.UDP伪首部5.UDP面向数据报6.UDP的缓冲区7.基于UDP的应用层协议8.UDP套接字编程1.UDP简介Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,UserDatagramProtocol&#... 查看详情

udp网络程序-发送接收数据(代码片段)

1.udp网络程序-发送数据创建一个基于udp的网络程序流程很简单,具体步骤如下:创建客户端套接字发送/接收数据关闭套接字代码如下:#coding=utf-8fromsocketimport*#1.创建udp套接字udp_socket=socket(AF_INET,SOCK_DGRAM)#2.准备接收方的地址#‘192... 查看详情