1. Ports
  2. Port 50000

Port 50000 is a curious collision. Three separate enterprise software ecosystems, each massive in their own right, independently chose this round number as their default. IBM DB2 listens here for database connections. Jenkins agents connect here to coordinate builds. SAP NetWeaver serves HTTP traffic here. No RFC blessed this arrangement. No standards body coordinated it. Port 50000 just became a de facto meeting point for enterprise infrastructure.

What Port 50000 Does

Port 50000 operates in the dynamic port range (49152-65535), which RFC 6335 explicitly reserves for private, temporary, and ephemeral use.1 These ports cannot be officially registered with IANA. They're meant for operating systems to allocate automatically when your browser needs an outbound connection, then release when you're done.

And yet here we are. Three enterprise giants planted flags on port 50000:

IBM DB2 uses port 50000 as its default TCP listener for database connections.2 When a client application connects to a DB2 instance, it's likely talking to port 50000 unless an administrator changed it.

Jenkins uses port 50000 for inbound agent connections.3 When a Jenkins agent (formerly called a "slave") needs to communicate with the controller, it connects on this port using the JNLP protocol.

SAP NetWeaver Application Server Java uses port 50000 for HTTP traffic to instance 00, following the formula 50000 + (100 × instance_number).4

The Strange Convergence

Why did three unrelated enterprise systems choose the same port? The honest answer: probably because it's a nice round number that sits safely in the unregistered range.

IBM DB2's choice likely came first. DB2 traces its lineage back to 1983, though its port conventions evolved over time.5 By choosing 50000, IBM picked a port that wouldn't conflict with well-known services (0-1023) or registered services (1024-49151), while still being memorable.

SAP's port numbering is systematic. The formula 5NN00 where NN is the instance number means instance 00 gets 50000, instance 01 gets 50100, and so on.6 It's less a choice of 50000 specifically than a choice of the 50000 block.

Jenkins inherited port 50000 through its Docker images, where the JNLP agent port was standardized at 50000.7 The Jenkins project, born as Hudson in 2004, didn't originally care much about specific ports. But as containerization became the norm, 50000 became the conventional default.

The Story Behind Jenkins

In the summer of 2004, a programmer named Kohsuke Kawaguchi at Sun Microsystems had a problem: he kept breaking the build.8

"I noticed I seemed to be 'the man who is always breaking the build,'" Kawaguchi recalled. He would commit code, then get a phone call: "Hey, I think you broke the build." His colleagues would notice that "suddenly the stuff doesn't even build or whatever."

Like any good programmer, Kawaguchi decided to solve the problem with code. He wrote a program that would automatically build and test code after every commit, catching problems before his colleagues did. The first CVS commit came on October 3, 2004. Hudson 1.0 was released on February 7, 2005.9

Hudson grew to command an estimated 70% of the continuous integration market by 2010.10 Then Oracle bought Sun Microsystems. When Oracle claimed trademark rights to the Hudson name in 2010, the community voted overwhelmingly to fork the project. On January 29, 2011, Jenkins was born.11

Today, Jenkins remains one of the most widely deployed CI/CD systems in the world. Every time a Jenkins agent connects to its controller on port 50000, it's continuing a chain that started with one programmer trying to stop embarrassing phone calls about broken builds.

The Database That Taught the World SQL

IBM DB2's story begins even earlier, in the theoretical work of Edgar F. Codd. In June 1970, Codd published his paper describing the relational model for databases, while working at IBM.12 In 1974, IBM's San Jose Research Center began building System R, a proof-of-concept implementation that birthed SQL.

DB2 Version 1 Release 1 was announced on June 7, 1983.13 The "2" in DB2 signified a shift from hierarchical databases like IMS (IBM's Information Management System) to the new relational paradigm. IBM's endorsement of SQL through DB2 caused the entire industry to adopt it, displacing alternatives like Ingres's QUEL.

By 1989, DB2 revenue had grown to roughly $1 billion, equaling IMS.14 The database that listens on port 50000 carries four decades of enterprise data: banking records, insurance policies, government systems, airline reservations.

Security Considerations

Port 50000's prevalence in enterprise environments makes it a target.

DB2 Security: The CIS Benchmark for IBM DB2 explicitly recommends changing the default port from 50000 because it's "a widely known DB2 port."15 Security through obscurity isn't real security, but using default ports does make reconnaissance easier.

Jenkins Agent Security: The JNLP agent protocol on port 50000 has evolved significantly. Jenkins now supports WebSocket transport (JEP-222), which uses the regular HTTP(S) port and eliminates the need to expose port 50000 at all.16 If you're still exposing port 50000 for Jenkins agents, consider whether WebSocket transport would work for your environment.

Industrial Control Systems: Perhaps most concerning, port 50000 is used by the Siemens SIPROTEC 4 protocol (Digsi 4) for programming electrical protection relays.17 This is the same protocol exploited by the Industroyer malware in the 2016 Ukraine power grid attack. CVE-2019-19279 demonstrated that devices communicating over UDP port 50000 could be vulnerable to denial-of-service attacks.

General Hygiene: The port has been associated with the "subsari" malware strain.18 As with any commonly used port, proper network segmentation and monitoring are essential.

The Ephemeral Range

Port 50000 technically belongs to the dynamic/ephemeral range (49152-65535). RFC 6335 established this division in 2011:19

  • System Ports (0-1023): Well-known ports, require root privileges
  • User Ports (1024-49151): Registered ports, can be assigned by IANA
  • Dynamic Ports (49152-65535): Private/ephemeral, cannot be assigned

The irony is thick. Ports in this range exist specifically because they can't be registered, freeing them for temporary client connections. Operating systems allocate them automatically when your web browser needs a source port for an outgoing connection. Yet enterprise software treats them as permanent server ports.

RFC 6056 recommends that ephemeral port selection algorithms use the entire 1024-65535 range,20 which means your operating system might randomly assign port 50000 for an outbound connection, potentially conflicting with a DB2 or Jenkins service on the same machine.

How to Check What's Listening

If you're wondering what's using port 50000 on your system:

# Linux
sudo netstat -tlnp | grep 50000
# or
sudo ss -tlnp | grep 50000

# macOS
lsof -i :50000

# Windows
netstat -ano | findstr 50000

If something unexpected is listening, investigate before assuming malice. It might be a forgotten DB2 instance, a Jenkins agent, or a SAP system someone installed for testing.

PortServiceRelationship
8080Jenkins Web UIThe Jenkins web interface, where you configure jobs and view builds
50001SAP NetWeaver HTTPSThe SSL-encrypted variant of SAP's HTTP port
50002-50006SAP ServicesIIOP, P4, and other SAP protocols for instance 00
523DB2 DASDB2 Administration Server (deprecated)
1433MS SQL ServerMicrosoft's equivalent to DB2's 50000

Frequently Asked Questions

이 페이지가 도움이 되었나요?

😔
🤨
😃