以太网UDP协议讲解
一.TCP/IP参考模型
1.概述
TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。ARPANET是由美国国防部DoD(U.S.Department of Defense)赞助的研究网络。逐渐地它通过租用的电话线连结了数百所大学和政府部门。当无线网络和卫星出现以后,现有的协议在和它们相连的时候出现了问题,所以需要一种新的参考体系结构。这个体系结构在它的两个主要协议出现以后,被称为TCP/IP参考模型(TCP/IP reference model);
2.四层模型
TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层(主机到主机)、传输层、和应用层。
- 应用层
应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:用户自己的数据传输(可带私有协议+数据),FTP、Telnet、DNS、SMTP等. - 传输层
传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP). - 网际互联层
网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。 - 网络接入层(即主机-网络层)
网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。
二.传输协议打包格式
1.以太网帧格式link.
前导码和帧开始符
一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。7个8‘H’55 + 1个8’HD5。
报头
包含源地址和目标地址的MAC地址,以太类型字段和可选的用于说明VLAN成员关系和传输优先级的IEEE 802.1Q VLAN 标签;
以太网类型可参考以下链接的详细讲解:链接: link.
基于UDP协议的话主要用到IPV4(0X0800);
报头格式为:6byte目标mac地址+6byte源mac地址+IPV4(0X0800)
负载
负载数据长度为46-1500byte范围,由上层IP打包的数据报数据(IP数据报头+IP上层打包的传输数据);
帧校验码
帧校验码是一个32位循环冗余校验码,以便验证帧数据是否被损坏
帧间距
当一个帧发送出去之后,发送方在下次发送帧之前,需要再发送至少12个octet的空闲线路状态码。
2.IPV4数据报格式 link.
版本(Version)
版本字段占4bit,通信双方使用的版本必须一致。对于IPv4,字段的值是4。
首部长度(Internet Header Length, IHL)
占4bit,首部长度说明首部有多少32位字(4字节)。由于IPv4首部可能包含数目不定的选项,这个字段也用来确定数据的偏移量。这个字段的最小值是5(二进制0101),相当于5*4=20字节(RFC 791),最大十进制值是15。
区分服务(Differentiated Services,DS)
占6bit,最初被定义为服务类型字段,实际上并未使用,但1998年被IETF重定义为区分服务RFC 2474。只有在使用区分服务时,这个字段才起作用,在一般的情况 下都不使用这个字段。例如需要实时数据流的技术会应用这个字段,一个例子是VoIP。
显式拥塞通告( Explicit Congestion Notification,ECN)
在RFC 3168中定义,允许在不丢弃报文的同时通知对方网络拥塞的发生。ECN是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。
全长(Total Length)
这个16位字段定义了报文总长,包含首部和数据,单位为字节。这个字段的最小值是20(20字节首部+0字节数据),最大值是216-1=65,535。IP规定所有主机都必须支持最小576字节的报文,这是假定上层数据长度512字节,加上最长IP首部60字节,加上4字节富裕量,得出576字节,但大多数现代主机支持更大的报文。当下层的数据链路协议的最大传输单元(MTU)字段的值小于IP报文长度时,报文就必须被分片,详细见下个标题。
标识符(Identification)
占16位,这个字段主要被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。每产生一个数据报,计数器加1,并赋值给此字段。一些实验性的工作建议将此字段用于其它目的,例如增加报文跟踪信息以协助探测伪造的源地址。[7]
标志 (Flags)
这个3位字段用于控制和识别分片,它们是:
位0:保留,必须为0;
位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
如果DF标志被设置为1,但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。
当一个报文被分片,除了最后一片外的所有分片都设置MF为1。最后一个片段具有非零片段偏移字段,将其与未分片数据包区分开,未分片的偏移字段为0。
分片偏移 (Fragment Offset)
这个13位字段指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。
存活时间(Time To Live,TTL)
这个8位字段避免报文在互联网中永远存在(例如陷入路由环路)。存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减1,当此字段等于0时,报文不再向下一跳传送并被丢弃,最大值是255。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。
协议 (Protocol)
占8bit,这个字段定义了该报文数据区使用的协议。IANA维护着一份协议列表(最初由RFC 790定义),详细参见IP协议号列表链接: link.。
常见的如下图所示;其他UDP为0x11,TCP为0X06;
首部检验和 (Header Checksum)
这个16位检验和字段只对首部查错,不包括数据部分。在每一跳,路由器都要重新计算出的首部检验和并与此字段进行比对,如果不一致,此报文将会被丢弃。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。数据区的错误留待上层协议处理——用户数据报协议(UDP)和传输控制协议(TCP)都有检验和字段。此处的检验计算方法不使用CRC。
源地址(Source address)
一个IPv4地址由四个字节共32位构成,此字段的值是将每个字节转为二进制并拼在一起所得到的32位值。
例如,10.9.8.7是00001010000010010000100000000111。
目的地址(Destination address)
与源地址格式相同,但指出报文的接收端。
选项(Options)
附加的首部字段可能跟在目的地址之后,但这并不被经常使用,从1到40个字节不等。请注意首部长度字段必须包括足够的32位字来放下所有的选项(包括任何必须的填充以使首部长度能够被32位整除)。当选项列表的结尾不是首部的结尾时,EOL(选项列表结束,0x00)选项被插入列表末尾。
数据
数据字段不是首部的一部分,因此并不被包含在首部检验和中。数据的格式在协议首部字段中被指明,并可以是任意的传输层协议。
3.UDP数据打包格式 link.
UDP适用于不需要或在程序中执行错误检查和纠正的应用,它避免了协议栈中此类处理的开销。对时间有较高要求的应用程序通常使用UDP,因为丢弃数据包比等待或重传导致延迟更可取。
来源连接端口及目的连接端口
UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位)。在IPv4中,“来源连接端口”和“校验和”是可选字段(以粉色背景标出)。在IPv6中,只有来源连接端口是可选字段。 各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能;
报文长度
该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部)。
在IPv6的jumbogram中,是有可能传输超过65535字节的UDP数据包的。依据RFC 2675,如果这种情况发生,报文长度应被填写为0。
校验和
校验和字段可以用于发现头部信息和数据中的传输错误。该字段在IPv4中是可选的,在IPv6中则是强制的。如果不使用校验和,该字段应被填充为全0。
校验和计算
以太网UDP协议讲解相关推荐
- 基于FPGA的以太网UDP协议实现过程记录
基于FPGA的以太网的 UDP协议的学习笔记 一.完整的以太网数据部分包括以下几部分: 前导码 帧起始界定符 以太网帧头 IP首部 UDP首部 UDP数据(有效数据) CRC校验字节 二.针对每一部分 ...
- 哈工大毕设体验记录-使用ZYNQ MPSoC开发板实现的Linux环境千兆以太网C语言UDP协议批量文件存取(上)
写在前面:本文仅为一位哈工大本科学生的毕设过程记录(吐槽),可参考性有限,供后来的广大学弟学妹们参考一下吧,我趟过的坑别再跳了. 字体区别:黑色加粗为文章结构脉络表述,红色为必须明确的重点,绿色为次重 ...
- 基于 FPGA 的以太网回环测试verilog实现UDP协议
基于 FPGA 的以太网回环测试verilog实现UDP协议 verilog实现UDP协议: 该 设计使用 UDP 协议,首先通过串口助手接收 PC 发送的 UDP 数据包,然后提取其中的数据部分并使 ...
- 以太网基础知识1(UDP协议及分析 )
UDP协议及分析 一.UDP协议 UDP是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联 ...
- 基于FPGA的万兆以太网UDP/IP协议栈讲解
基于FPGA的UDP/IP协议栈 1 udp协议分析 1.1 udp介绍 UDP即User Datagram Protocol,用户数据报协议,还有一个耳熟能详的叫做TCP(Transmission ...
- 千兆以太网(四)——UDP协议
1 简介 UPD协议是无连接的传输层协议.无连接是指再传输数据时,数据的发送端和接收端不建立逻辑连接.接收和发送数据都没有反馈. 可以看到MAC帧中的数据段是IP数据报,IP报文中的数据段为U ...
- 以太网(ethernet)通信。DSP开发板28388D发送数据,电脑接收数据。使用的是UDP协议
一.使用的开发板(DSP28388D): TMDSCNCD28388D(3核) 二.想要实现的目标: 电脑连到交换机A上,开发板连到交换机A上.电脑与开发板能够进行数据通信(暂时,先调开发板给电脑发送 ...
- 图文并茂,讲解TCP和UDP协议的原理以及区别
TCP和UDP协议的区别以及原理 最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结. 一.作用 首先,tcp和udp都是工作在传输层,用于程序之间传输数据的.数据一般包含:文件类型,视 ...
- http,tcp,udp协议深度分析
文章目录 前言 一.网络分层原理 1.现实世界中的复杂网络环境 2.OSI七层协议和TCP/IP协议 第一层:物理层 第二层:数据链路层 第三层:网络层 第四层:传输层 第五层:会话层 第六层:表示层 ...
- 计算机网络基础网络协议——讲解(全面总结)
一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必须 ...
最新文章
- MyEclipse断点调试
- 阿里巴巴是如何管理测试环境的?
- 求给定数组子数组中最接近0的和
- 如何破解您忘记的Windows密码
- tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法...
- JavaScript-数据类型
- 好色之旅-画图三字经
- 网页文字无法免费复制的几种解决方法
- SpringBoot注解 @Configuration @PropertySource @ConfigurationProperties
- 苹果设备频繁杀后台问题在iOS 13.2.2正式版更新后得以抑制
- 卡巴斯基称发现美国中情局CIA 开发的新恶意软件
- 在线分数加减乘除计算器
- php+ajax+打开新页面跳转,ajax怎样跳转到新的jsp页面(附代码)
- 我也有了博客了,呵呵~~
- php 利用cookie实现访问次数统计
- MapControl与PageLayoutControl联动
- php微博api发布微博代码,使用新浪微博API的OAuth认证发布微博实例
- 我的世界服务器额外植物学bug修复,[1.12.2-1.7.10][AnotherCommonBugFix——通用Bug修复]——可修复服务器常见的BUG...
- KiCad 泪滴插件 teardrop plugin
- 用故事讲清楚统计学的Confidence Interval(置信区间)and Hypothesis Test