`

TCP/IP数据包和UDP数据包

 
阅读更多

 

TCP数据包

 

TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报(IP Datagram)。这是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如图所示。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。

 1IP数据报首部的固定部分中的各字段

  (1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。

  (2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(132位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。

  (3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。

  (4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。

  在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

  (5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个标识并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

  (6)标志(flag) 占3位,但目前只有2位有意义。

   标志字段中的最低位记为MF(More Fragment)MF=1即表示后面还有分片的数据报。MF=0表示这已是若干数据报片中的最后一个。

   标志字段中间的一位记为DF(Don’t Fragment),意思是不能分片。只有当DF=0时才允许分片。

  (7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

  (8)生存时间 占8位,生存时间字段常用的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。

  (9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

  (10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

  (11)源地址 占32位。

  (12)目的地址 占32位。

2IP数据报首部的可变部分

  IP首部的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。

  增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的IP版本IPv6就将IP数据报的首部长度做成固定的。

  目前,这些任选项定义如下:

  (1)安全和处理限制(用于军事领域)

  (2)记录路径(让每个路由器都记下它的IP地址)

  (3)时间戳(让每个路由器都记下它的IP地址和时间)

  (4)宽松的源站路由(为数据报指定一系列必须经过的IP地址)

  (5)严格的源站路由(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)

 

UDP数据包

 



 UDP数据包结构就比较简单了,

 

DP报头由4个域组成,其中每个域各占用2个字节,具体如下:

   UDP源端口号

   目标端口号

   数据报长度

 校验值



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

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

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

 



  • 大小: 45.5 KB
  • 大小: 15.3 KB
分享到:
评论

相关推荐

    smartsniff TCP/IP 数据包捕获软件

    SmartSniff是一款强大的TCP/IP数据包捕获工具,主要用于网络监控和分析。它允许用户查看网络通信中的数据流,深入理解网络流量模式,排查网络问题,以及进行安全审计。这款工具是开发人员、网络管理员和安全专家的...

    microchip TCP/IP协议栈应用笔记V3.6

    3. **数据传输**:如何发送和接收TCP/UDP数据包,包括缓冲区管理和数据包处理。 4. **错误处理**:如何处理网络错误,如丢包、超时和连接中断。 5. **安全性和加密**:可能涵盖了SSL/TLS协议的集成,用于加密和...

    TCP/UDP/IP 工具箱 2.0.6:MATLAB 中的 TCP/IP 连接或 UDP 数据包-matlab开发

    此工具箱可用于设置 TCP/IP 连接或在 MATLAB 中发送/接收 UDP/IP 数据包。 它可以通过 Intranet/Internet 在 MATLAB 进程或其他应用程序之间传输数据。 可以充当服务器和/或客户端并传输文本字符串、任何数据类型的...

    TCP/IP 学习心得

    下面将对TCP/IP的基本原理和相关知识点进行详细介绍。 首先,TCP/IP模型分为四个主要层次:应用层、传输层、网络层和数据链路层。每一层都有其特定的任务和协议,共同构成了网络通信的基础。 1. **应用层**:这是...

    sokit TCP/UDP 数据包收发测试(调试)工具(Win32) 1.3

    sokit 是一款开源免费的 TCP / UDP 测试(调试)工具, 可以用来接收,发送或转发TCP/UDP数据包。  本程序可以工作在三种模式: 服务器模式,用来监听本地端口,接收外部数据包,并且可以回复自定义数据; 客户端...

    sokit 数据包收发测试工具 TCP/UDP 数据包收发测试 (调试) 工具

    sokit 数据包收发测试工具 TCP/UDP 数据包收发测试 (调试) 工具

    tcp/ip详解,卷2:实现源码

    在TCP/IP协议族中,TCP(传输控制协议)和IP(网际协议)是最为核心的部分。TCP负责提供可靠的、面向连接的数据传输服务,而IP则负责在网络中进行数据包的路由。这一卷的内容主要集中在这两部分的实现上,通过源代码...

    TCP/IP-UDP/IP网络调试工具软件.rar

    TCP/IP和UDP/IP是互联网协议族中的两种主要通信协议,它们在计算机网络中扮演着至关重要的角色。TCP(传输控制协议)和UDP(用户数据报协议)分别提供了不同级别的可靠性和效率,适用于不同的应用场景。 TCP是一种...

    TCP/IP测试助手

    TCP/IP测试助手是一个专为开发者和网络管理员设计的工具,它提供了直观的界面,用于模拟TCP/IP协议中的各种操作。工具的核心功能主要包括TCP连接、UDP传输以及IP数据包的发送和接收。在源码层面,它可以帮助我们了解...

    TCP/IP调试助手

    1. 数据包捕获:它可以捕获网络接口上的所有TCP/IP数据包,包括IP、TCP、UDP、ICMP等协议的数据,这对于查找网络问题的根源非常有帮助。 2. 实时显示:软件提供实时数据显示界面,可以清晰看到每个数据包的源地址、...

    TCP/IP调试助手2.zip

    TCP/IP调试助手是一款用于网络通信调试的...总之,TCP/IP调试助手2.zip提供的工具对于网络管理员、开发者和IT支持人员来说,是诊断和优化TCP/IP网络通信的有效资源,能够帮助他们快速定位和解决问题,提高工作效率。

    ip数据包分析_关于TCP_IP数据包的截取和分析

    ### IP数据包分析_关于TCP/IP数据包的截取和分析 #### TCP/IP数据包的截取技术 在深入探讨TCP/IP数据包分析之前,我们首先需要了解如何有效地截取这些数据包。根据给定的文件信息,有两种主要的方法可以在Windows...

    TCP/IP协议分析与应用学习资料

    这份PPT可能涵盖了TCP/IP的详细结构、工作流程、报文格式、拥塞控制、网络故障排查等内容,对于网络管理员、软件开发者或对网络感兴趣的学员来说,是深入理解和掌握TCP/IP协议的重要资源。通过学习,你可以了解如何...

    TCP_IP 数据包分析程序篇

    一个完整的TCP/IP数据包通常包含以下几部分:源IP地址、目的IP地址、源端口号、目的端口号、TCP序列号、确认号、数据偏移、标志位(如SYN、ACK、FIN等)、窗口大小、紧急指针、选项和填充以及数据负载。这些字段都有...

    tcpudp 2.1.1 TCP/UDP 调试软件

    TCP/IP协议是互联网通信的基础,其中TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP提供了一种可靠的数据传输服务,它通过序列化、确认、重传等机制确保了数据的准确无误地到达目的地。而...

    tcp/IP调试工具

    `tcp_helper`作为一款TCP/IP双向调试工具,其具体使用方法可能包括设置过滤规则来关注特定的连接,查看TCP连接的状态(如SYN、ACK、FIN等),追踪数据包的序列号和确认号,以及分析重传和拥塞控制策略等。...

    TCP/IP协议详细介绍

    在这篇文章中,我们将详细介绍TCP/IP协议的核心内容,包括计算机网络体系结构的分层、传输层中的TCP和UDP协议、网络层中的IP协议以及IP协议相关技术。 首先,我们来看一下计算机网络体系结构。一般而言,计算机网络...

    TCP/IP非常经典的TCP/IP协议

    在本概述中,我们将深入探讨TCP/IP协议的四个主要层次:应用层、传输层、网络层和链路层,以及每个层的主要协议和功能。 **应用层** 应用层是TCP/IP模型的最高层,直接与用户应用程序交互。常见的应用层协议包括...

    tcp/ip协议.pdf

    了解TCP/IP协议对于计算机网络通信和应用开发是基础且关键的知识点。 首先,需要明确的是TCP/IP协议分为四个主要层次,即数据链路层、网络层、传输层和应用层。 数据链路层负责数据在物理网络媒介上的传输,包括...

    TCP/IP高效编程(Effective TCP/IP Programming)

    ### TCP/IP高效编程:改善网络程序的44个技巧 #### 概述 《TCP/IP高效编程:改善网络程序的44个技巧》是一本专为网络编程领域专业人士准备的技术书籍,作者是Jon C. Snader。这本书通过一系列具体实用的技巧来帮助...

Global site tag (gtag.js) - Google Analytics