首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

教你动手写网络协议栈-UDP报文解析

大家可以买本书,或者下面链接获取:https://gitee.com/RiceChen0/e-book [9_.png] UDP理论讲解 UDP报文的交付 用户使用UDP来传输数据是,UDP协议会在数据前加上首部组成...UDP报文,并交给IP协议来发送,而IP层将报文封装在IP数据包中并交给底层发送,在底层中,IP数据报会被封装在数据的数据帧中,可看出一个用户数据要通过UDP报文发送,需要经历三次封装过程,如下图: [...1_.png] 接下来我们我们一一讲解每一层的格式: UDP报文格式 UDP报文成为用户数据报,用户数据报的结构分为两部分:UDP首部+UDP数据区,如下图为UDP报文的结构。...UDP首部很简单,它由四个16位的字段组成,分别指用户数据从哪个端口来,用到哪个端口去,总长度和校验和。其中总长度值为:UDP首部+UDP数据区的长度。...总长度字段:占16bit。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。IP头部+UDP头部+数据区长度。 标志字段:占16bit。用来唯一地标识主机发送的每一份数据报。

1.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

教你动手写UDP协议栈-DNS报文解析

教你动手写UDP协议栈系列文章 序号内容1《教你动手写UDP协议栈-UDP协议栈格式》2《教你动手写UDP协议栈-DHCP报文解析》3《教你动手写UDP协议栈-OTA上位机》4《教你动手写UDP协议栈-...DNS使用TCP和UDP的端口--53。 DNS - 为了可扩展性,DNS名称是分层的。每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。...DNS可以使用UDP与TCP两种协议。这里我们主要以UDP进行分析。...字段说明(此字段只有应答包才有) 字段说明name查询名称,不定长type查询类型class查询类TTL该资源记录的生命周期data length资源数据长度address返回的IP地址,即域名转换的...报文发送 mini_udp_output(&dest_info, dns_packet, (DNS_HDR_SIZE + dns_name_len + DNS_QUERY_SIZE));

86010

速读原著-TCPIP(最大UDP数据报长度)

第11章 UDP:用户数据报协议 11.10 最大UDP数据报长度 理论上,I P数据报的最大长度是6 5 5 3 5字节,这是由I P首部(图3 - 1)1 6比特总长度字段所限制的。...socket API提供了一个可供应用程序调用的函数,以设置接收和发送缓存的长度。对于 UDP socket,这个长度与应用程序可以读写的最大 U D P数据报的长度直接相关。...可能存在一些实现特性(或差错),使I P数据报长度小于6 5 5 3 5字节。 作者使用s o c k程序对不同U D P数据报长度进行了试验。...如果接收到的数据报长度大于应用程序所能处理的长度,那么会发生什么情况呢?不幸的是,该问题的答案取决于编程接口和实现。...它也不通知应用程序从单个UDP数据报中多次进行读取操作。TLI API不丢弃数据。相反,它返回一个标志表明可以获得更多的数据,而应用程序后面的读操作将返回数据报的其余部分。

1.4K20

教你动手写UDP协议栈-CoAP报文解析5

教你动手写UDP协议栈系列文章 序号内容1《教你动手写UDP协议栈-UDP协议栈格式》2《教你动手写UDP协议栈-DHCP报文解析》3《教你动手写UDP协议栈-OTA上位机》4《教你动手写UDP协议栈-...DNS报文解析》4《教你动手写UDP协议栈-CoAP报文解析 背景 CoAP(Constrained Application Protocol),它属于网络协议栈中应用层协议,它使那些被称为“节点”的受限设备能够使用类似的协议与更广泛的互联网进行通信...,支持0~8Byte长度,其他长度保留将来扩张用。...请求码(0.XX) 请求码说明[0.01]GET:用于获取某资源[0.02]POST:用于创建某资源[0.03]PUT:用于更新某资源[0.04]DELETE:用于删除某资源 响应码(2.XX):成功码...CoAP实例: 实例说明:CoAP客户端通过GET方法从Server端获取温度数据。 CoAP请求报文采用CON报文,Server接收到CON报文必须返回一个ACK报文

94410

TCP报文头部(sip协议端口号是tcp还是udp)

今天说一说TCP报文头部(sip协议端口号是tcp还是udp),希望能够帮助大家进步!!!...Scale    时间戳: Timestamps 1 最大报文长度MSS(Maximum Segment Size) 指明自己期望对方发送TCP报文段时那个数据字段的长度。...数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。MSS不宜设的太大也不宜设的太小。...: eg: ①使用xshell连接VMware中的Linux时,当xshell连接时选择ssh复制生成的终端属于会话。...最大报文长度:Maxium Segment Size,MSS,通常1460字节    此最大报文长度是根据帧的数据位最大为1500,帧的数据位包括了网络层的头部和传输层的头部(各20字节固定长度

2K10

Linux数据报文的来龙去脉

作者:gfree.wind@gmail.com 作为网络领域的开发人员,我们经常要与Linux的数据报文打交道,一定要搞清楚数据报文是从何而来,又是如何离去。...而四层协议icmp、udp、tcp也是在inet初始化阶段,调用inet_add_protocol注册。 那么,报文接收的流程如下: 1....通过检查后,将报文发给本机的raw socket。 7. 根据四层协议类型,调用匹配的四层协议处理函数。对于UDP报文来说,就是udp_rcv。 8. 根据源端口和目的端口,确定socket套接字。...调用ip_make_skb,申请一个skb用于发送报文,并填充了IP头。 6. 调用udp_send、ip_send_skb,填充UDP报文头,计算IP头的checksum等。 7....通过以上四个分解的流程图,相信大家对于Linux数据报文的来龙去脉,有了一定的了解。如在文章开头所云,这些流程图都做了必要的简化。在很多步骤都可以进行展开,也涉及了更多细节。

1.7K30

Linux数据报文的来龙去脉

作者:gfree.wind@gmail.com 作为网络领域的开发人员,我们经常要与Linux的数据报文打交道,一定要搞清楚数据报文是从何而来,又是如何离去。...而四层协议icmp、udp、tcp也是在inet初始化阶段,调用inet_add_protocol注册。 那么,报文接收的流程如下: 1....通过检查后,将报文发给本机的raw socket。 7. 根据四层协议类型,调用匹配的四层协议处理函数。对于UDP报文来说,就是udp_rcv。 8. 根据源端口和目的端口,确定socket套接字。...调用ip_make_skb,申请一个skb用于发送报文,并填充了IP头。 6. 调用udp_send、ip_send_skb,填充UDP报文头,计算IP头的checksum等。 7....通过以上四个分解的流程图,相信大家对于Linux数据报文的来龙去脉,有了一定的了解。如在文章开头所云,这些流程图都做了必要的简化。在很多步骤都可以进行展开,也涉及了更多细节。

3.7K91

linux udp编程_linux中socket编程

在前面的文件中,我们介绍了linux网络编程中与IP相关的知识和常用的函数总结,本文针对具体的UDP通信,来详细的介绍UDP通信的使用,包括UDP通信中的点对点通信,多播,广播等。..., 0, (struct sockaddr *)&addr, &addr_size); 粗看上面的代码并没有什么问题,正常的理解就是addr中存在发送者的IP信息,addr_size存放addr数据的长度...这样调用后,我们打印addr中的信息,确实一个错误的IP信息或者0.0.0.0这样的地址信息,这是什么原因呢,在那个男人的中的描述,有如下的一段话 总结来说,就是我们必须初始化addr_size的长度...,如果设置的长度比addr中的长度短,则会发生截断,获取到的IP信息不对,正确的使用方式为: uint32_t addr_size = sizeof(struct sockaddr_in); struct...sockaddr_in addr recvfrom(socket, msg, msg_len, 0, (struct sockaddr *)&addr, &addr_size); 这样我们才能正确的获取

11K10

Linux| |对于UDP的学习

端口 https服务器,使用443端口 操作系统动态分配的端口号 客户端服务器的端口号,这个范围的端口号操作系统可以对其进行分配 查看端口号 less /etc/services //就可以查看Linux...协议 UDP协议端格式 插图:UDP协议端格式 16为UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64KB) 检验和:如果校验和出错,就会直接丢弃(检验的是把首部和数据部分一起都检验...源端口号:在对方回信是选用,不需要时可用全0 目的端口号:在终点交付报时必须要用到 长度UDP用户数据报的长度,其最小值是8(仅有首部) UDP的特点 无连接:直到对端的IP和端口号就直接进行传输,不需要建立连接...,数据传输效率高 面向数据报 应用层交给UDP多长的报文UDP原样发送,既不会拆分也不会合并 例:用UDP传输100个字节的数据 如果发送端调用一次sendto,发送100个字节。...16位的最大长度,也就是说一个UDP能传输的数据的最大长度是64K(包含UDP首部)。

3.1K30

Linux| |对于UDP的学习

端口 https服务器,使用443端口 操作系统动态分配的端口号 客户端服务器的端口号,这个范围的端口号操作系统可以对其进行分配 查看端口号 less /etc/services //就可以查看Linux...16为UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64KB) 检验和:如果校验和出错,就会直接丢弃(检验的是把首部和数据部分一起都检验) 校验值首先在数据发送方通过特殊的算法计算得出...源端口号:在对方回信是选用,不需要时可用全0 目的端口号:在终点交付报时必须要用到 长度UDP用户数据报的长度,其最小值是8(仅有首部) UDP的特点 无连接:直到对端的IP和端口号就直接进行传输,不需要建立连接...,数据传输效率高 面向数据报 应用层交给UDP多长的报文UDP原样发送,既不会拆分也不会合并 例:用UDP传输100个字节的数据 如果发送端调用一次sendto,发送100个字节。...16位的最大长度,也就是说一个UDP能传输的数据的最大长度是64K(包含UDP首部)。

2.8K20
领券