CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html...
-
Upload
junior-lamb -
Category
Documents
-
view
224 -
download
6
Transcript of CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html...
![Page 1: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/1.jpg)
CSCE 515:Computer Network Programming
------ TFTP + ErrorsWenyuan Xu
http://www.cse.sc.edu/~wyxu/csce515f07.htmlDepartment of Computer Science and EngineeringUniversity of South Carolina
![Page 2: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/2.jpg)
CSCE515 – Computer Network Programming2007
TFTP Usage and Design RFC 783, 1350
Transfer files between processes.
Minimal overhead (no security).
Designed for UDP, although could be used with many transport protocols.
![Page 3: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/3.jpg)
CSCE515 – Computer Network Programming2007
TFTP Usage and Design (cont.) Easy to implement
Small - possible to include in firmware
Used to bootstrap workstations and network devices.
![Page 4: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/4.jpg)
CSCE515 – Computer Network Programming2007
Diskless Workstation Booting 1The call for help
DisklessWorkstation
Help! I don't know who I am!My Ethernet address is:4C:23:17:77:A6:03
RARP
![Page 5: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/5.jpg)
CSCE515 – Computer Network Programming2007
The answer from the all-knowing
DisklessWorkstation
I know all! You are to be know as: 128.113.45.211
RARP REPLY
RARPServer
![Page 6: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/6.jpg)
CSCE515 – Computer Network Programming2007
DisklessWorkstation
I need the file named boot-128.113.45.211
TFTP Request (Broadcast)
The request for instructions
![Page 7: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/7.jpg)
CSCE515 – Computer Network Programming2007
The dialog
DisklessWorkstation
TFTP File Transfer
TFTPServer
here is part 1
I got part 1
here is part 2
boot file
![Page 8: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/8.jpg)
CSCE515 – Computer Network Programming2007
TFTP Protocol5 message types:
Read requestWrite requestDataACK (acknowledgment)Error
![Page 9: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/9.jpg)
CSCE515 – Computer Network Programming2007
Messages Each is an independent UDP Datagram
Each has a 2 byte opcode (1st 2 bytes)
The structure of the rest of the datagram depends on the opcode.
UDP header
TFTP messageIP
header
![Page 10: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/10.jpg)
CSCE515 – Computer Network Programming2007
FILENAME
Message Formats
OPCODE 0 0MODE
BLOCK# DATA
BLOCK#
OPCODE
OPCODE
OPCODE BLOCK# ERROR MESSAGE 0
2 bytes 2 bytes
RRQWRQDATA
ACK
error
![Page 11: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/11.jpg)
CSCE515 – Computer Network Programming2007
01 filename 0 mode 0
2 byte opcode2 byte opcodenetwork byte ordernetwork byte order
null terminated ascii stringnull terminated ascii stringcontaining name of filecontaining name of file
null terminated ascii stringnull terminated ascii stringcontaining transfer modecontaining transfer mode
variable length fields!variable length fields!
Read Request
![Page 12: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/12.jpg)
CSCE515 – Computer Network Programming2007
Write Request
02 filename 0 mode 0
2 byte opcode2 byte opcodenetwork byte ordernetwork byte order
null terminated ascii stringnull terminated ascii stringcontaining name of filecontaining name of file
null terminated ascii stringnull terminated ascii stringcontaining transfer modecontaining transfer mode
variable length fields!variable length fields!
![Page 13: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/13.jpg)
CSCE515 – Computer Network Programming2007
TFTP Data Packet
03 block # data 0 to 512 bytes
2 byte opcode2 byte opcodenetwork byte ordernetwork byte order
2 byte block number2 byte block numbernetwork byte ordernetwork byte order
all data packets have 512 bytesall data packets have 512 bytesexcept the last one.except the last one.
![Page 14: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/14.jpg)
CSCE515 – Computer Network Programming2007
TFTP Acknowledgment
04 block #
2 byte opcode2 byte opcodenetwork byte ordernetwork byte order
2 byte block number2 byte block numbernetwork byte ordernetwork byte order
![Page 15: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/15.jpg)
CSCE515 – Computer Network Programming2007
TFTP Error Packet
05 errcode errstring
2 byte opcode2 byte opcodenetwork byte ordernetwork byte order
2 byte error code2 byte error codenetwork byte ordernetwork byte order
null terminated ascii error stringnull terminated ascii error string
0
![Page 16: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/16.jpg)
CSCE515 – Computer Network Programming2007
TFTP Error Codes (16 bit int)
0 - not defined1 - File not found2 - Access violation3 - Disk full4 - Illegal TFTP operation5 - Unknown port6 - File already exists7 - No such user
![Page 17: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/17.jpg)
CSCE515 – Computer Network Programming2007
TFTP transfer modes “netascii” : for transferring text files.
all lines end with \r\n (CR,LF).provides standard format for transferring text f
iles.both ends responsible for converting to/from n
etascii format. “octet” : for transferring binary files.
no translation done.
![Page 18: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/18.jpg)
CSCE515 – Computer Network Programming2007
NetAscii Transfer ModeUnix - end of line marker is just '\n'
receiving a file you need to remove '\r' before storing data.
sending a fileyou need to replace every '\n' with "\r\n"
before sending
![Page 19: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/19.jpg)
CSCE515 – Computer Network Programming2007
Concurrency TFTP servers use a "well known address"
(UDP port number). How would you implement a concurrent
server? forking (alone) may lead to problems!Can provide concurrency without forking, but
it requires lots of bookkeeping.
![Page 20: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/20.jpg)
CSCE515 – Computer Network Programming2007
UDP sockets
Client 2
UDP
UDP datagram
FIFOClient 1
UDP
Server
UDP
Socket recv buf
UDP datagram
![Page 21: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/21.jpg)
CSCE515 – Computer Network Programming2007
TCP sockets
Client 2
TCP
Client 1
TCP
ListenServer
TCP
ServerChild
ServerChild
fork fork
![Page 22: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/22.jpg)
CSCE515 – Computer Network Programming2007
TFTP Concurrency According to the protocol, the server may
create a new udp port and send the initial response from this new port.
The client should recognize this, and send all subsequent messages to the new port.
![Page 23: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/23.jpg)
CSCE515 – Computer Network Programming2007
UDP sockets
Client 2
UDP
UDP datagram
Client 1
UDP
TFTPServer
UDP(69)
UDP datagram
UDP(9000)UDP(9001)
![Page 24: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/24.jpg)
CSCE515 – Computer Network Programming2007
Connected UDP socket
App1
UDP
App2
UDP
read write
UDP datagram
UDP datagram
Store App2 IP address and port # from connect
UDP datagram from someother IP or port #
???connected
![Page 25: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/25.jpg)
CSCE515 – Computer Network Programming2007
Who can call connect?
Client 2
UDP
UDP datagram
FIFOClient 1
UDP
Server
UDP
Socket recv buf
UDP datagram
![Page 26: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/26.jpg)
CSCE515 – Computer Network Programming2007
Questions Can UDP socket connected to a broadcast
address?A: yes, a connected UDP socket exchanges d
atagrams with only one IP address
Server A is connected to a broadcast address, so…. Can this UDP socket send?Can this UDP socket Receive?
![Page 27: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/27.jpg)
CSCE515 – Computer Network Programming2007
RRQ (read request) Client sends RRQ Server sends back data chunk #1 Client acks chunk #1 Server sends data chunk #2 ...
![Page 28: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/28.jpg)
CSCE515 – Computer Network Programming2007
WRQ (write request) Client sends WRQ Server sends back ack #0 Client data chunk #1 (the first chunk!) Server acks data chunk #1 …
there is no data chunk #0!
Stop and wait What’s the advantage? Disadvantage?
![Page 29: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/29.jpg)
CSCE515 – Computer Network Programming2007
When is it over? There is no length of file field sent!
All data messages except the last one contain 512 bytes of data.
The last data message might contain 0 bytes of data!
When to close the UDP socket?
![Page 30: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/30.jpg)
CSCE515 – Computer Network Programming2007
Lost Data Packets - Original Protocol Specification
Sender uses a timeout with retransmission.sender could be client or server.
Duplicate data packets must be recognized and ACK retransmitted.
This original protocol suffers from the "sorcerer’s apprentice syndrome".
![Page 31: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/31.jpg)
CSCE515 – Computer Network Programming2007
Sorcerer’s Apprentice Syndromesend DATA[n]
(time out)retransmit DATA[n]
receive ACK[n]send DATA[n+1]
receive ACK[n] (dup)send DATA[n+1](dup)
...
receive DATA[n]send ACK[n]
receive DATA[n] (dup)send ACK[n] (dup)
receive DATA[n+1] send ACK[n+1]
receive DATA[n+1] (dup)send ACK[n+1] (dup)
![Page 32: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/32.jpg)
CSCE515 – Computer Network Programming2007
The Fix Sender should not resend a data packet in
response to a duplicate ACK.
If sender receives ACK[n] - don’t send DATA[n+1] if the ACK was a duplicate.
![Page 33: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/33.jpg)
CSCE515 – Computer Network Programming2007
Security No username or password Obtain copies of Unix password file and
then try to guess password Solution:
Only files in a specific directory can be accessed
Give lower access priority
![Page 34: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/34.jpg)
CSCE515 – Computer Network Programming2007
Issues
What if more than 65535 chunks are sent?65536 blocks x 512 bytes/block = 33,554,432
bytes.
The RFC does not address this issue! Remember that the network can duplicate
packets!
![Page 35: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/35.jpg)
Error Handling
![Page 36: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/36.jpg)
CSCE515 – Computer Network Programming2007
System Calls and Errors In general, systems calls return a negative
number to indicate an error.We often want to find out what error.Servers generally add this information to a
log.Clients generally provide some information to
the user.
![Page 37: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/37.jpg)
CSCE515 – Computer Network Programming2007
extern int errno; Whenever an error occurs, system calls se
t the value of the global variable errno.You can check errno for specific errors.You can use support functions to print out or l
og an ASCII text error message.
![Page 38: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/38.jpg)
CSCE515 – Computer Network Programming2007
When is errno valid?
errno is valid only after a system call has returned an error.
System calls don't clear errno on success.
If you make another system call you may lose the previous value of errno.
printf makes a call to write!
![Page 39: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/39.jpg)
CSCE515 – Computer Network Programming2007
Error codes#include <errno.h>
Error codes are defined in errno.hEAGAIN EBADF EACCESS
EBUSY EINTR EINVAL
EIO ENODEV EPIPE
…
![Page 40: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/40.jpg)
CSCE515 – Computer Network Programming2007
Support Routines
void perror(const char *string);
char *strerror(int errnum);
In string.hstring.h
In stdio.hstdio.h
![Page 41: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/41.jpg)
CSCE515 – Computer Network Programming2007
General Strategies Include code to check for errors after
every system call.
Develop "wrapper functions" that do the checking for you.
Develop layers of functions, each hides some of the error-handling details.
![Page 42: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/42.jpg)
CSCE515 – Computer Network Programming2007
Example wrapper
int Socket( int f,int t,int p) {
int n;
if ( (n=socket(f,t,p)) < 0 )) {
perror("Fatal Error");
exit(1);
}
return(n);
}
![Page 43: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/43.jpg)
CSCE515 – Computer Network Programming2007
What is fatal? How do you know what should be a fatal
error (program exits)?Common sense. If the program can continue – it should.
Example – if a server can't create a socket, or can't bind to it's port - there is no sense continuing…
![Page 44: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/44.jpg)
CSCE515 – Computer Network Programming2007
Wrappers are great! Wrappers like those used in the text can
make code much more readable.
There are always situations in which you cannot use the wrappersSometimes system calls are "interrupted"
(EINTR) – this is not always a fatal error !
![Page 45: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/45.jpg)
CSCE515 – Computer Network Programming2007
Word of Caution
If you use the code from the book for your projects, you must understand it!
The library of code used in the text is extensive: Wrappers call custom error handing code. Custom error handling code make assumptions about
having other custom library functions. …
![Page 46: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/46.jpg)
CSCE515 – Computer Network Programming2007
Another approach
Instead of simple wrapper functions, you might develop a layered system.
The idea is to "hide" the sockaddr and error handling details behind a few custom functions:int tcp_client(char *server, int port);
int tcp_server(int port);
![Page 47: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/47.jpg)
CSCE515 – Computer Network Programming2007
Layers and Code Re-use Developing general functions that might be
re-used in other programs is obviously "a good thing".
Layering is beneficial even if the code is not intended to be re-used:hide error-handling from "high-level" code.hide other details.often makes debugging easier.
![Page 48: CSCE 515: Computer Network Programming ------ TFTP + Errors Wenyuan Xu wyxu/csce515f07.html Department of Computer Science and Engineering.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f185503460f94c2f007/html5/thumbnails/48.jpg)
CSCE515 – Computer Network Programming2007
The Best Approach to handling errors
There is no best approach. Do what works for you. Make sure you check all system calls for
errors!!!!Not checking can lead to security problems!Not checking can lead to bad grades on
homework projects!