Slashdot Log In
Implementing CIFS
from the not-a-disease dept.
| Implementing CIFS | |
| author | Christopher R. Hertel |
| pages | 642 |
| publisher | Prentice Hall |
| rating | 8 of 10 |
| reviewer | Tom Dickson |
| ISBN | 013047116X |
| summary | In-depth (but not too deep) coverage of the CIFS/SMB protocol |
It is one thing to be able to use Samba, Windows, and the Common Internet File System (CIFS) protocol. It is another thing entirely to understand CIFS with sufficient depth to begin coding using it. This is where Christopher Hertel's Implementing CIFS begins.
This thick book (over 600 pages) begins with a history of NetBIOS in the DOS era. It quickly progresses to NetBIOS over TCP/IP (which evolved into the current CIFS protocol). Hertel documents the beginnings of quirks that will last throughout the life of the protocol. There is an RFC that was proposed in 1987, but many vendors have added extensions to this. (It might surprise you to learn that Samba has added extensions, which are covered in Chapter 24).
After the basic overview, he quickly dives into real coding of an actual (though simple) implementation. This will be his style for the rest of the book (except for humorous asides now and then). An aspect of the protocol, such as Name Resolution, will be explained in some detail, and then expounded in actual code (and in a few cases pseudocode).
The detail is good but not overwhelming. Some people (with names like Jerry Carter or Andrew Tridgell) will want more depth than this book provides, but for with a protocol as varied as CIFS, choices have to be made. As the Samba website mentions, this book is written in "Geekish." The book covers aspects of older and newer SMB/CIFS implementations, including a description of the NTLM2 challenge/auth system.
One thing that should be noted is that the code examples work, but as the author points out, they usually have little or no error handling. This is common to many books, but it is something to remember.
Now, should you get this book? If you're just a user, you probably don't need it. But if you've ever wished you could understand the Samba technical mailing list, or wanted to know why it takes up to 15 minutes to see a new machine, then you'll enjoy this book. If you want to utilize CIFS in any manner (even if just implementing Samba for clients), I'd highly recommend reading this. It will help you to understand what is going on on your network, even if you're not writing the code yourself. And if you want to be a Samba coder, it is required reading.
What didn't I like? I first read the book in an airport, and found that it relies heavily on having access to a computer. I would have preferred more explanations of code fragments than was given. However, this is a minor issue; most people who are implementing CIFS will be using a computer! I was also left with a desire for more information, but the large Appendix D along with many sources recommended provide for further study.
As a bonus, Appendix A tells you how to make a good cup of Earl Grey tea! That alone to some would be worth the price of admission.
You can purchase Implementing CIFS from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
But who likes CIFS? (Score:3, Funny)
(http://www.dotloose.com/ | Last Journal: Wednesday August 18 2004, @03:23PM)
Re:But who likes CIFS? (Score:4, Funny)
(Last Journal: Sunday June 29 2003, @12:17PM)
Re:But who likes CIFS? (Score:5, Interesting)
(http://eric.halo43.com/ | Last Journal: Tuesday October 16, @12:54AM)
Re:But who likes CIFS? (Score:5, Informative)
Download Windows Services for UNIX [microsoft.com] for free from Microsoft, it contains a NFS client and server. I use this on my home network, no more Samba and its confusing config file (even with SWAT it is a nightmare). You can even choose to just install the nfs services and continue to use Cygwin for the rest of your Unix-on-Windows goodness.
What about patching? (Score:4, Insightful)
(http://rhadmin.org/)
There will be bugs in the M$ nfs server code. Will Windows Update patch them?
The patch against SQL Slammer had been out for six months before Slammer took down South Korea and invaded a nuclear power plant. I don't want to install anything that requires special patching procedures.
Re:But who likes CIFS? (Score:4, Insightful)
Exactly the point I was trying to make above.
As much as the slashdot crowd would probably hate to admit that Microsoft got something right, SMB/CIFS is the 'killer app' for sharing files and printers over a LAN.
If there's another application that does the same job as SMB/CIFS and is:
- Free
- easy to use client
- easy to configure server
- multiplatform - Windows, OS X, varying strains of Unix, and linux
then bring it on. Until then, we're stuck with CIFS.Re:But who likes CIFS? (Score:5, Insightful)
Samba in Linux vs Windows (Score:4, Interesting)
(http://www.mjmwired.net/resources/)
Re:Windows XP network problems: Underlying sloppin (Score:4, Informative)
Otherwise, eventually one of the 9x machines with think it's won the browse election even when that should be impossible. This screws the network neighborhood. Very longstanding bug going back to WfW. You can check the state of your network using the "browstat" tool that comes with the resource kit.
(Also, yer correct that NetBIOS or IPX will be faster than NBT for whatever reason. Make sure to adjust the "binding order" so that these protocols come ahead of TCP/IP. Can't recall exactly how to do this, sorry.)
This might not be realistic for a home net, but install WINS/DHCP if possible and put the clients into p-mode. (no NetBIOS broadcasts)
O'Reilly Safari (Score:5, Informative)
Network Neighborhood (Score:4, Interesting)
(http://www.getdropbox.com/u/2/screencast.html | Last Journal: Saturday February 08 2003, @04:47PM)
The post suggests that this book tells the answer, but do any enlightened here know some typical causes of the ridiculously poor performance?
-fren
Re:Network Neighborhood (Score:5, Informative)
(http://www.bombcar.com/ | Last Journal: Sunday January 22 2006, @01:15AM)
If you add a samba server and tell it to run WINS (with wins=yes), and then tell EVERY windows machine that the wins server is at (IP address of Samba Server), things usually speed up considerably.
Also, there is (I believe), a C:\winnt\system32\drivers\etc\lmhosts file that works as a hosts file for WINS).
Re:Network Neighborhood (Score:4, Informative)
(Last Journal: Tuesday June 10 2003, @10:48PM)
MS is trying to kill it off, but since 9x and NT boxes don't understand DNS for anything but internet name resolution, its demise is still a long way off.
Most implementations will be in written in C... (Score:3, Insightful)
(http://tomcopeland.blogs.com/)
Obviously there'd be a speed hit, but it seems like it'd be a lot faster to develop in, and time-critical bits could be written in C and accessed via Ruby/DL [ttsky.net] or whatever.
Ditto for Python, of course... same sort of advantages/issues.
Re:Most implementations will be in written in C... (Score:4, Insightful)
(http://slashdot.org/~110010001000/journal/ | Last Journal: Monday December 15 2003, @10:50AM)
Now Java or C# is a real option. Microsofts next implementation will be written in C# as a matter of fact.
My Take (Score:5, Interesting)
(http://slashdot.org/~110010001000/journal/ | Last Journal: Monday December 15 2003, @10:50AM)
This book is simply the best reference available for CIFS. I only say that because I have spent $$$ getting everything on the subject I can. With the recent changes in Microsoft licensing every sensible IT professional should be exploring alternatives. A SAMBA server is a great alternative. This book is all you need to go from knowing next to nothing to knowing enough to impress your geeky Network Admin friends.
This book is well written, clear and expansive. I didn't read it cover to cover (not at first anyway) I found pieces I needed, applied it, digested it, reviewed it and then went on to the next morsel I needed. If I missed something it was easy to find. By the way, it works with Win2K and WinXP neither of which is well documented by anyone anywhere.
Book is open source as well (Score:4, Informative)
MacOSX Samba (Score:3, Interesting)
(Last Journal: Tuesday May 20 2003, @04:00PM)
Both PCs run XP pro, the iMac runs panther. Go figure.
As far as those 15 minutes concern, I got one solution for ya : rende-vous/zeroconf. Since iTunes/win can find macs using this protocol, a win port is allready done, so we can only hope MS sees the light and uses it for network scanning one day.
Re:MacOSX Samba (Score:4, Informative)
(http://www.tupps.com/)
Code examples? (Score:3, Interesting)
(http://slashdot.org/ | Last Journal: Wednesday March 03 2004, @05:38PM)
overgeneralisation (Score:2, Informative)
(http://microsoft.toddverbeek.com/)
Except for the people whose Windows boxes weren't hooked up to a network, or who instead used Netware for file/print sharing, or whose only loaded network components were TCP/IP and the adapter device. And even though it's installed by default, that doesn't mean everybody who failed to deinstall it actually used it.
This book is under an Open Source license (Score:5, Informative)
(http://perens.com/ | Last Journal: Tuesday February 07 2006, @08:49PM)
Thanks
Bruce
Re:This book is under an Open Source license (Score:5, Informative)
(http://perens.com/ | Last Journal: Tuesday February 07 2006, @08:49PM)
But the fact is that technical book authors are generally writing for some other reason than to get direct income from the book. Most do it for the intangibles - promotion of their own careers or projects they support, etc.
What I like about this series is that the books need never die, since anyone can edit and print them. They don't get into that state where the publisher sells a few hundred copies a year on order and doesn't revert the rights to the author for years. Authors hate that.
But we are careful with timing. We make sure the "pipeline" between the publisher and bookstores is full before the electronic copy is available. So, clone publishers don't have much incentive, as the stores have already filled their orders.
I have to admit that this would not work as well if people liked to curl up with e-books. If that day ever comes, we'll change the strategy, but the end product will still be Open Source books.
If you are very anti-open-source, it's probably because you don't yet understand the ways that Open Source works well for business and business people. I have a paper on the economic basis of Open Source that I'm working on, that you will probably find of interest. It should be out in a week or two.
Thanks
Bruce
Re:This book is under an Open Source license (Score:5, Insightful)
(http://perens.com/ | Last Journal: Tuesday February 07 2006, @08:49PM)
Thanks
Bruce
Re:How come you have time to shill for your books. (Score:5, Funny)
(http://perens.com/ | Last Journal: Tuesday February 07 2006, @08:49PM)
Bruce
Apprentice Hell?... (Score:1)
M$ hides other half of knowledge (Score:4, Funny)
Re:M$ hides other half of knowledge (Score:4, Informative)
He finally put a sniffer on the network and analyzed the traffic between a Windows server, a Windows workstation and a workstation running our implementation. Turns out that the RFC instructs implementers to NEVER place anything other than zero into a certain location (LONGINT). However, that field was almost always non-zero when it was passed between the two Windows machines.
The engineer put the length of the data transfer in bytes into the field and it has worked ever since.
That incident cemented my negative attitude toward Microsoft. They don't try to win by looking good; they try to win by making everyone else look bad--even if that includes themselves. If you're uncertain about something that Microsoft is doing, use that premise as a reference point and you can't go wrong.
This is a great book for implementors (Score:4, Interesting)
However, I did need the sniffer method of reverse engineering for much of what the book did not cover. One complaint I had is that I needed more information on the higher level protocols such as LANMAN for handling printer queues and this information was either non-existent or schetchy in the book. Although the book is long, much of it is taken up by a CIFS document which you could download for free on the internet. So I do think that the description part of the book could be more extensive (Sorry Chris). Maybe in the next revision.
You might ask why I was implementing CIFS from scratch? Its a valid question, since Samba would/should be anyone's implementation of choice. I did it because we are developing a printer which is not GPL (and unfortunately not based on Linux). We are not using any GPL code in it, and so this was really the only choice besides buying it from someone (but where's the fun in that). I am planning on releasing this code under a BSD license, but it's not ready for prime time yet and I need to get back to it (in a couple of months).
So this was a really good book for CIFS implementors, but how many of those could there be?
using cifs (Score:1)
"Network Neighborhood" - what's that? (Score:2)
(Last Journal: Thursday December 08 2005, @04:33PM)
Was "Network Neighborhood" too technical. Of course the computers might not be physically near you.
Why CIFS/Samba at all? (Score:2)
(http://www.usermode.org/ | Last Journal: Tuesday April 17 2007, @09:13PM)
I've heard of Linux-only networks that used Samba, and for the life of my I can't figure out why.
Re:Why CIFS/Samba at all? (Score:4, Informative)
(Last Journal: Friday February 18 2005, @07:04PM)
So when I log into my friend's machine with his password, I'd be able to access my files on my machine as long as our UID is the same. Big trouble.
CIFS, on the other hand, has authentication, so I can put my SAMBA server on the wide-open internet and be somewhat sure that someone would need my password to get my files. Try that with NFS and you'd be owned (or fileless) in minutes.
Granted, there ARE ways to lock NFS down, and there are good arguments that maybe the modern file server SHOULDN'T authenticate, it should rely on another layer to handle that, but until it's easy as pie to get a Kerberos/PAM/NFS system working (no small task today), I'll stick to CIFS.
Samba is a snappy name but (Score:4, Funny)
(http://flightlinechairs.com/)
I mean, it would give the right impression about the Windows native file sharing protocol, and would be great for PHB's.
PHB: "Did you get that Samba thingy working on the server?"
IT Guy: "No, the server has CIFiliS"
PHB: "Oh. I'm sorry. You should run one of those virus checker things."
-- Len
What to Replace CIFS With? (Score:1, Troll)
(http://www.google.com/)
Is there any well performing and stable replacements for CIFS that allows Windows, Linux, and BSD boxes to all share files to each other? Sharing that only works one way is allowed too (such as when there is a Linux client/server, but only a Windows client).
Everyone hates Samba... what's the alternative? I don't care if it's a compile-it-yourself distro on sourceforge, I wanna start USING the alternative so CIFS and Samba can die the ungraceful death their ancient cludge deserves. Currently, and I'm not joking, I'm using ftp2fs systems for shares with small files. They don't work for random access, so my larger files are literally duplicated on multiple machines. I irrationally refuse to run shares. I'm just tired of dealing with it.
So give me an alternative.
Not Andrew Tridgell (Score:2, Informative)
He put on a pretense of being some other authoritatian figure ("John Nagle") in some other article (and got modded into oblivion there)
http://slashdot.org/comments.pl?sid=91307&cid=786
Knock him down.
Re:Network Neighborhood.... (Score:2)
RIP DEC.