这里使用tcpdump对TCP、UDP、ICMP协议进行抓包,并详细解析其内容
1.实验源码
TCP和UDP抓包时使用以下tcp_echoserver.c、tcp_echoclient.c、udp_echoserver.c和udp_echoclient.c进行实验
tcp_echoserver.c
#include <arpa/inet.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
void str_echo(int sockfd) {
char buf[1024];
int n = 0;
while ((n = read(sockfd, buf, 1024)) > 0) {
write(sockfd, buf, n);
}
}
int main(int argc, char **argv)
{
int listenfd, connfd;
struct sockaddr_in servaddr;
signal(SIGCHLD, SIG_IGN);
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
inet_aton("127.0.0.1", &servaddr.sin_addr);
servaddr.sin_port = htons(5001);
bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
listen(listenfd, 1024);
for ( ; ; )