当前位置:实例文章 » 其他实例» [文章]计算机网络 day11 tcpdump - 传输层 - netstat - socket - nc - TCP/UDP头部

计算机网络 day11 tcpdump - 传输层 - netstat - socket - nc - TCP/UDP头部

发布人:shili8 发布时间:2025-02-04 04:37 阅读次数:0

**计算机网络 Day11: TCPdump**

在前面的章节中,我们已经学习了数据链路层和网络层的基本概念。今天,我们将进入传输层,讨论TCPdump、netstat、socket和nc等工具。

###1. TCPdumpTCPdump是一款强大的网络协议分析器,可以捕获和显示网络上所有类型的流量包。它可以帮助我们理解网络通信过程中的数据流动。

**TCPdump命令格式**

bashtcpdump [-i interface] [-n] [-r file] [expression]


其中:

* `-i`选项指定要监听的接口。
* `-n`选项表示不进行DNS解析,直接显示IP地址和端口号。
* `-r`选项指定一个捕获文件,以便重新播放捕获数据。
* `expression`是过滤条件,可以根据协议、源/目的IP、端口等来指定。

**示例**

bash# 监听eth0接口,显示所有类型的流量包tcpdump -i eth0# 不进行DNS解析,直接显示IP地址和端口号tcpdump -n -i eth0# 指定一个捕获文件,重新播放捕获数据tcpdump -r capture.pcap


###2. netstatnetstat是Linux下的一个网络状态监视器,可以用来查看系统当前的网络连接和监听状态。

**netstat命令格式**

bashnetstat [-a] [-p] [-t] [-u] [-n]


其中:

* `-a`选项表示显示所有类型的连接。
* `-p`选项表示显示进程ID和名称。
* `-t`选项表示只显示TCP连接。
* `-u`选项表示只显示UDP连接。
* `-n`选项表示不进行DNS解析,直接显示IP地址。

**示例**

bash# 显示所有类型的连接netstat -a# 显示进程ID和名称netstat -p# 只显示TCP连接netstat -t# 只显示UDP连接netstat -u# 不进行DNS解析,直接显示IP地址netstat -n


###3. socketsocket是计算机网络中的一种抽象概念,它代表了一个进程与其他进程之间的通信端口。

**socket类型**

* `SOCK_STREAM`:面向连接的TCP协议。
* `SOCK_DGRAM`:无连接的UDP协议。
* `SOCK_RAW`:原始套接字,用于直接访问网络硬件。
* `SOCK_SEQPACKET`:序列包套接字,用于发送和接收多个数据包。

**socket函数**

cint socket(int domain, int type, int protocol);


其中:

* `domain`指定了通信的域(AF_INET或AF_UNIX)。
* `type`指定了通信类型(SOCK_STREAM、SOCK_DGRAM等)。
* `protocol`指定了通信协议(IPPROTO_TCP或IPPROTO_UDP等)。

**示例**

c// 创建一个TCP套接字int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

// 创建一个UDP套接字int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);


###4. ncnc是Linux下的一个网络通信工具,可以用来测试网络连接和数据传输。

**nc命令格式**

bashnc [-v] [-h host] [-p port]


其中:

* `-v`选项表示显示详细信息。
* `-h`选项指定了要连接的主机。
* `-p`选项指定了要连接的端口。

**示例**

bash# 测试TCP连接nc -v localhost8080# 测试UDP连接nc -u localhost8080


以上就是今天关于TCPdump、netstat、socket和nc等工具的内容。这些工具都可以帮助我们理解计算机网络通信过程中的数据流动,希望对你有所帮助!

其他信息

其他资源

Top