Even though not strictly required the so called network stack is usually provided as part of the Operating System. It's an highly integrated and optimized part using OS and sometimes network hardware features to provide a so called socket API. This socket API abstracts all details related to the network protocol handling (e.g., TCP/IP) , and makes it much easier for the application programmer to use.
Otoh, it is possible to program your own network protocol stack. Then you would need to use so-called raw sockets, which connect directly to the underlying data link layer, e.g., Ethernet. But then you would still compete with the OS based network stack, so integration into a system would not be easy. Therefore you hardly ever see network stacks outside the OS's being used.