Overview This chapter explains the concept of client and server (client/server) computing and the benefits in networked environments. The student will work with UNIX network commands and utilities such as ping (packet internet groper), telnet (terminal emulator), and rlogin (remote login) for troubleshooting. The student will work with ftp (file transfer protocol) and rcp (remote copy) for transferring files to and from other systems. An overview and benefits of naming services such as Domain Name Service (DNS) and Network Information System (NIS) is provided. Resource sharing protocols such as Network File System (NFS) and Server Message Block (SMB) also are covered. 16.1 Client/Server Computing 16.1.1 Client/server computing The client/server computing model distributes processing over multiple computers. Distributed processing enables access to remote systems for the purpose of sharing information and network resources. In a client/server environment, the client and server share or distribute processing responsibilities. Most network operating systems, and especially UNIX, are designed around the Client/Server model to provide network services to users. Computers on a network can be referred to as a host, a server, or a client. A host is a computer system on a UNIX network. Any UNIX computer running TCP/IP, whether a workstation or server, is considered a host computer. The local host is the machine on which the user currently is working. A remote host is a system that is being accessed by a user from another system. A server provides resources to one or more clients by means of a network. Servers provide services in a UNIX environment by running daemons. Examples of daemons include Printer, FTP, and Telnet. A client is a machine that uses the services from one or more servers on a network. The student's computer can be a printer client, an FTP client, and a Telnet client simultaneously. A simple example of a client/server relationship is an FTP session. FTP, or the File Transfer Protocol, is a basic industry standard method of transferring a file from one computer to another. For the client to transfer a file, to or from the server, the server must be running the FTP daemon or service. In this case, the client requests the file to be transferred. The server provides the services, FTP daemon, necessary to receive or send the file. The Internet is also a good example of a distributed processing client/server computing relationship. The client or front end typically handles user presentation functions such as screen formatting, input forms, and data editing. This is done with a browser such as Netscape or Internet Explorer. The server or back end handles the client's requests for Web pages and provides HTTP or WWW services. Another example of a client/server relationship is a database server and a data entry or query client in a LAN (Local Area Network). The client or front end might be running an application written in the C or Java language, and the server or back end could be running Oracle or other database management software. In this case, the client also would handle formatting and presentation tasks for the user. The server would provide database storage and data retrieval services for the user. In a typical file server environment, the client might have to retrieve large portions of the database files to process the files locally. This retrieval of the database files can cause excess network traffic. With the client/server model, the client presents a request to the server, and the server database engine might process 100,000 records and pass only a few back to the client to satisfy the request. Servers are typically much more powerful than client computers and are better suited to processing large amounts of data. With client/server computing, the large database is stored and the processing takes place on the powerful server. The client has to deal with only creating the query. A relatively small amount of data or results might be passed across the network. This satisfies the client's query and results in less usage of network bandwidth. The figure shows an example of client/server computing. Note that the workstation and server normally would be connected to the LAN by a hub or switch. 16.2 Network and Remote Access Utilities 16.2.1 Network and remote access utilities As UNIX computer networks began to develop, commands and utilities were added to make it easier to work with programs and files residing on other client or server computers on the network, and transferring files. These commands were either specific to UNIX such as rlogin, rsh, ssh, and rcp or common to TCP/IP such as ping, traceroute, telnet, and ftp. The rlogin, rsh, ssh, and telnet commands provide access to remote computers. The ping and traceroute commands can serve as network connectivity troubleshooting tools. Telnet can also be used to troubleshoot network connections. This section describes some of the most common and most useful of the UNIX and TCP/IP network utilities. Note: To use some network commands in Solaris and Linux, it may be necessary to login as root or specify the full path such as /usr/sbin/ping. Use the whereis command to determine the directory location for a particular command, for example, $whereis ping. 16.2.2 The ping utility Ping (Packet Internet Groper) is a useful utility that is part of the basic TCP/IP protocols package and is standard with every UNIX system. A computer that is running the TCP/IP protocol stack can make use of the ping command. ping hostname or ping [ip address] Ping is a good low-level troubleshooting tool. The ping command tests basic connectivity between TCP/IP hosts. The ping command sends an Internet Control Message Protocol (ICMP) echo request to another computer or "host" on a TCP/IP network. If there is a reply from the destination host, there is a good connection between them. Ping uses IP datagrams to pass connection information. Therefore, a ping will test physical connections and IP addressing. If the student is incapable of running an application on a remote host, the student can ping the host as a basic connectivity test. If the student does not get a response, the problem might not be with the application. The problem might be that the host or the network link is down. Any network operating system that is running the TCP/IP protocol can send and respond to ping . The student can ping the name of a host computer if a naming service such as DNS is running. The student can also ping if the host name and IP address has been entered in the student's /etc/hosts file. If neither of these options is used, the student can directly ping the IP address of the host. This direct option is preferred. This option is a simpler test of connectivity and does not depend on name resolution. Figure shows an example using the ping command. Tip: In Linux, ping continuously sends packets until interrupted with Ctrl + C. In Solaris the ping -s command performs the same function. Typing the ping command alone will give a list of options available. Interactive Media Activity (Flash, 101 kB) Using the ping Command In this e-Lab activity, the student is logged in as user2, and the current working directory is /home/user2. Refer to the class file tree structure on the inside front cover of this book. The student types the commands that would accomplish the requested objectives. Note: Be sure to press Enter after each one. Click Step 1 to begin. 16.2.3 The traceroute command Traceroute is another useful utility that is part of the basic TCP/IP protocol suite . Any computer running TCP/IP can use the traceroute command. traceroute hostname or traceroute [ip address] Traceroute is a good troubleshooting tool for checking the connection between computers that are interconnected with routers. Routers provide for connection of private networks and the public Internet. The traceroute command checks the time it takes for a packet to get from one router to the next and can help isolated slow links. Each router the packet goes through to reach its destination is listed in the command output and is referred to as a hop. As with ping, traceroute tests physical connections and IP addressing from one host to another on a TCP/IP network. The figure shows an example using the traceroute command. 6.2.4 The telnet utility Another very useful TCP/IP utility is Telnet. The Telnet utility is standard on most operating systems. Telnet is a client/server terminal emulation program that allows the user to connect to another system. The Telnet server simulates a terminal to authorize a user or Telnet client to connect to a remote system and work in that environment. When "Telneting" to another host, the student is prompted for a username and password. After a session is established from the Telnet client, the student can enter commands as if the student were entering the commands directly on the system console. The student can Telnet to several different hosts and have multiple Telnet sessions open simultaneously. All operating systems that support TCP/IP provide at least a Telnet client. Not all operating systems provide a Telnet server or daemon. However, UNIX provides both a Telnet client and a Telnet server or daemon. In addition to connecting to other hosts, Telnet can be used to connect to and manage network devices such as switches and routers. These devices are actually microcomputers with a CPU and RAM, but these devices do not have a keyboard or monitor. Telnet allows the student to use the computer's keyboard and monitor to remotely access and administer these devices. Note: The procedure for Telnetting to another system depends on the Telnet program that the student uses. For example, the student could use the UNIX telnet command, the Windows Telnet program, NCSA Telnet for Macintosh users, or a shareware Telnet program. Each command or program is slightly different. Telnet is another good network troubleshooting tool. Telnet is a nongraphical communications utility that can be used to check the upper layers of the OSI model. Telnet runs at Layer 7, the application layer. If the student is having trouble executing another client/server application, the student can try to Telnet to the host or server to verify that the TCP/IP protocol stack is functioning correctly. The student must remember that not all network operating systems support the Telnet server function. For example, the student can Telnet from a Windows 9x or NT/2000/XP workstation to a UNIX server, but cannot Telnet to the Windows 9x or NT workstation. The Windows 9x and NT operating systems include a Telnet client but not a Telnet daemon or server. Windows 2000 and XP both include Telnet servers but they are not enabled by default. The student can Telnet to the host operating system as long as the system is running a Telnet daemon or server. If a Telnet daemon is running it may be desirable to disable the server to block Telnet requests as a security measure. The student can Telnet to the name of a host computer if the student has a naming service running such as DNS. The student can Telnet to the host by entering the host name and IP address in the /etc/inet/hosts files. If none of these apply the student can Telnet the IP address of the host. When using Telnet, the student can do the following: Open a session on a remote machine Alternate between the remote session and the local session Access machines that do not run under the UNIX environment Figure shows an example of using Telnet to connect to a remote system called beach. Notice that the host name beach is converted to an IP address using name to IP-address resolution. The student also could Telnet directly to the IP address of the host if the student knew the IP address. Figure shows alternating between the remote session and a local session. Tip: If the Backspace and Delete keys do not work after establishing a telnet session to a remote UNIX system, the student looks for an option in the Telnet program that allows the student to define these keys. If the student's Telnet program does not allow these keys to be defined, the student should do the following: Type stty erase at the shell prompt after the student logs in. Hit the Backspace key which will enter a ^H. Hit Enter. This will allow the Backspace key to work properly. The student should type stty erase '^h' somewhere in the .profile file located in the home directory of the remote system. This is to keep from having to do this procedure each time the student Telnets to the system. See Chapter 14, "Shell Features and Environment Customization", for more details. Interactive Media Activity (Flash, 101 kB) Using telnet In this e-Lab activity, the student is logged in as user2, and the current working directory is /home/user2. Refer to the class file tree structure on the inside front cover of this book. The student types the commands that would accomplish the requested objectives. Note: Be sure to press Enter after each one. Click Step 1 to begin. 16.2.5 The rlogin command Like the TCP/IP telnet utility, the UNIX rlogin (remote login) command is used to establish a login session on another remote UNIX workstation. Telnet will always prompt for username and password. Rlogin can be setup so no password is required as a convenience to users and for security reasons. If a password is not typed a hacker cannot view it. Remotely logging into a workstation is helpful under the following circumstances: To access information on another workstation that is not available otherwise To access a user's workstation remotely to read mail To kill a process that has caused the user's workstation to hang Figure lists some functions that can be performed with rlogin. Figure host under the student's current user ID. shows how to log into another Specifying a Different Login ID Use the -l option to specify a different login ID for the remote login session. The system administrator can set up a guest account so that users can remotely log onto a server. Figure shows how to log in remotely as another user. The syntax for the rlogin command is as follows: rlogin hostname -l username The student must have an account on the desired remote host before attempting to remotely log into another host system as a different user. If the student does not have an account on the remote host, the student must check with the system administrator. The student will need to know the following information: Host name Login ID Password of the new account Terminating a Local Process from a Remote Machine The student's system is not responding and the student does not want to reboot. The student might be able to kill a process on the system remotely. The student logs onto another machine and using the rlogin command to access the student's system. After successfully killing the process that caused the system to not respond, the exit command ends the student's rlogin session. Figure shows an example of terminating a process from a remote machine. Using rlogin and pkill to Recover from a "Hung" CDE Session If the workstation does not appear to be responding to mouse or keyboard input, the chances are that the problem originates from within the student's CDE session. The problem is not with the underlying operating system itself. In these cases, the student can use another workstation to access the student's workstation by way of rlogin or telnet. The student then uses the pkill command to terminate the corrupted CDE session, all without rebooting the student's workstation. Figure shows how to use rlogin and pkill to recover from a hung CDE session. If the student knows the default shell, use the first example of pkill. If the student does not know the default shell, use the second example of pkill. This will determine and terminate all instances of the student's login shell automatically. Either variant returns the student to the dtlogin screen, enabling the student to start a new CDE session. Interactive Media Activity (Flash, 95 kB) Using rlogin In this e-Lab activity, the student is logged in as user2, and the current working directory is /home/user2. Refer to the class file tree structure on the inside front cover of this book. The student types the commands that would accomplish the requested objectives. Note: Be sure to press Enter after each one. Click Step 1 to begin. 16.2.6 The FTP command The File Transfer Protocol (FTP) application is part of the TCP/IP protocol suite and is standard with most operating systems. This application can be used to transfer files using ASCII or binary mode between systems using similar or dissimilar operating systems. This provides a basic means of transferring files from one file format to another. For instance, a UNIX file normally would be unreadable by a Windows operating system. However, since both operating systems support FTP, the file is converted from one file format to another as it is transferred. Tip: It is important to know the type of file or files that are being transferring ("ftping") so that the student can set the appropriate transfer mode. If the student is transferring a non-ASCII file, the student must set the transfer mode from the default ASCII to binary. This is accomplished by typing bin at the ftp prompt (ftp>bin [Enter]). Transferring a non-ASCII file in ASCII transfer mode renders the file useless. Transferring text files in binary mode could result in a scrambled file. An ASCII file is an ordinary text file with no formatting characters. An example would be a file created with vi in UNIX or Notepad in Windows. A binary file is any other type of file such as a file from a word processor, a program file, a zip file, and so on. When transferring ASCII text files between two different operating systems, such as UNIX to Windows, or vice versa, the default ASCII transfer mode saves the file in a format that makes the file readable by the different OSs. Most computers running servers with sites set up for downloading files provide an anonymous FTP account so that users can pull files off the server. For this kind of an account, at the Name prompt, the word anonymous is entered instead of accepting the default displayed. If a password is required for the anonymous account, it usually is the user's full e-mail address. Although the FTP client is normally enabled, most OSs that support FTP do not usually start the server as a default. However, if the FTP server is running, it may be desirable to disable it to block ftp requests as a security measure. Tip: Type asc or ascii to switch back to ASCII transfer mode from binary mode. To start an FTP session, the student types ftp at the shell prompt. After supplying an account name and password, the student will receive the FTP program prompt (ftp>). This prompt indicates that the student is in the FTP program and ready to transfer files. The syntax for the ftp command is shown here: ftp hostname or ftp [ip address] After the student successfully uses ftp command to access a remote site, some familiar file and directory access commands such as cd and ls are available. To view a list of FTP available commands, the student enters the ? at the ftp> prompt. If permissions are set by the site's system administrator for a user to see the contents of a directory, the ls command displays files in that directory. If permissions are set so that a user does not have access to the files, when the ls command is entered, a prompt is returned in response. As on the student's local system, cd will change directories on the remote system. If it is necessary for the student to change directories on the student's own system in the middle of the ftp session, the lcd (local change directory) command can be used. To end an FTP session, the student types bye at the prompt. Tip: The File Transfer Protocol supports approximately 50 UNIX and FTP commands. Refer to the man pages on the ftp command for a complete list. In addition to the previous commands, other commands that the student will use often are put, mput, get, and mget. The put command is used to transfer a file to the remote host. The mput (multiple put) command allows the student to transfer more than one file at a time by specifying a space-delimited list of files. Wildcards are accepted. The get and mget commands are used to transfer one or more file from a remote host to the student's system. Figure shows an example using the ftp command to transfer two files, hosts and /tmp/hosts, in binary mode from another host. In this case, we are initiating an FTP session to the host name venus. As with ping and telnet, the student can FTP directly to the host's IP address. Interactive Media Activity (Flash, 95 kB) Using ftp In this e-Lab activity, the student is logged in as user2, and the current working directory is /home/user2. Refer to the class file tree structure on the inside front cover of this book. The student types the commands that would accomplish the requested objectives. Note: Be sure to press Enter after each one. Click Step 1 to begin. Lab Activity Networking Commands In this lab, the student works with UNIX and Transmission Control Protocol/Internet Protocol (TCP/IP) networking commands. 16.2.7 The rcp command The rcp (remote copy) command is another command from the r (remote) family of commands. Like rlogin, the rcp command is a UNIX, not a TCP/IP, command for use between UNIX systems. The rcp command works in much the same way the cp (copy) command does. The rcp command is used to get or copy and put or paste files and directories to and from a remote UNIX system. The syntax for the rcp command is shown here: rcp source_file hostname:destination_file rcp hostname:source_file ("put ") destination_file ("get ") For example, to copy the memo file to the /tmp directory on the host buckeye, use this command: $rcp memo buckeye:/tmp To copy the budget file from dano's home directory on buckeye to the current directory, use this command: $rcp buckeye:~dano/budget .(dot) To remotely copy the chapters directory to the /book directory on the host production1, use this command: $rcp -r ~/chapters production1:/book Note: In order for one system to copy a file to another system a .rhosts file needs to be created in the home directory of the receiving user account. The .rhosts file lists all hosts or host and username pairs it trusts. A system is said to trust another by allowing access without requiring a username and password. This condition must exist before a remote copy is permitted between the two systems. For example, in order for user jiml on the host named wildcat to remote copy a file to user dano on the host named buckeye, dano must create a .rhost file in the home directory and place wildcat jiml on one line. Placing just the hostname wildcat on one line would permit any user on wildcat to remote copy a file to dano's home directory on buckeye. 16.2.8 Secure Shell (SSH) As previously discussed telnet, rlogin, and FTP allow remote access to other UNIX computers or network devices. However, there is a disadvantage of these utilities. The disadvantage is that all data and passwords are transmitted unencrypted. Secure Shell (SSH) is a relatively new utility that provides secure access to a remote computer by encrypting all transmission between client and server. SSH is becoming increasingly popular as a replacement for telnet and FTP for use in managing Web and other servers remotely. SSH also replaces an early UNIX utility called remote shell or rsh which used unencrypted communication. As with telnet, FTP and other UNIX client/server applications, SSH requires two components. The server component must be installed on the system to be managed remotely and the client must be installed on the managing system. SSH is included as part of several Linux distributions such as Red Hat. Depending on the Linux distribution and the role the system will play it may be necessary to install SSH. SSH can also be downloaded at no cost from http://www.openssh.com. OpenSSH is a suite of three utilities for the client support. ssh (replaces rsh, rlogin and telnet) scp (replaces rcp) sftp (replaces ftp) Also included is sshd (ssh daemon) which provides the SSH server functionality. In addition to character based sessions, X-Windows or graphical connections are also supported. 16.3.1 Overview Name services store information in a central place that users, workstations, and applications must have to communicate across the network. These services include the following: Host names and addresses Usernames Passwords Without a central name service, each workstation would have to maintain its own copy of this information. Name service information may be stored in files, maps, or database tables. Centrally locating this data makes it easier to administer large networks. The goal of a naming service is to allow centralization of network administration. The administration of a group of machines grows in complexity with the number of machines and users to manage. As a result, decentralized administration is conceivable for two or three machines, but it becomes more complex if the number exceeds that limit. For example, there is a group of five machines. If all the users have to be able to log in as themselves on each machine, the administrator must duplicate the /etc/passwd file on every machine. Although putting this in place initially is possible, maintenance becomes difficult. In effect, each modification of one element of the password file makes it necessary to reproduce the change on each machine. The problem that is raised by the /etc/passwd file is greatly increased by necessary changes to many other administrative files, such as the groups and hosts files. Centralized Administration Administrators should set up networks with a centralized administration that distributes a database to all the machines known by the distributed administration. This database can be centralized on one server, which provides the administrative services. The group of machines using the database on the server is called a domain. This centralized administration uses a naming service as the framework for the domain or domains. The Domain Name System (DNS) and Network Information Service (NIS) are two naming services that can be set up for use in the UNIX networked environment. NIS+ is another naming service developed by Sun Microsystems for Solaris. Each naming service is discussed in greater detail in the following sections. Name Services is a distributed database that contains information about all the hosts, users, and shared resources on the network. DNS (Domain Name Service) is a network information service provided by the Internet and TCP/IP networks. NIS (Network Information Services) provides centralized administration of network information users, workstations, applications and so on. NIS+ is Sun’s newest naming service for Solaris. 16.3.2 DNS The Domain Name System (DNS) is the name service provided by the Internet for TCP/IP networks. DNS was developed so that workstations and servers on the network could be identified with common names instead of Internet addresses. DNS performs resolution or translation of host name to Internet (IP) address between hosts within the user's local administrative domain and across domain boundaries. For example, the user starts their browser and types in a Web site such as cisco.netacad.net or www.sun.com. A DNS server within the user's domain or at the user's ISP tries to translate the Internet domain name to an IP address. If the server cannot, it requests help from other DNS servers on the Internet. If none of the DNS servers can translate the name that the user entered, the user will get an error from their browser. In the example of www.sun.com, the name of the Web server (www) in the sun.com domain would be translated to an IP address such as 172.16.133.89. Because of the DNS server the user is capable of entering www.sun.com and have it translated to the IP address of the Web site that the user wants to go to. If the DNS server is down or unavailable, the user will not be able to connect to the desired Web site using the domain name. If the user knows the IP address of the server, though, the user could enter the IP address and connect. Without an IP address, the user's request would never make it to the Web server at Sun Microsystems. The collection of networked workstations that use DNS is referred to as the DNS namespace. The DNS namespace can be divided into a hierarchy of domains. A DNS domain is simply a group of workstations. With the Internet, the top of the DNS tree is called the root domain and is controlled by the NIC (Network Information Center). Below the root domain are the top-level domains. Figure lists some examples of toplevel domain names. The sun.com domain is controlled by administrators of Sun Microsystems not NIC. An organization may decide to break up their domain into subdomains based upon organizational structure. An example of a subdomain would be suned.sun.com. /etc/hosts file The original host based UNIX naming system was developed for standalone UNIX machines and then was adapted for network use. Many older UNIX operating systems and machines still use this system, but this system is not well suited for large, complex networks. With this system, name resolution is performed on each machine and requires that a static /etc/hosts file be created on each machine to translate host names to IP addresses. The addition of a new machine to the network means updating the /etc/hosts file on every machine on the network. Likewise, if all the users have to be able to log in as themselves on each machine, the administrator must duplicate the /etc/passwd on every machine. This method of constantly updating the etc files on each machine on the network can take up an enormous amount of time with a medium or larger network. Figure shows what a typical /etc/hosts file looks like. 16.3.3 NIS and NIS+ NIS The Network Information Service (NIS) was developed by Sun Microsystems and has become the recognized industry standard for UNIX network information services. NIS is frequently implemented in Linux and other UNIX environments. NIS has a slightly different focus than DNS. DNS focuses on making communication simpler by using host and domain names instead of numerical IP addresses. NIS focuses on making network administration more manageable by providing centralized control over a variety of network information. NIS stores information about workstation names and IP addresses, users, the network itself, and network services. This collection of network information is referred to as the NIS namespace. NIS namespace information is stored in NIS maps. NIS maps were designed to replace UNIX /etc files, as well as other configuration files, so these maps store much more than names and addresses. As a result, the NIS namespace has a large set of maps. NIS uses a client/server arrangement similar to that of DNS. Replicated NIS servers provide services to NIS clients. The principal servers are called master servers. To be more reliable, NIS servers have backup servers, or slave servers. Both master and slave servers use the NIS information retrieval software, and both store NIS maps. Figure summarizes the characteristics of NIS NIS+ The Network Information Service Plus (NIS+) is similar to NIS, but with many more features. NIS+ is not an extension of NIS. NIS+ is Sun's newest, proprietary naming service for Solaris. NIS+ enables the user to store information about workstation addresses, security information, mail information, Ethernet interfaces, and network services in central locations where all workstations on a network can have access to the information. This configuration of network information is referred to as the NIS+ namespace. The NIS+ namespace is hierarchical and is similar in structure to the UNIX directory file system. The hierarchical structure allows an NIS+ namespace to be configured to conform to the logical hierarchy of an organization. The namespace's layout of information is unrelated to its physical arrangement. An NIS+ namespace can be divided into multiple domains that can be administered autonomously. Clients may have access to information in other domains, in addition to their own, if the client's have the appropriate permissions. NIS+ uses a client/server model to store and control access to the information contained in an NIS+ namespace. Each domain is supported by a set of servers. The principal server is called the master server, and the backup servers are called replicas. The network information is stored in 16 standard NIS+ tables in an internal NIS+ database. Both master and replica servers run NIS+ server software, and both maintain copies of NIS+ tables. Changes made to the NIS+ data on the master server are reproduced automatically to the replicas. NIS+ includes a sophisticated security system to protect the structure of the namespace and its information. NIS+ uses authentication and authorization to verify whether a client's request for information should be fulfilled. Authentication determines whether the information requester is a valid user on the network. Authorization determines whether a particular user is allowed to have or modify the information requested. Figure summarizes the characteristics of NIS+. 16.4.1 The Network File System The Network File System (NFS) is a distributed file system developed by Sun Microsystems. It is a network service that allows users to transparently access files and directories located on another disk on the network. NFS enables computers of different architectures running different operating systems to access remote resources as if they were local. NFS has become adopted as the industry standard networked file system for most UNIX vendors. NFS provides users with several benefits: Centralized files allow multiple computers to use the same files. Because the files reside on one or more computers and shared to the network, others can access them. Centralized files are useful with login directories or common data files. It is easier for an administrator to back up a home file system containing many users' home directories residing on one system instead of individual workstations. Common software allows systems to share software programs. It is easier to install and upgrade a network version of programs on one server than to install the program on each individual workstation. Accessing files is transparent to the user. A user might work on an application or change to a directory residing on another computer on the network and not even realize it. The automounter feature makes the files appear to be on the user's own computer. Shared files typically are made available at bootup or automount. 16.4.2 The SMB/CIFS protocol Computers running one of the Microsoft operating systems such as Windows 9x, NT, 2000, or XP use a protocol called Server Message Block (SMB) for sharing files and printers on a network. SMB performs a similar function for Microsoft clients as NFS does for UNIX clients or Netware Core Protocol (NCP) does for Novell Clients. Although the term SMB is still commonly recognized, it has been renamed to Common Internet File System or CIFS. The SMB/CIFS protocol is implemented in the UNIX world to allow Microsoft clients to access UNIX servers and vice versa. Samba is an open source version of SMB that comes with most Linux distributions and provides both client and server applications. Commercial versions of Samba are also available for Solaris and other UNIX varieties. With Linux, SMB support may be selected during OS installation or installed later. With the Samba server daemon running on a UNIX server, Microsoft clients can access UNIX shares as though they were connecting to a Microsoft server. Running the Samba client applications on a UNIX workstation allows users to access Microsoft server shares. For the UNIX client, two utilities provide access. The smbclient utility allows access to shares using commands similar to FTP and provides short-term access. The smbmount utility allows the user to mount the shared folder so that it appears as part of the user's local file system for continued use. Summary A client/server architecture is a popular computing model used with the Internet. The client/server architecture is used to distribute or share processing loads when performing tasks. The server or backend runs software such as a daemon to provide services for client requests. Several TCP/IP and UNIX networking utilities are available including ping, telnet, traceroute, rlogin, and ftp. The ping command is a low-level troubleshooting tool. The telnet command can be used to take over the console of a remote host. The rlogin command is used to log in and run programs on another computer. The File Transfer Protocol is a useful utility that can be used to transfer file between computers with dissimilar operating systems. The rcp command is used to copy file and directories between UNIX computers. Secure shell (SSH) is an open source suite of utilities that can provide a secure, encrypted replacement for telnet, rsh, rcp, rlogin and ftp. The Domain Name System (DNS) is the name service provided by the Internet for TCP/IP networks. DNS was developed so that workstations and servers on the network could be identified with common names instead of Internet addresses. DNS performs resolution or translation of host name to Internet (IP) address between hosts. Sun developed NIS, NIS+, and NFS. NIS and NIS+ simplify network administration by providing a centralized database for user account authorization. NFS provides for distributed processing by allowing a file system on a remote computer to appear as part of the local hosts file system. The SMB/CIFS protocol provides for sharing of files and printers between Microsoft and UNIX systems. Samba is the most common implementation of this protocol and comes with most Linux distributions.