协议

1. MongoDB使用TCP还是UDP连接?

MongoDB使用TCP协议进行连接,而不是UDP。原因是MongoDB需要保证数据传输的可靠性和顺序性,而TCP协议提供了这两个特性,确保数据能准确无误地从客户端传输到MongoDB服务器。

**TCP(Transmission Control Protocol,传输控制协议)**是面向连接的协议,它在数据传输时会保证数据的可靠性、完整性和顺序性。因此,数据库这种需要保证数据一致性的应用通常使用TCP协议。

**UDP(User Datagram Protocol,用户数据报协议)**则是无连接的协议,它不保证数据的可靠传输和顺序。虽然它的传输速度较快,但不适合需要确保数据完整性的应用场景(如数据库)。

2. MongoDB使用的端口

MongoDB默认使用TCP端口27017。这意味着MongoDB服务器和客户端(或其他数据库客户端工具)通过端口27017进行通信。

可以通过命令行参数更改这个端口,例如使用--port参数来指定一个不同的端口:

1mongod --port 27018

这条命令会启动MongoDB服务,并使其在端口27018上监听请求。

3. TCP与UDP的差异

TCP(传输控制协议)

  • 面向连接:在数据传输前,通信双方必须建立连接(三次握手过程)。
  • 可靠传输:TCP确保数据的完整性和顺序性,数据包丢失或损坏时会进行重传。
  • 流量控制:TCP具有流量控制机制,确保发送方的速度不超过接收方的处理能力。
  • 适用场景:适合需要高可靠性和数据顺序保证的应用,如文件传输、数据库连接、网页浏览等。

UDP(用户数据报协议)

  • 无连接:通信双方不需要建立连接,可以直接发送数据。
  • 不可靠传输:UDP不会对丢失或错误的数据进行重传,可能会丢失部分数据包,无法保证顺序。
  • 不适合流量控制:UDP没有流量控制机制,传输速度较快,但不适合需要精确数据的应用。
  • 适用场景:适合实时性要求高、对数据丢失不敏感的应用,如视频会议、实时游戏、语音通话等。

4. 在Windows下查看MongoDB端口

在Windows中,我们可以使用一些命令行工具来查看MongoDB是否正在监听端口,以及当前哪些程序正在占用哪些端口。

1. 使用netstat命令查看端口

**netstat**是一个网络状态命令,可以显示当前系统的网络连接和端口占用情况。

  • 打开命令行(按 Win + R,输入 cmd,按回车)。

  • 输入以下命令查看当前所有TCP端口的占用情况:

    1netstat -ano | findstr "27017"

    该命令会列出占用端口 27017 的所有信息(如果MongoDB正在运行并监听该端口)。如果MongoDB没有运行,则没有输出。

    输出结果会类似于:

    1TCP    0.0.0.0:27017           0.0.0.0:0              LISTENING       1234

    其中:

    • **27017**是MongoDB使用的默认端口;
    • **LISTENING**表示MongoDB正在监听该端口;
    • **1234**是占用端口的进程ID。

2. 查看端口占用的详细信息(查看进程名)

如果想查看哪个程序占用了某个端口,可以通过 tasklist 命令根据进程ID(PID)来查找进程名称。

  • 假设上面输出的PID是 1234,可以输入以下命令来查看该进程:
    1tasklist /FI "PID eq 1234"
    该命令会返回进程ID为 1234 的进程信息,比如进程名、内存使用等。

3. 使用PowerShell查看端口

也可以通过Windows PowerShell来查看端口使用情况。打开PowerShell(按 Win + X,然后选择“Windows PowerShell”),输入以下命令:

1Get-NetTCPConnection -LocalPort 27017

这会显示正在使用端口 27017 的TCP连接。

4. 查看MongoDB进程的详细信息

还可以直接通过查看MongoDB的进程来确认它的状态。首先,获取MongoDB进程的PID(通过netstattasklist命令),然后使用以下命令查看:

1tasklist | findstr "mongod"

这会列出所有名为 mongod 的进程。

小结

  • MongoDB使用TCP协议,默认使用端口27017,并通过该端口与客户端进行通信。
  • TCP与UDP的区别:TCP适用于需要保证数据可靠性和顺序的应用,而UDP则适用于对实时性要求高、对数据丢失不敏感的场景。
  • 查看端口占用:在Windows下,可以使用netstattasklist、PowerShell等命令来查看MongoDB是否在监听指定的端口,以及哪些进程占用了哪些端口。