准备:Wireshark下载
1.打开网站:Windows网络命令
2 打开cmd,输入指令截图,如
TCP报文格式:
下图圈起来的就是封包详细信息(Packet Details Pane):
这是最重要的信息,用来查看协议中的每一个字段。而OSI七层模型分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
在封包信息中,每行对应的含义及在OSI模型中的对应关系如下:
1.Frame: 物理层的数据帧概况 ->对应OSI七层模型中的【物理层】
2.Ethernet II: 数据链路层以太网帧头部信息 ->对应OSI七层模型中的【数据链路层】
3.Internet Protocol Version 4: 互联网层IP包头部信息 ->对应OSI七层模型中的【网络层】
4.Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP ->对应OSI七层模型中的【传输层】
5.Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议 ->对应OSI七层模型中的【应用层】
这根据报文的抓取的设备以及报文被封装的程度,会有不同的显示,比如截图里面的报文是在虚拟机上抓取的,就不会有物理设备的报文信息,在有些网络拓扑环境下,还会有封装成vlan或vxlan的报文,就可以在wireshark那里成功看到。
2.然后打开cmd 如图ping一个网站
连通后关闭捕获,结果输入icmp回车过滤,得到icmp报文
就可以进行ip报文的分析:例如
本机ip:192.168.1.2
上层协议(upper layer)字段的值是 01
IP头有20字节。
IP包的净载为Total Length-Header Length=60B-20B=40B
分片位移为0,More fragments为0表示后面无分段,没进行分片。
打开wireshark,选择WLAN接口(插网线的话应该是本地连接)开始抓包:
打开浏览器,加载任意界面,然后回到wireshark,开启http过滤:
选择HTTP1/1 200 OK这条记录,右键追踪流,选择TCP流。
关闭弹窗:
这就是三次握手
第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1,如下图
第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1,如下图:
(1)TCP编程+Wireshark抓取:
运行python,打开TCP服务端和客户端:TCPServer.py&TCPClient.py
然后运行Wireshark,选择虚拟网卡接口Npcap Loopback Adapter先运行服务端TCPServer
再同时运行客户端TCPClient.py:
![(https://img-blog.csdnimg.cn/20210120125339401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L093bllvdW5n,size_16,color_FFFFFF,t_70)
单步调试:
仅运行两端后会看到三次握手:
客户端发送信息1后:
可看到数据发送:
服务端回复信息2:
可看到新增的679和680行
UDP编程同理:单步调试能看到每个UDP报文的新增
RIP编程:
直接运行然后按格式输入,
路由表格式: 目的网络 距离 下一跳路由
新路由表信息就是来自邻居路由器的距离向量报文:目的网络 距离
OSPF编程:
直接运行然后按格式输入,