Happy to help. The PJRC forum is a very helpful and professional place. I think it's one of the things that makes the products here so amazing: they're well-designed, robust, _and_ there's a very helpful place to go should one need guidance. There doesn't seem to be any drama nor snarkiness. There does seem to be a lot of respect and straightforward answers and posts.
On the structure of Teensyduino
Teensyduino, the set of tools for Teensys, contains three main things plus one extra:
1. A compiler suite, gcc-based (toolchain-gccarmnoneeabi in PlatformIO lingo),
2. Some extra tools for things like a firmware upload tool that sends binaries to the Teensy (tool-teensy (PlatformIO lingo)),
3. The "core" framework that contains drivers and startup code for all the hardware and an implementation of the Arduino-style API (framework-arduinoteensy (PlatformIO lingo)), and
4. A set of default libraries for the convenience of users.
It's designed to be used as a component in scripts or in other IDE's.
On the Arduino and other IDE's
(An IDE means "integrated development environment", for those that don't know.)
First there was the Arduino IDE, pre-2.0.0. That's the IDE that, likely, most people have started with, up until recently. It's okay for smaller projects, but it's not a full-featured IDE, and projects with a large number of files quickly get unmanageable. Teensyduino fits in there either as a kind of plugin that is added on top and modifies the Arduino IDE install, or included with a whole build of the Arduino IDE, depending on which OS you're using. For example, later versions of macOS don't allow you to modify a signed program, hence the "complete download" version. See the "Arduino 1.8.x" section here:
https://www.pjrc.com/teensy/td_download.html
For larger and more complex projects, it's much more helpful to use a more robust IDE. Because Teensy programs can be built and uploaded with
make and other command-line tools, there exist projects where those tools are integrated, say, as scripts. For example,
https://forum.pjrc.com/threads/72344-Geany-IDE-meets-arduino-cli.
Then came PlatformIO. This is a project that aims to make it easy to build and use many types of embedded hardware. One of the boards it supports is the Teensy. It uses SCons under the covers (a Python-based build system), and its creators have painstakingly integrated "all the toolchains" so that it can be used, say, in headless systems or command-line-only systems. It also has IDE plugins for things like VSCode — this is the IDE and configuration that I currently use — and Atom, and I think CLion (in my opinion, JetBrains makes one the greatest Java-based IDE's ever).
Next came Arduino CLI and Arduino IDE v2.0.0+. The Arduino CLI is Arduino's newer toolset that makes it easier to build Arduino-style projects from the command-line without an IDE. The IDE v2.0.0+ is an improved version of the IDE, a little nicer to use than the v1.8.x versions. It also has the advantage where it can have plugins for new boards without modifying the IDE base directory, as was the case with pre-2.0.0 versions.
Libraries
Think of Teensy (and Arduino) libraries as just projects in directories. Most of them have not been created by PJRC (a bunch have), and were included because PJRC wants to make it easy for users to have a wide array of choices and conveniences. Note that they go in the Arduino-defined
libraries folder, the exact same place that the Arduino IDE puts them. Every library included with Teensyduino can be downloaded and installed separately.
The NativeEthernet library is one such library. Its author (@vjmuzik on this forum) named it that probably because it supports "Teensy 4.1's native Ethernet hardware". It's not meant to imply that it's the "standard" way to access that Ethernet hardware. It's there merely as one of many libraries conveniently included by the Teensyduino install. Its philosophy is to stick as close to the behaviour of previous Ethernet libraries as possible, likely to reduce unexpected behaviour with existing code.
It was included in PJRC's default set of libraries because it was the first library to provide Teensy 4.1 Ethernet support and an implementation for the Teensy 4.1 of the Arduino-style Ethernet API (See
https://reference.arduino.cc/reference/en/libraries/ethernet/). It's based on an embedded IP stack called FNET and requires a separate, custom FNET version to be installed too (it's included as a second library, I believe). You could install NativeEthernet separately if you wanted, or if it gets updated and the Arduino IDE (or whatever system you use) detects that it needs an update. Here's its link:
https://github.com/vjmuzik/NativeEthernet
On one hand, having a set of libraries already installed for you might be convenient. On the other hand, they're fixed to a specific Teensyduino version, and any install of a current Teensyduino might require you to upgrade to a library's latest version. You'll see this often then you start the latest Arduino IDE, and it tells you that boards or libraries need an update.
One point is that there's many, many useful libraries that aren't included in the default Teensyduino installation. They're easy to find and install yourself. In the Arduino IDE, for example, all you need to do is search for something you need and then press the "Install" button. Libraries you add this way are indistinguishable from libraries installed by default with Teensyduino. They all go in the same place.
The QNEthernet library
And now we get to the
QNEthernet part of our story. This is the Ethernet library I wrote.
QNEthernet is another library that supports Teensy 4.1's native Ethernet hardware. It's based on an embedded IP stack called lwIP (not required to be installed separately — it's included with the library install). To install from the Arduino IDE, simply search for "QNEthernet" in the Library Manager tab. (Note that there's lots of noise because a bunch of libraries use that word in their description; if you don't see it, try searching for "QNEthernet Silverman" instead.) You could, in theory, also manually install it by downloading the latest release from
https://github.com/ssilverman/QNEthernet and then putting the contents inside a
QNEthernet directory inside Arduino's
libraries folder.
Note that PlatformIO has a way of getting the latest from GitHub by using its `lib_deps` directive.
This library also (mostly) follows the Arduino-style Ethernet API, but there are some differences and lots of improvements, additions, and other features. I'm also currently maintaining it. The latest version is 0.19.0-snapshot on GitHub (v0.18.0 in the Arduino API, until I release v0.19.0). My philosophy for this library is to provide utility and convenience, but not to strictly adhere to how previous Ethernet libraries (for other hardware) behaved. One example is being able to access a UDP packet's data directly without having to first copy into a buffer — this saves memory and makes the code simpler. It's also not part of the standard Arduino-style Ethernet API.
See the project's README at
https://github.com/ssilverman/QNEthernet, and check out some of the examples. Note that in the Arduino IDE, you can find library examples from File->Examples->Examples from Custom Libraries section (scroll down). You'll note that you can find NativeEthernet examples there too, in addition to the
QNEthernet examples.
A digression: I suspect that the
QNEthernet library isn't included in the default Teensyduino install because (one or more of):
1. It's not yet past a 1.0.0 release; it's still at 0.x.x. But I'm picky, and just because it's not yet past 1.0.0, I think it's stable and excellent, and I've used it in several commercial-level projects. In fact, that's what's guided me in its creation, design, and maintenance: real-world usage. I've been using it and modifying it to meet my needs as I go.
2. There's already an Ethernet library, NativeEthernet, but that one got there first.
3. It's so easy to install more libraries, and I make efforts to keep the Arduino IDE-visible version up-to-date.
Answers to your two questions
Maximum TCP connections: I don't know how to change the maximum socket count in NativeEthernet, but you can change QNEthernet's by modifying the `MEMP_NUM_TCP_PCB` value in the
lwipopts.h file in the library source location (Arduino IDE's
libraries folder — on a Mac, it's in
~/Documents/Arduino/libraries). Note that the current default is 8, so you should be fine if you need 7.
Port 23: As for how the server behaves with specific ports, there should be no difference between any of the ports, depending on how you write your program. Are you using a different program when listening on port 23? From the looks of your program, you're never accepting any client connections via the `server.accept()` function. See here:
https://www.arduino.cc/reference/en/libraries/ethernet/server.accept/ Also note that with
QNEthernet, you don't need to specify a MAC address, it uses the Teensy's internal one.
See also the `ServerWithListeners` and SNTPClient
QNEthernet examples. I know those examples are a little more complex, but keep in mind the code is just for illustration and you don't actually need all the things that are there. Definitely a steeper learning curve, but rewarding.

I tried to make the examples not be just toy examples. This is another reason why I didn't include any of the Arduino Ethernet API examples out there; I wanted something new, especially since the
QNEthernet API allows you to do a lot more, for example non-blocking behaviour. This isn't to imply simpler examples aren't useful, it's just that there's already lots of them out there. The Teensy 4.1 is a serious device; it demands serious examples.
Let me ask you another question: What specifically would you like your program to do?
Summary
In summary, the NativeEthernet library isn't a "basic" or "default" library. It's just one of many libraries and the first one to have provided support for Teensy 4.1's Ethernet hardware. Same with the
QNEthernet library. It's just another library for the Teensy 4.1. But I wrote it and can support it (up to a point — I may respond sometimes with "that's not a QNEthernet issue, it's a how-you-wrote-your-program issue"). It's a labour of love.
It will most often be the case that any Arduino-style Ethernet programs or examples you find online will work almost the same with both NativeEthernet and with
QNEthernet (except for the `begin()` functions being non-blocking with
QNEthernet).
Ultimately, which libraries you use is up to you, and none of the choices will be wrong or incorrect. It's a matter of personal preference and convenience.