Date: Sun, 17 Jun 2001 13:16:20 +0200 From: "Jeroen Massar" <jeroen@unfix.org> To: "'Jordan Hubbard'" <jkh@osd.bsdi.com>, <hackers@freebsd.org> Subject: RE: Query: How to tell if Microsoft is using BSD TCP/IP code? Message-ID: <001501c0f71e$f00f7bc0$420d640a@HELL> In-Reply-To: <20010615135713Y.jkh@osd.bsdi.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Jordan Hubbard <jkh@osd.bsdi.com> wrote: > I've had several marketing types approach me recently for details as > to whether or not Microsoft was using the BSD TCP/IP stack and/or user > utilities, and though it's always been "common knowledge" in the > community that they were, when I set about to "prove" it I found it to > be less easy than I'd thought. I've strings'd various binaries and > DLLs in my copy of Windows 98 but have yet to find anything resembling > proof. Does anyone out there have any details or discovery techniques > for confirming or disproving this assertion either way? It would be > very useful (for us) from a PR standpoint to know. I don't know what you are trying to get from all this, especially the "It would be very useful (for us) from a PR standpoint to know." part. It all sounds really odd to me but alas a cat does stupid things when it gets cornered... I sincerely hope that you BSD guys&gals stay far far away from the "microsoft is evil, we can't win it easily so let's bash it to hell"-attitude. {and that's my opinion, it's a freespeech world so don't start flaming me all of a sudden) Now for the hackers@freebsd (and the important) part of this reply: The easiest and public way to search for "evidence" is to head over to http://msdn.microsoft.com which is the Microsoft Developer Network site and which contains most of the documentation you'll probably ever need. The stuff about the BSD *API* which is in use by probably every single OS having TCP/IP support. http://msdn.microsoft.com/library/devprods/vs6/visualc/vccore/_core_wind ows_sockets.3a_.background.htm Be glad they use and acknowledge the BSD API.... Porting socket apps would be much more difficult then. 8<------ The Windows Sockets specification defines a binary-compatible network programming interface for Microsoft Windows. Windows Sockets are based on the UNIXR sockets implementation in the Berkeley Software Distribution (BSD, release 4.3) from the University of California at Berkeley. The specification includes both BSD-style socket routines and extensions specific to Windows. Using Windows Sockets permits your application to communicate across any network that conforms to the Windows Sockets API. On Win32, Windows Sockets provide for thread safety. ------>8 You should also check: http://msdn.microsoft.com/library/devprods/vs6/visualc/vccore/_core_wind ows_sockets_topics.htm http://msdn.microsoft.com/library/psdk/winsock/apistart_9g1e.htm http://msdn.microsoft.com/library/techart/msdn_wsockets.htm http://msdn.microsoft.com/library/backgrnd/html/tcpipintro.htm Another nice thing to read is: http://msdn.microsoft.com/library/devprods/vs6/visualc/vccore/_core_port _from_unix_to_win32.htm Which notes how to port Unix apps to Win32 Now for some nice technical stuff... Let's run depends over the c:\winnt\system32\drivers\tcpip.sys (version 5.0.2195.2910) These are the functions: FreeIprBuff GetIFAndLink IPAddInterface IPAllocBuff IPDelayedNdisReEnumerateBindings IPDelInterface IPDeregisterARP IPDisableSniffer IPEnableSniffer IPFreeBuff IPGetAddrType IPGetBestInterface IPGetInfo IPInjectPkt IPProxyNdisRequest IPRegisterARP IPRegisterProtocol IPSetIPSecStatus IPTransmit LookupRoute LookupRouteInformation LookupRouteInformationWithBuffer SendICMPErr SetIPSecPtr tcpxsum UnSetIPSecPtr UnSetIPSecSendPtr Wow those really look like BSD functions :) Ofcourse they don't because Windows uses a completely different driver & communication model compared to most other Operating Systems which are around. Note that this is documented (ofcourse) http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_9xma.htm 8<----- Deviation from Berkeley Sockets There are a few limited instances where Windows Sockets has had to divert from strict adherence to the Berkeley conventions, usually due to implementation difficulties in the MicrosoftR Windows environment. ----->8 Introduction to NDIS: http://msdn.microsoft.com/library/wcedoc/wceddk/ndis_1.htm Though it states it's for Windows CE it does also apply to WinNT per the model and such but the DDK isn't online at MS as far as I can see so fast... but google found this nice link: http://www.osr.com/ddk/303tdi_7ron.htm. And finaly for all the people who are well minded enough to read to the end I've saved the best for last: http://www.microsoft.com/technet/winnt/reskit/sur_tcp2.asp - Chapter 6 - TCP/IP Implementation Details http://www.microsoft.com/technet/win2000/win2ksrv/technote/tcpipimp.asp? a=frame - MS Windows 2000 TCP/IP Implementation Details And some more reading for all of you: http://www.microsoft.com/technet/win2000/win2ksrv/reskit/tcpch01.asp?a=f rame - Introduction to TCP/IP http://www.microsoft.com/technet/win2000/win2ksrv/technote/ispstep.asp?a =frame - Step-by-Step Guide to Internet Protocol Security (IPSec) Well.... here you have your 'facts' You can bet they've very probably looked at *BSD & Linux & others TCP/IP code but only way you ever going to be sure they are using your code is (to get someone) to sign up a NDA and compare it but even then... What are you winning with it? Greets, Jeroen To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001501c0f71e$f00f7bc0$420d640a>