Your welcome! Anything else?

By the way. I think you realized I´m a beginner and doing copy codes. What is the benefit of your lib or the different to my used solution.
I tried to read the GitHub description but I do not understand.
BR
Andre
Everyone starts there too, no worries. I really appreciate that, even as a beginner, you were willing to try these steps out. It gives me information about how easy it is to use my Ethernet library (
QNEthernet). I adjust from there.
A brief bit of history: The Teensy 4.1 design comes with an Ethernet PHY (short for "physical layer") chip for connecting to Ethernet. (Think RJ-45 plugs and network cables.) In order to use that hardware to connect to a network, usually something called a "driver" needs to be written that knows how to talk to the physical hardware (in this case, the PHY chip). That driver needs to be able to communicate with both the physical hardware via that chip, and to the rest of the system to funnel the data back and forth. It is often the case that someone writes a trial version of this to get a feel for how to do it. The first attempt at this was written, I think, by
@manitou and is hosted by Mr. Stoffregen here:
https://github.com/PaulStoffregen/teensy41_ethernet, under
t41ether/lwip/src. (See
lwip_t41.c and lwip_t41.h for the code; don't worry yet about trying to understand it.) It was designed to be the lowest layer of the "
lwIP" (Lightweight TCP/IP) network stack. It provides a way to get data in and out of that PHY chip.
@vjmuzik came along and wrote a library that's included in the latest Teensyduino distribution, a library called "NativeEthernet". This was important because it's not the easiest thing in the world to use a driver directly. Instead, people usually interface with the low-level stuff with a well-known API. In the Arduino case, this is the
Arduino Ethernet API. NativeEthernet is written to conform to this API and to the behaviour of older libraries that had certain quirks. The author likely used that original test driver code to write this more full-featured library. It's based on a network stack called "FNET". Think these layers in the library:
Arduino API -> Network stack (FNET) -> low-level driver code (similar to the above)
Fast forward to 2021, and I wanted a network library that had a different design under the hood. (Specifically, I use polling instead of a timer to check for incoming data. I needed this because the way NativeEthernet was doing the timers conflicted with how my DMX library (TeensyDMX) was itself using timers.) I also wanted to learn about how a networking stack and implementation work. That's my library,
QNEthernet. Think these layers:
Arduino API (plus extras) -> Network stack (lwIP) -> low-level driver code (also similar (in intent) to the above driver, but with more stuff)
I can say that I use my own library in all my projects that need networking. I update it and frequently test it in real-world scenarios. It changes as I need changes (and as others file bug reports).
QNEthernet is mostly "equivalent" to NativeEthernet in intent, but does things quite differently under the hood. They're similar in that they're both libraries designed to be mostly compatible with the Arduino Ethernet API, which is the important part for developers trying to use it. They both have a very similar common interface, so programs that want to switch should only need to make very minimal changes.
Note that a person that goes by JAndrassy on GitHub is doing some very interesting work on documenting and standardizing Arduino-adjacent Ethernet APIs. You can see their work here:
https://github.com/JAndrassy/Arduino-Networking-API (see
ArduinoNetAPILibs.md)
I hope this has been informative and useful.