gpt4 book ai didi

ethernet - TCP/IP 数据包中的端口号

转载 作者:可可西里 更新时间:2023-11-01 02:38:20 24 4
gpt4 key购买 nike

我正在学习 TCP/IP 基础知识。我制作了一个服务器-客户端聊天应用程序,其中服务器打开一个端口 1024,客户端可以向它发送消息。我对服务器和客户端交换的 TCP/IP 数据包的内容有点困惑。如果客户端向服务器发送消息,它会通过以太网作为数据包发送。在来自客户端的以太网帧中,数据字段以 TCP/IP 格式编码。在 TCP/IP 帧中,目标端口将为 1024。但是源端口的值是多少?客户端未打开任何端口。只有服务器打开一个端口。另外我想知道是否有任何方法可以监视在 PC 中发送和接收的这些 TCP/IP 数据包。

最佳答案

别忘了还有 multiple layers involve here . TCP、IP 和以太网虽然经常结合使用,但属于不同的范畴。记住分离很重要。以太网(第 2 层)是一种将各个计算机连接在一起的协议(protocol),但它不关心它们具有什么 IP 地址。 IP 连接更大规模的计算机,它可以通过各种“第二层”网络技术进行路由和发送,其中以太网只是其中之一。

IETF 互联网协议(protocol)的伟大之处在于它们都是 thoroughly documented这样您就可以了解它们的内部工作方式。对于在 IP 之上运行的 TCP,端口号位于 TCP 层。 IP 本身并不关心它们,它只关心源地址和目标地址。

关键就在描述 TCP header 的图中:

  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

必须填充源端口和目标端口。这是系统 IP 堆栈如何跟踪哪些数据包属于哪些连接的关键组成部分。

通常,当您编写连接到服务器的代码时,您的连接源自(某种程度上)随机源端口。当您创建监听端口的服务器进程时,可以自动分配或专门设置该端口。

对于像 HTTP 这样的服务,如果您希望其他客户端连接到该服务,您会希望将该端口固定到 80,因此自动分配没有帮助。有时自动分配更可取,这样就不会发生冲突。

您可以使用 tcpdump 等工具监控所有这些或 Wireshark在许多其他人中。他们可以深入各个层次并展示正在发生的事情。

关于ethernet - TCP/IP 数据包中的端口号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47998094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com