Osi七层参考模型:
应用层
表示层
会话层
--------前三层控制层面
--------后四层数据层面
传输层:
区分不同的流量,定义传输方式(tcp/udp),定义端口号(区分不同的服务)
网络层:
寻址,编址(ipv4地址)
数据链路层:
定义局域网的封装,Ethernet 2 IEEE802.3封装
物理层
Tcp/ip参考模型:
应用层(等于osi上三层)
主机到主机层(等于osi传输层)
互联网层(等于osi网络层)
网络接口层
在实际生活中我们通常使用的是tcp/ip参考模型。
在osi中tcp的三次握手机制与四次挥手机制保证tcp的面向连接,确认重传机制保证tcp的可靠性。
一个完整的数据包:
2层 3层 4层
Tcp数据包头的结构:
每一行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数据包头结构:
IPV4与IPV6数据包结构:
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字段一样。文章来源:https://www.toymoban.com/news/detail-721029.html
Flow lable:目前来说是一个保留字段文章来源地址https://www.toymoban.com/news/detail-721029.html
到了这里,关于各种数据包头的详解(tcp,udp,ipv4,ipv6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!