各种数据包头的详解(tcp,udp,ipv4,ipv6)

这篇具有很好参考价值的文章主要介绍了各种数据包头的详解(tcp,udp,ipv4,ipv6)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Osi七层参考模型:

应用层

表示层

会话层

--------前三层控制层面

--------后四层数据层面

传输层:

区分不同的流量,定义传输方式(tcp/udp),定义端口号(区分不同的服务)

网络层:

寻址,编址(ipv4地址)

数据链路层:

定义局域网的封装,Ethernet 2 IEEE802.3封装

物理层

Tcp/ip参考模型:

应用层(等于osi上三层)

主机到主机层(等于osi传输层)

互联网层(等于osi网络层)

网络接口层

在实际生活中我们通常使用的是tcp/ip参考模型。

在osi中tcp的三次握手机制与四次挥手机制保证tcp的面向连接,确认重传机制保证tcp的可靠性。

一个完整的数据包:

tcp包头,tcp/ip,udp,网络

           2层                   3层                4层

Tcp数据包头的结构:

 tcp包头,tcp/ip,udp,网络

每一行32个bit,4个字节。

Data:你要传输的数据(列如http,telnet)

Options:为可选项,默认为空。Padding:填充项。该两项默认为空。

所以,一个表准的tcp数据头部大小为20个字节。

Source Port:源端口

Destination Port:目标端口,该端口为你要访问的服务的端口。

Sequence Number:序列号,为所发送的数据的编号(顺序),序列号一般开始时是从1开始的。占32个bit。

Acknowledgment Number:确认号,用来确认时使用,当不用时为全0,占32个bit。

Data Offset:代表数据的偏移值(一个较大的数据传输时进行分片传输,第一个分片值为0,第二个分片值为第一个分片的大小,第三个分片值为前两个分片的大小。),表示该分片距离完整数据包头部的偏移值。

Reserved:保留位。

URG:紧急指针

ACK:标记位

PSH:暂停位,如果PSH=1表示tcp暂停数据的传输。

RST:重置位,

SYN:同步。

FIN:终止。

Window:单位(字节),代表一次性发送数据的多少进行确认。

Checksum:校验和,计算完整性。

Urgent pointer:紧急指针。默认为0,基本不用。

UDP数据包头结构:

             tcp包头,tcp/ip,udp,网络

 

IPV4与IPV6数据包结构:

           tcp包头,tcp/ip,udp,网络

IPV4:一行32个bit,4字节;

默认情况下ipv4的数据包为20个字节。

Version:版本,占4bit大小。

IHL:描述的是ip的头部的长度(大小),占4bit。  默认值为0101,单位是32bit(4字节),0101的十进制大小是5,所以ip头部大小是20个字节。所以ipv4头部大小的范围是(20-60字节),ipv4的头部大小只能以4字节的倍数增加。

Type of Service:描述服务类型,占8bit。对流量(数据)进行标记时使用。

Total Length:描述ip数据包的总长度(ip数据包头部+data),占16个bit,

Identification:占16个bit,标识符。当同一个数据被分片成多个分片传输时,在这个数据中的所有的分片的Identification值相同(这个值是随机的)表示是同一个数据的分片。

Flags:占3bit,3个bit的第一位叫做R:保留位,第二位叫做DF:不分片位,第三位叫做MF:更多分片位。

            DF:如果当这个bit等于1,则表示该数据没有被分片过。如果等于0,则表示该数据被分片。

           MF:当这个bit等于1时,表示你还没收完的该数据的分片,后面还有该数据的分片,当它为0时则表示该分片时该数据的最后一个分片(该数据的分片已经被收完)。

Fragment Offset:表示分片偏移,占13个bit。描述的是该分片距离完整数据包的头部的大小,单位字节。第n个分片的偏移值为前n-1个分片的大小(第一个分片的值为0,第二个分片的值为第一个分片的大小,第三个分片的值为前两个分片的大小之和。)

Time to Live(TTL):占8bit,生存时间(范围:0-255),可被路由次数,路由器查看一次路由表TTL值减一,当为0时将被丢弃。(可以避免环路带来的危害)

Protocol:占8bit,范围:1-255(0被保留),描述的是上层使用的是什么协议。Tcp的协议号:6,udp的协议号:17,ICMP的协议号:1(ICMP为跨层封装),ospf的协议号为:89(ospf协议为跨层封装),eigrp的协议号为:88(跨层封装),当值为6时表示ip的上层使用的是tcp协议。

Header Checksum:占16个bit,包头校验和,对ipv4的头部信息进行校验。当校验失败则说明该数据封装错误,或者该数据已经被人篡改。

Source Address:占32bit,源地址。

Destination Address:占32bit,目标地址。

Options:为可选项,默认为空。Padding:填充项。该两项默认为空。

IPV6:

Traffic Class:表示流量分类。作用与ipv4中Type of Service字段作用一样。

Payload lengh:表示总长度,作用与ipv4中Total Length字段作用一样。

Hop limit:表示跳数,作用与ipv4中的TTL字段作用一样。

Next Header:表示下一个头部,作用与ipv4中Protocol字段一样。

Flow lable:目前来说是一个保留字段文章来源地址https://www.toymoban.com/news/detail-721029.html

到了这里,关于各种数据包头的详解(tcp,udp,ipv4,ipv6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [UDP] UDP广播的实现IPv4&IPv6

    写了一个UDP广播的代码。 IPv4一个,IPv6一个。 编译环境是linux C++11。 ser.cpp用于发送广播。 cli.cpp用于接收广播。 build_cli.sh和build_svr.sh是编译脚本。 ./cli 等待接收广播数据 ./svr 执行发送广播 IPv4, 发送广播 //使用的广播地址是\\\"255.255.255.255\\\",路由不会转发 IPv4, 接收广播 //使用

    2024年01月20日
    浏览(62)
  • 《TCP/IP详解 卷一:协议》第5章的IPv4数据报的总长度字段出现“不需要大于576字节的IPv4数据报“相关内容的解释

    《TCP/IP详解 卷一:协议》第5章的IPv4数据报的总长度字段的一些解释,出现以下内容(有省略): ....另外,主机不需要接收大于576字节的IPv4数据报.....以避免576字节的IPv4限制。 英文原文的内容(有省略): Furthermore, a host is not required to be able to receive an IPv4 datagram larger tha

    2024年02月06日
    浏览(49)
  • IPv4,IPv6,TCP,路由

    ip : 网际协议,IP协议能让世界上任意两台计算机之间进行通信。 IP协议的三大功能: 寻址和路由 传递服务:不可靠(尽最大努力交付传输数据包),可靠性由上层协议提供;无连接 数据包分片重组 OSI七层架构(理论) 和 TCP/IP的4层架构(实现) IP的主要作用是在复杂的网络

    2024年02月11日
    浏览(52)
  • 【计算机网络:自顶向下方法】(四)网络层 : 数据平面 (IPV4 | IPV6 | 路由算法 )

    【计算机网络:自顶向下方法 第7版 | 中科大 】 网络层服务 网络层功能 : 转发: 将分组从路由器 的输入接口转发到合适 的输出接口 (局部) 路由: 使用路由算法来 决定分组从发送主机到 目标接收主机的路径 (全局 ) 路由选择算法 路由选择协议  本地,每个路由

    2024年02月09日
    浏览(47)
  • 验证IP地址IPv4和IPv6

    编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址 IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(\\\".\\\")分割。比如,172.16.254.1; 同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。 IPv6 地址由8组16进制的数

    2024年02月10日
    浏览(66)
  • 《TCP/IP详解 卷一:协议》第5章的IPv4数据报的Checksum(校验和)字段的计算(这里才能解开你的困惑)

    首先,我当你看过书,但是比较懵。 1,实例说明Checksum(校验和)的计算步骤 直奔主题,分析一下这个Checksum(校验和)怎么算出来的。 先用Wireshark随便抓一个UDP或TCP包分析一下。 如上面,我们得到IP帧头部实际数据(十六进制): 45 00 00 34 fd 34 40 00 80 11 79 46 c0 a8 63 64 31 07 2

    2024年02月04日
    浏览(48)
  • IPV4和IPV6,公网IP和私有IP有什么区别?

    一台电脑数据可以直接存储在自己电脑的硬盘上,如果使用两台电脑可以使用网线连接,达到实时传输数据的目的,但是当需要使用多台电脑协同工作来提高效率,这时很明显网线的数量是完全不够的,因此 交换机 应运而生。 定义 :交换机(Switch)意为“开关”是一种用于

    2024年02月07日
    浏览(79)
  • 如何根据IP地址判断是IPv4还是IPv6

    IPv4地址的书写形式为:“192.168.0.1” IPv6地址的书写形式为:“2001:DB8:85A3:8D3:1319:8A2E:370:7344” 给你一个IP地址,它有三种可能:IPv4、IPv6、既不是IPv4也不是IPv6的无效地址。所以,如果用函数ipGetAddressAsNumber,只能判断是不是ipv4,编写如下函数: 如果用函数ipGetAddressAsArray,只

    2023年04月08日
    浏览(48)
  • IPv4网络用户访问IPv6网络服务器

    NAT64静态映射为一对一的对应关系,通常应用在IPv4网络主动访问IPv6网络的场景中。  要求位于IPv4网络中的PC通过IPv4地址1.1.1.10能够直接访问位于IPv6网络中Server。 操作步骤 配置FW。 # 配置接口GigabitEthernet 0/0/1的IPv4地址。 # 开启IPv6报文转发功能。 # 配置接口GigabitEthernet 0/0/2的

    2024年02月06日
    浏览(44)
  • 【计算机网络-网络层】IPv4 和 IPv6

    1.1 IP 数据报格式 IP 数据报的格式如下: 首部(发送在前) 数据部分 固定部分(20B)+ 可变部分 数据信息 IP 数据报首部的格式如下: IP 首部 的字段含义如下: 版本(4b) :IP 协议版本,广泛使用的版本号为 4。 首部长度(4b,单位 4B) :可表示的最小十进制为 5,最大十

    2023年04月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包