On Wed, Aug 28, 2024 at 6:08 AM Yinebeb Tariku <yint...@gmail.com> wrote: > > I've been diving into the Go standard library's net package and have some > questions about the Dialer function and named services. > > 1. Where exactly does Go perform the mapping between a service name (e.g., > "http") and its corresponding port number (e.g., 80)?
There are two places, depending on whether the program is using the Go resolver or the cgo resolver (see https://pkg.go.dev/net for a discussion of the different resolvers). On Unix systems, the Go resolver reads the /etc/services file in the readServices function in net/port_unix.go. It looks up entries in the goLookupPort function. The Unix /etc/services file has a mapping from http to port 80 on TCP. On Unix systems, the cgo resolver calls the C getaddrinfo function. This happens in cgoLookupServicePort in net/cgo_unix.go. getaddrinfo knows how to translate strings like "http" into port numbers like 80, among other things. > 2. Is there a significant advantage or disadvantage to using actual port > numbers directly instead of named services when dialing connections? If so, > could you share some insights or point me to relevant resources? It's probably clearer to future readers to use the service names rather than the port numbers. I can't think of anything more significant than that. Ian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAOyqgcWNQ_1nN_J3%3DsgyLftjJOu6_92wMcHnY6d6chRRHO4OXQ%40mail.gmail.com.