【发布时间】:2017-12-27 20:12:55
【问题描述】:
我正在学习 TCP/IP 基础知识。我制作了一个服务器-客户端聊天应用程序,其中服务器打开一个端口 1024,客户端可以向它发送消息。我对服务器和客户端交换的 TCP/IP 数据包的内容有点困惑。如果客户端向服务器发送消息,它会通过以太网作为数据包发送。在来自客户端的以太网帧中,数据字段以 TCP/IP 格式编码。在 TCP/IP 帧中,目的端口是 1024。但是源端口的值是多少?客户端未打开任何端口。只有服务器打开一个端口。另外我想知道是否有任何方法可以监控这些在 PC 中发送和接收的 TCP/IP 数据包。
【问题讨论】:
-
这并不是说“客户端没有打开端口”,操作系统会在那个时候将你的客户端进程绑定到某个可用的端口,即只是你没有专门要求客户端上的特定端口端和操作系统将您的客户端进程绑定到当时的可用端口
-
服务器需要能够响应客户端,所以通常这意味着客户端选择一个随机端口并告诉服务器它可以在那里发送它的响应。 Wireshark 无疑是监控wireshark.org 的最佳工具
-
客户端确实打开了一个端口。连接后查看客户端主机上的
netstat输出。