Skip site navigation (1)Skip section navigation (2)
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>