Pro NET 1 1 Network Programming 2nd Edition Christian Nagel instant download
Pro NET 1 1 Network Programming 2nd Edition Christian Nagel instant download
https://ebookname.com/product/pro-net-1-1-network-
programming-2nd-edition-christian-nagel/
https://ebookname.com/product/professional-c-6-and-net-
core-1-0-1st-edition-christian-nagel/
How to Code NET Tips and Tricks for Coding NET 1 1 and
NET 2 0 Applications Effectively 1st Edition Christian
Gross
https://ebookname.com/product/how-to-code-net-tips-and-tricks-
for-coding-net-1-1-and-net-2-0-applications-effectively-1st-
edition-christian-gross/
https://ebookname.com/product/pro-asp-net-signalr-real-time-
communication-in-net-with-signalr-2-1-1st-edition-keyvan-nayyeri/
https://ebookname.com/product/financial-analysis-a-controller-s-
guide-2nd-edition-steven-m-bragg/
Benjamin Franklin Pennsylvania and the First Nations
The Treaties Of 1736 62 1st Edition Susan Kalter
https://ebookname.com/product/benjamin-franklin-pennsylvania-and-
the-first-nations-the-treaties-of-1736-62-1st-edition-susan-
kalter/
https://ebookname.com/product/drug-treatment-what-works-1st-
edition-philip-bean/
https://ebookname.com/product/the-everett-interpretation-of-
quantum-mechanics-collected-works-1955-1980-with-commentary-
jeffrey-a-barrett-editor/
https://ebookname.com/product/algorithmic-aspects-of-graph-
connectivity-1st-edition-hiroshi-nagamochi/
https://ebookname.com/product/users-and-abusers-of-psychiatry-a-
critical-look-at-psychiatric-practice-1st-edition-lucy-johnstone/
Aletheia Astrology in the New Aeon for Thelemites J.
Edward [ Jerry ] Cornelius
https://ebookname.com/product/aletheia-astrology-in-the-new-aeon-
for-thelemites-j-edward-jerry-cornelius/
Pro .NET 1.1
Network Programming
Second Edition
CHRISTIAN NAGEL, AJIT MUNGALE, VINOD KUMAR,
NAUMAN LAGHARI, ANDREW KROWC2YK,
TIM PARKER, SRINIVASA SIVAKUMAR,
AND ALEXANDRU SERBAN
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.
ISBN 978-1-59059-345-5 ISBN 978-1-4302-0660-6 (eBook)
DOI 10.1007/978-1-4302-0660-6
Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence
of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark
owner, with no intention of infringement of the trademark.
Lead Editor: Dominic Shakeshaft
Technical Reviewer: Alexandru Serban
Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason
Gilmore, Chris Mills, Dominic Shakeshaft, Jim Sumser
Project Manager: Sofia Marchant
Copy Edit Manager: Nicole LeClerc
Copy Editors: Marilyn Smith, Ami Knox
Production Manager: Kari Brooks
Production Editor: Janet Vail
Compositor and Artist: Diana Van Wmkle
Proofreader: Greg Teague
Indexer: Brenda Miller
Cover Designer: Kurt Krames
Manufacturing Manager: Tom Debolski
The information in this book is distributed on an "as is" basis, without warranty. Although every precau-
tion has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liabil-
ity to any person or entity with respect to any loss or damage caused or alleged to be caused directly or
indirectly by the information contained in this work.
The source code for this book is available to readers at http: I lwww. a press. com in the Downloads section.
You will need to answer questions pertaining to this book in order to successfully download the code.
Contents at a Glance
IIi
Contents
CHRISTIAN NAGEL has about 20 years of experience as developer and software architect. He is
working as an independent trainer and consultant offering courses, seminars, and coaching,
based on Microsoft .NET technologies.
Christian started his computing career with PDP 11 and VAX/VMS platforms, covering a
variety oflanguages and platforms. Since 2000 he has been working with .NET and C# devel-
oping and architecting distributed solutions. Certified as a Microsoft Certified Trainer (MCT),
Microsoft Certified Solution Developer (MCSD), Microsoft Certified System Engineer (MCSE),
and MSF (Microsoft Solutions Framework) Practitioner, he furthermore loves writing and
enjoys a good reputation as an author of several .NET books, such as Professional C#, Profes-
sional.NET Network Programming, C# Web Services, and Enterprise Services with the .NET
Framework. In his role as Microsoft Regional Director and MVP for Visual C#, he speaks at
international conferences. Christian is also known as Regional Manager of INETA Europe
(lnternational.NET User Group Association), and since 2004 he has become an associate of
Thinktecture, a team of experts who offer consultancy and training about .NET technologies.
You can contact Christian via his web site at http: I IWVM. christiannagel. com.
~.JIT MUNGALE has extensive experience with Microsoft technologies and has worked with
almost all languages and technologies. He also has experience with IBM products, including
IBM WebSphere and MQ. He is author of a couple other books and published articles on
Microsoft .NET.
ANDREW KROWClYK is a software architect and MCSD.NET working in the Chicago area.
He currently works heavily with cutting edge .NET technologies. Andrew's area of expertise
includes Enterprise applications and theoretical computer science. He also works as an
adjunct faculty member at Elmhurst College. He can be reached at KROWCZYK@I -NETWAY. COM.
VI NOD KUMAR is a Microsoft MVP from Chennai, India. He has authored many books on
Microsoft technologies, such as MOBILE APPLICATION DEVELOPMENT USING • NET and Planning,
Implementing, and Maintaining a Windows Server 2003 Active Directory Infrastructure. He also
owns a site named .NET Force (HTTP: I IWWW. DOTNETFORCE. COM). The site provides the latest
information and publishes original articles on .NET technology. He can be reached at
[email protected].
S. SRINIVASA SIVAKUMAR works as a solution architect for Microsoft Corporation India and is
an author and speaker specializing in Web and mobile solutions using .NET technologies.
XV
About the Technical Reviewer
ALEXANDRU SERBAN is a software engineer for MMC Softlabs, building enterprise management
information systems for large, geographically distributed companies.
Alexandru started his addiction to computers when he first saw video game machines. He
started his programming career at the age of 9, when he bought his first Z80 processor-based
computer and started learning BASIC. He then moved toward languages like Visual Basic, C,
and C++. He graduated in computer science and automatic systems. Now, he specializes in
network communications, and he is very enthusiastic about C# and the .NET Framework,
which he strongly believes is set to revolutionize programming.
In his free time, he likes to drive and travel, in the summer to the sea, and in the winter to
the mountains, where he hits the slopes with a snowboard.
xvii
Introduction
various network, Internet, and e-mail protocols, such as IP, TCP, UDP, ICMP, IGMP, FTP, HTTP,
SMTP, POP3, IMAP, and NNTP. The end of this chapter explains domain names, firewalls, web
proxies, and XML web services.
Chapter 2 provides you with a background for working with streams. A stream is an
abstract representation of a sequence of bytes such as a file, an I/0 device, or a TCP /IP socket.
Through this abstraction, different devices can be accessed with the same process, and similar
code can be used to read data from a file input stream as can be used to read data from a
network input stream, for example. In this way, the programmer's need to worry about the
actual physical mechanism of the device is removed. We take a look at streams in .NET 1.1-
the STREAM base class for all other stream types, and work with the concrete FILESTREAM,
BUFFEREDSTREAM, MEMORYSTREAM, NETWORKSTREAM, and CRYPTOSTREAM classes and stream manip-
ulation. We also show you how to read from and write to binary and text files, and serialize
objects into XML and binary format.
Chapter 3 starts to get you to grips with network programming in .NET 1.1, beginning
I
with classes from the SYSTEM. NET namespace. We kick off with a discussion of these classes-
and you'll see later on how they play a fundamental role in all the following chapters of this
book. Specifically, we'll see how to work with URis, IP addresses, and DNS lookups. We see
how to handle requests and responses through the WEBREQUEST and WEBRESPONSE classes, and
begin looking at authentication, authorization, and the permissions relevant to network pro-
gramming.
Chapter 4 is about socket programming, and we explain to you the low-level program-
ming that is required to perform network-related tasks. A socket is one end of a two-way com-
munication link between two programs running on a network. We'll look at the socket support
in .NET-the SYSTEM. NET. SOCKETS. SOCKET class, building a port scanner application, and cre-
ating both synchronous and asynchronous client-server applications.
Chapter 5 deals with the details of raw socket programming, the base for building custom
network protocols. The first part of this chapter covers the basic implementation of the Inter-
net Control Message Protocol (ICMP) and the second part the Simple Network Management
Protocol (SNMP). As ICMP deals with Internet control messages, we will build two of the most
used utilities in network diagnostic scenarios: PING and TRACEROUTE. Then, we will show an
implementation of the SNMP protocol, used for remote network device management.
Chapter 6 is about a new addition in .NET Framework 1.1: the support for the IPv6
protocol. IPv6 is short for Internet Protocol Version 6. IPv6 is the "next generation'' protocol
designed by the Internet Engineering Task Force (IETF) to replace the current version Internet
Protocol, IP Version 4 (IPv4). IPv6 fixes a number of problems in IPv4, such as the limited
number of available IPv4 addresses. It also adds many improvements to IPv4 in areas such
as routing and network auto-configuration. We will discuss the .NET and Windows operating
system support for IPv6, showing how to install and configure this protocol. Then we will
build an IPv6-based client-server application and a simple multicast application showing
the basics of multicast network communication.
In Chapter 7, we begin a tour of the higher-level network classes in the .NET Framework,
commencing with those for dealing with the Transmission Control Protocol (TCP). We start
with a general introduction to TCP, and its architecture and data structures, before moving on
to explore the TCPCLIENT and TCPLISTENER classes for working with TCP. You'll build client-
server applications using the TCPCLIENT and TCPLISTENER classes, and then write a fully func-
tional e-mail client to see the power ofTCPCLIENT. You'll also create a multithreaded echo
server, with the support of the .NET multithreading classes. We end this chapter for you
IIINTRODUCTION xxi
with a quick look at the .NET Remoting Framework, and particularly the TCPCHANNEL transport
channel provided with the .NET 1.1 Framework.
Chapter 8 is about the UDPCLIENT class, through which we implement the User Datagram
Protocol (UDP). You'll learn about the fundamentals of the UDP protocol, and then see how
to use the UDPCLIENT class. While TCP is a more reliable protocol than UDP, it also adds a lot of
overhead. Accordingly, UDP is faster, and is well suited for multimedia transmissions such as
video streams-where the precise order that packets arrive in may not be critical. In this
chapter, we also discuss with you the higher-level UDP-based protocols.
Chapter 9 is about multicasting. This is the technology that made possible the transmis-
sion of a live Rolling Stones concert in 1994 over the Internet; it allows us to watch astronauts
in space, or to hold meetings over the Internet, to name but a few benefits. With multicasting,
a server only has to send messages once, and they will be distributed to a whole group of
clients. We therefore begin Chapter 9 by comparing unicasts, broadcasts, and multicasts.
You'll study the architecture of multicasting, and learn how to implement multicast sockets
in .NET 1.1. You create two Windows applications in this chapter using multicasting features-
one application makes it possible to chat with multiple systems, where everyone is both a
sender and a receiver. The second application-in the form of a picture show-demonstrates
for you how large data packets can be sent to multiple clients without using a large percentage
of the network bandwidth.
Chapter 10 covers the HTTP protocol and its robust implementation exposed by .NET.
The HTTP protocol's importance as an application protocol is significant, since a large share
of web traffic today uses this protocol. In Chapter 10, we therefore begin with an overview of
the HTTP protocol-the HTTP headers, and the format of HTTP requests and responses. You'll
take a deep look at the classes in .NET for working with HTTP, and see how to read and write
cookies. You'll then see how to create an HTTP server with ASP. NET support, before continu-
ing your study of .NET Remoting and the HTTP transport channel. You'll be well set in this
area after reading this chapter.
We get to e-mail in Chapter 11. In this chapter, we begin with a high-level overview of the
various e-mail protocols and how they are accessed and used in a .NET 1.1 environment. We'll
show you the fundamentals of the SMTP, POP3, IMAP, and NNTP protocols, and see how these
protocols work together to send and receive e-mail messages over the Internet. We'll also take
a look at sending e-mails with the .NET Framework's classes for sending e-mails via SMTP, as
well as developing some grassroots protocol implementation classes for POP3 and SMTP.
In Chapter 12, we discuss the topic of securing network communications. The
SYSTEM. SECURITY. CRYPTOGRAPHY namespace of the .NET Framework provides programmatic
access to the variety of cryptographic services that we can incorporate into our applications to
encrypt and decrypt data, ensure data integrity, and handle digital signatures and certificates.
In this chapter, we'll therefore explore with you this namespace, but also provide you with an
introduction to cryptography and all of its key concepts. This is a topic you can take much
further, of course, but we open that door for you in this chapter. We'll also take a look at secur-
ing a particular chat application that we created earlier in the book.
We close the book with Chapter 13, where we take a look at authentication protocols.
Authentication has become a major issue for any application developer who expects code to
run across a network, or across the Internet. Making sure that users are who they say they are,
and verifying machine identities on demand, is all part of an application's security module.
In this final chapter, you'll see what the authentication protocols involved in Microsoft's net-
working schemes are, how they work, and how they apply to the various versions ofWindows.
xxii IIINTRODUCTION
We will discuss protocols such as NTLM, Kerberos, and various types ofWmdows authentica-
tion methods such as Credentials Management, GINA, LSA, smartcard authentication, and
Wmlogon. At the end of the chapter, we'll show you the .NET security architecture, and
provide you with an explicit implementation of the .NET Resource Security.
Networking Concepts
and Protocols
In this chapter, we introduce some of the basic networking concepts and protocols. The
chapter serves as a foundation to networking that will allow you to tackle programming in
the rest of the book. It doesn't matter if you plan to develop server applications running as
Windows Services (offering some data for clients using a custom protocol), if you write client
applications that request data from web servers, or if you create multicasting or mailing appli-
cations-you should start with reading this chapter. If you don't already know what a router or
a network switch is, if you aren't sure about the functionality of the seven layers in the Open
Systems Interconnection (OSI) protocol model, or if you just want a refresher or an overview
of the different network protocols and their uses, then this chapter is addressed to you.
We start with an introduction to the hardware used in local area networks (LANs), such as
routers, hubs, and bridges. Then we take a look at the seven layers of the OSI model and their
functionality, and how the Transmission Control Protocol/Internet Protocol (TCP /IP) suite fits
into the OSI layers. After that, we cover the functionality of various network protocols.
In particular, we discuss the following topics:
• The physical network
• The OSI seven-layer model
• Network protocols (including basic protocols, Internet protocols, and e-mail protocols)
• Sockets
• Domain name lookups
• The Internet
• .NET Remoting
• Messaging
30 CHAPTER 1 • NETWORKING CONCEPTS AND PROTOCOLS
Another FTP client is Microsoft Internet Explorer. Instead of using a URL such as
http: I lhostname, you start the FTP client with ftp: I I as a schema identifier. This tool
allows files to be copied with drag and drop (see Figure 1-19).
t> 41 ftp:f/ftp,mcrosoftcon1/developr/
Name Sile Type
Other Places
~ Fie Folder 2/ 24/ 2000 12:00 AM
..)basic Fie Folder 7/2/2002 12:00 AI>!
Fie Folder 2/25/ 2000 12:00 AN
:.:iJ ftp.mJcrosoft.com
~ DEVCAST
...ldevutl Fie Folder 712/2002 12:00 1\1>1
.._) My Docum<nts t:l drg Fie Folder 8/16/2002 12:00 1\1>1
,..:. Shar~E~d Oorum@'n.ts .:Jdstib Fie Folder 2/25/ 2000 12:00 1\1>1
~ My Uetv. ork P1aces u fonran Fie Folder 7/ 2/2002 12:00 Af-1
fox Fie Folder 7{2/2002 12:00 Al-l
GEN_INFO Fie Folder 712/ 2002 12:00 1\1>1
Details ~ .::liE File Fotler 2!28/ 2001 12:00 AM
lntelix Fie Folder 5/ 17/2002 12:00 AM
~!API Fie Folder 2/ 25/2000 12:00 AM
masm Fie Folder 7{2/2002 12:00 AM
Fie Folder 2/25/ 2000 12:00 1\1>1
Fie Folder 8126/ 2002 12:00 AM
Fie Folder 2}25/2000 12:00 AM
mutmedia Fie Folder 2/ 25/ 2000 12:00 AM
ODBC Fie Folder 7/ 2/2002 12:00A~1
ole Fie Folder 7/ 2/2002 12:00 A/·1
OleDB Fie Folder 2}25/2000 12:00 AM
pc95 Fie Fotler 2/25/2000 12:00 AJII
PlatformSDK Fie Folder 4/ 10/2002 12:00 AM
C rfc Fie Folder 2/ 25/2000 12:00Af>l
AE /9!700U2:0Q.ll~l - -
User: Anonymous r. Internet
Examples of switched lines are Plain Old Telephone Service (POTS, standard analog
lines that support speeds up to 56 Kbps), ISDN, and Digital Subscriber Line (DSL).
Protocols used for switching networks include X.25 (up to 64 Kbps), frame relay (up to
44.736 Mbps), andATM (up to 9.953 Gbps).
Ethernet
To give you a better understanding of how physical networks work, we'll look at the most
common LAN network architecture, Ethernet. Ninety percent of devices attached to a LAN
use Ethernet, which was developed by Xerox, Digital Equipment Corporation (DEC), and Intel.
In 1980, the IEEE 802.3 CSMA/CD standard specified a 10 Mbps Ethernet.
Nowadays, Ethernet can support 100 Mbps and 1 Gbps lines. Many cabling technologies
can be employed with Ethernet. There is a standard naming convention that indicates the
speed of the Ethernet network and the properties of the cable technology in use. Such names
start with a number indicating the maximum data transfer speed, followed by a word indicat-
ing the transmission technology supported, followed by a number indicating the maximum
distance between nodes. For instance, 10Base2 denotes an Ethernet that operates at 10 Mbps
using baseband transmission, with cables that have a maximum length of 200 meters. Some
other common configurations are shown in Table 1-1.
CSMAICD
Ethernet is a Carrier Sense Multiple Access/ Collision Detect (CSMA/ CD) network. Multiple
devices are connected to the same network, and all have simultaneous access. When a
message is sent, it is transported across the complete network as shown in Figure 1-l. The
receiver is identified by its unique address, and only this node reads the message; all other
nodes ignore it.
Sender
'----.,----......l. Ethemet-r----L-------+-
More
Nodes
llllillll
Receiver
•
llllillll
There is a potential problem: more than one node could attempt to send a message at the
same time, which could result in the packets becoming corrupted. The solution used by Ether-
net is that every node monitors the network and is thus aware of traffic. A node can start
sending data only if no data is already being sent over the network. In short, this is the CSMA
part of CSMA/ CD.
There is still, however, the possibility that two nodes, after checking that the network
is not already in use, start sending a packet at exactly the same time on the same network
cable. This would cause a collision between the two packets, resulting in corrupted data.
Both senders are aware of the corrupted packet because they still listen to the network while
sending data and thus detect the collision. This is the CD in CSMA/CD. Both nodes then halt
their transmissions immediately and wait a random time interval before checking the network
again to see if it is free to resend the packet.
Every node on the local network uses a Media Access Control (MAC) address for unique
identification. This address is defined by the network interface card (NIC) . A network packet
is sent across the network, but if the NIC does not identify its host as a receiver, it ignores the
packet. Incidentally, if the packet has the same destination address as the node that is listen-
ing, the message is dealt with.
Figure 1-2. Token Ring transmissions circulate only when a node owns the token.
AppleTalk is a LAN protocol developed by Apple for Apple Macintosh networks that has
been quite popular in schools, factories, and so on.
Asynchronous Transfer Mode (ATM) is another protocol that can be found in LANs. It sup-
ports fast network-switching and has a guaranteed quality of service (QOS), but because the
cost of ATM network cards is very high, ATM is a niche player in the LAN market. ATM is used
for LANs only in installations that require extremely high performance, for example, to trans-
mit medical images such as X-rays between hospitals. In the backbone that drives WAN net-
works, ATM plays a more important role.
Physical Components
An important aspect of understanding the network is knowing the hardware components. In
this section, we cover the major components of a LAN:
• NIC
• Hub
• Switch
• Router
You can find the MAC address of a Windows machine using the command-line utility
ipconfig in a DOS/CMD prompt with the /all switch. Figure 1-3 shows the output pro-
duced on a machine where the MAC address is 00-04-23-83-D1-BB. The first part of this
number, 00-04-23, is assigned to the manufacturer of the network card; the manufacturer
uses the remainder to create a unique MAC address.
Hub
Multiple devices can easily be connected with the help of a hub (see Figure 1-4). A hub is a
connectivity device that attaches multiple devices to a LAN. Each device typically connects
via an unshielded twisted pair (UTP) cable to a port on the hub. You may have already heard
about the Registered Jack-45 (RJ -45) connector. This is one of the possible port types on a hub,
but a hub can also support other cable types. A hub can have from 4 to 24 ports. In a large
network, multiple hubs are mounted in a cabinet and support hundreds of connections.
The hub acts as a repeater as it forwards every message from each port to every other
port, and to the network. A hub is a fairly simple element of a network, operating at the physi-
cal network layer to retransmit data without any processing. This makes a hub easy to install
and manage, as it doesn't require any special configuration.
Another Random Document on
Scribd Without Any Related Topics
The parodies, rich in thieves' slang, at an end, and the bottles
empty, the grateful pensioners of the national workshops resumed
their march, cutting practical jokes, and cudgel-playing with the
acacias, which were considerably deteriorated by the proceeding.
"Such," says Jérome Paturot, "was the end of this memorable day,
during which Oscar and myself were enabled to appreciate a
national workshop and the services it rendered. The account was
easily made up. Two hundred and fifty men had carried two hundred
and fifty saplings. Two francs for each man's day's work, and three
francs for each acacia, made five hundred francs on the one hand,
and seven hundred and fifty on the other. Total cost, twelve hundred
and fifty francs. Not one of the plants survived the consequences of
the breakfast, notwithstanding which there was the expense of
planting them, and afterwards that of digging them up. Double
work, double charges. Such were the national workshops; such the
profits of the institution."
The allusion in the tavern-scene to Mademoiselle Rachel is not the
only cut administered by M. Reybaud to the tragedy-queen of the
French republican stage.
Jérome and Oscar, strolling one evening down the Rue Richelieu,
found a crowd at the theatre doors. The Provisional Government
treated the people to the play. The whole mass of tickets was
divided amongst the twelve mayors of Paris, who distributed them in
their arrondissements. But somehow or other a considerable number
had got into the hands of the ticket merchants, and for twenty
francs Paturot and his companion obtained a couple of stalls. The
play over, the hour of the Marseillaise arrived.
"The tragedian approached the foot-lamps, a tricoloured flag in her
hand. Her manner of singing the republican hymn at once carried
away and revolted the hearer. It was like the roar of the lioness
urging her male to the combat. The tone was not of our period; its
energy and ferocity had no sufficient motive. It breathed vengeance
—where was the injury to revenge? conquest—and where the
territory to conquer? Even as an artistical study, the effect should
have been more measured, more restrained. That effect was
nevertheless great, and was felt by every one in the theatre. Under
the flash of that glance and the power of that voice, a sort of low
shuddering ran along the benches, and was broken only by a
universal acclamation. The enthusiasm sustained itself thus to the
last couplet, which was of itself a scene and a tableau."
The song over, a workman in a blouse leaped upon the stage, bent
his knee before the actress, and presented her with a bouquet of
choice flowers and a paper. The manager, at the demand of the
audience, read the latter aloud. It was the following acrostic in
honour of Rachel:—
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookname.com