一、软件说明
wireshark是网络包分析工具
网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。
wireshark应用举例:网络管理员用来解决网络问题
网络安全工程师用来检查安全隐患
开发人员用来测试协议的执行情况
学习网络协议
二、软件的安装
Ubuntu版本
sudo apt-get install wireshark
Windows版本:
以管理员身份运行 Wireshark-4.2.5-x64.exe
选好安装路径 一路下一步即可
如果提示缺少插件,就勾选安装,
所有缺少的内容 都勾选上 尤其是有一页可能会提示 usbpcap xxx 必须要装
windows版本的wireshark抓包软件安装包链接如下:
链接:https://pan.baidu.com/s/1ijq7zgumn1zM-xHzEnnIHQ?pwd=6666
提取码:6666
三、软件的使用
Ubuntu版本
sudo wireshark
windows版本:
以管理员身份运行软件
选择要捕获的网卡 然后双击
(或者点击菜单栏的 捕获 --》 选项 选择合适的网卡 点击开始 也可以)
过滤语句的使用
常用的过滤语句
tcp.port==8888
tcp.src==192.168.250.100
tcp.dst==192.168.250.1
tcp.addr==192.168.10.10
也可以使用and或者or连接多个过滤语句
抓包分析
windows网络调试助手作为TCP服务器
ubuntu写一个TCP的客户端代码,客户端给服务器发送hello world 进行抓包分析
client.c
#include <head.h>
int main(int argc, const char *argv[])
{
if (3 != argc)
{
printf("usage error:%s <ip> <port>", argv[0]);
exit(-1);
}
int sockfd;
if(-1==(sockfd = socket(AF_INET,SOCK_STREAM,0))){
PRINT_ERR("socket errror");
}
struct sockaddr_in serveraddr;
socklen_t serveraddr_len = sizeof(serveraddr);
memset(&serveraddr,0,serveraddr_len);
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(argv[1]);
serveraddr.sin_port = htons(atoi(argv[2]));
if(-1==connect(sockfd,(struct sockaddr*)&serveraddr,serveraddr_len)){
PRINT_ERR("connect error");
}
printf("与服务器连接成功...\n");
char buff[128]={0};
while (1)
{
//收发数据
memset(buff,0,sizeof(buff));
fgets(buff,sizeof(buff),stdin);
if(buff[strlen(buff)-1]=='\n'){
buff[strlen(buff)-1]='\0';
}
if(-1==send(sockfd,buff,sizeof(buff),0)){
PRINT_ERR("send error");
}
if(strcmp(buff,"quit")==0){
break;
}
memset(buff,0,sizeof(buff));
if(-1==recv(sockfd,buff,sizeof(buff),0)){
PRINT_ERR("recv error");
}
printf("应答消息为:%s\n",buff);
}
close(sockfd);
return 0;
}
链路层、网络层、传输层和应用层协议见以下文章