Thanks! it becomes more clear for me. But i still don't undrstand some things.
1) as i understand, protocol initialization occurs in ipgetfs, which not used anywhere, except ipattach function in same file (devip.c). ipattach, in turn, member of ipdevtab struct and latter isn't used anywhere too (i haven't found any with grep). It seems me strange, but at this point i assume, theese actions take place at system start up (this not true, i think). 2) it remains unclear for me where the connection establish, and where ilconnect or tcpconnect take place. as i think, they should be called for open connections, working on on of these protocols. i dont find anything relevant and don't understand, how system choose protocol for some work. 3) with your reference on ipgetfs i'm googled presentation [1], a little explaining to me the mechanism of choice. name = netmkaddr("133.137.166.17", "udp", "echo"); netmkaddr takes the text name of protocol and, as i saw in sources, and passes it to fprint, which call vfprint, which, in turn, call dofmt. As i understand, dofmt is some internal machinery for parse format string and decide to use the appropriate protocol. But I did not see where a connection is opened or something like that. Is my assumption about fprint and dofmt true? where i can read about internal system processes, which managed network connections? and where, nevertheless, a connection is opened? :) Excuse my english and, maybe incomprehensible exposition of ideas, it's deep night in Moscow now :) Thanks. [1] -- http://www.tip9ug.jp/meetings/udp-12Nov05/plan9udp.ppt