接上篇文章wireshark抓包分析-CSDN博客wireshark是网络包分析工具网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。wireshark应用举例:网络管理员用来解决网络问题网络安全工程师用来检查安全隐患开发人员用来测试协议的执行情况学习网络协议。
https://blog.csdn.net/CSDN_DU666666/article/details/139476234?spm=1001.2014.3001.5501
一、链路层
以太网头(又称MAC头)------一共占用14字节
目的MAC地址:即接收方的mac地址--windows的mac地址 (占6字节)
源MAC地址:发送方的mac地址-ubuntu的mac地址 (占6字节)
类型:指定下一层(网络层)使用的协议类型 (占2字节)
0800 IP协议
0806 ARP协议
8035 RARP协议
PS:查看mac地址的方法
windows:ipconfig/all 物理地址对应的就是mac地址
ubuntu:ifconfig 看到的ether后面就是mac地址
工作在链路层的设备:交换机(通过mac地址决定如何转发消息)
二、网络层
IP头
版本号(4位) IP协议的版本 4-->ipv4 0100
首部长度(4位) IP头的长度(由于IP头至少为20字节),而4个bit位能表示的最大数是1111-->15 所以此处使用的是4倍的单位,此处的0101---> 对应位5*4=20
服务类型 (8位) 前3比特是优先权子字段(已被忽略),第8比特保留未用,4-7比特分别代表延迟、吞吐量、可靠性和花费,对应位取1为最小延时、最大吞吐量、最高可靠性和最小花费,但这4位同一时刻,只能一位为1,但可以全部为0,全部为0表示一般服务,服务类型字段声明数据包被网络系统传输时可以被怎样处理。比如,TELNET协议要求有最小的延迟,FTP协议数据要求最大吞吐量、SNMP协议无特殊要求(4-7全为0)。但是实际上,大部分会忽略这个字段。但一些动态路由协议如OSPF(open shortest Path First Protocol)、IS-ISIntermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。
总长度(16位) 表示整个数据报的长度(以字节为单位),2^16-1==最大长度为65535字节
IP头+TCP头+用户数据的长度 == 20+20+*(PS:我用buff[*]发的) == *+40
标识(16位) 用于唯一标识主机发送的每一份数据包,通常每发一份数据包,它的值会加1。
标志位(8位) 标志一份数据包是否要求分段。
片偏移(13位) 如果一个数据报要求分段,此字段指名该段便宜距离原始数据报开始的位置。
生存周期TTL(8位) 设置数据包最多经过的路由器的数量,每经过一个路由器,其值减去1,减到0数据包被丢弃,初始值一般为32、64、128等。(PS:ping www.baidu.com 显示的TTL)
协议类型(8位) 指明后边使用的协议的类型 ICMP(1) IGMP(2) TCP(6) UDP(17)。
头部校验和(16位) 根据IP头部计算得到的校验和码,计算方法为:对头部中每16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。
源IP地址(32位) 发送IP数据报文的源主机地址。
目的IP地址(32位)接收IP数据报文的目标主机地址。
工作在网络层的设备:路由器(根据目的IP地址决定如何转发数据)。
三、传输层
TCP头
源端口号(16位): 发送方进程的端口号
目的端口号(16位) 接收方进程的端口号
序列号:seq
确认号: ack
头部长度:TCP的头部长度也是4倍的单位 5表示20
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文段交给应用层。
RST:重建连接。
SYN:发起一个连接。
FIN:释放一个连接。
建立和释放链接使用到SYN ACK FIN 见以下文章