Presentation is loading. Please wait.

Presentation is loading. Please wait.

NETWORK PROGRAMMING INTRO TO DISTRIBUTED SYSTEMS FALL 2015 L3-socket Dongsu Han Some material taken from publicly available lecture slides including Srini.

Similar presentations


Presentation on theme: "NETWORK PROGRAMMING INTRO TO DISTRIBUTED SYSTEMS FALL 2015 L3-socket Dongsu Han Some material taken from publicly available lecture slides including Srini."— Presentation transcript:

1 NETWORK PROGRAMMING INTRO TO DISTRIBUTED SYSTEMS FALL 2015 L3-socket Dongsu Han Some material taken from publicly available lecture slides including Srini Seshan’s and David Anderson’s

2 Today’s Lecture  Lecture  Transport protocols: UDP and TCP  Version control using SVN  TA-led programming session  Editor, socket programming  Debugging with gdb  Announcement  Programming Assignment 1 is out. (Due in two weeks-- 추석 )

3 Review of Previous Lectures  What is a distributed system? (L1)  Definition  Example  What are some of the important decisions made in the Internet architecture? (L2)  Narrow waist: Network provides minimal functionality (best-effort) Why?: to connect existing networks that are heterogeneous  Stateless architecture: no per-flow state inside network Why? For survivability

4 Principles  P1: IP over all network (narrow waist)  P2: Layering  Principle 3: Fate Sharing  Principle 4: Soft-state  Principle 5: End-to-End Argument  Next lecture  Principle 6: network layer provides one simple service: best effort datagram (packet) delivery

5 Principle 4: Soft-state 5  Soft-state (as oppose to hard-state)  Announce state  Refresh state  Timeout state  Penalty for timeout – poor performance  Robust way to identify communication flows (firewall)  Possible mechanism to provide non-best effort service  Helps survivability

6 Goal 2: Types of Service 6  Principle 6: network layer provides one simple service: best effort datagram (packet) delivery  All packets are treated the same  Network layer (IP) provides “best effort” service.  Relatively simple core network elements  Other functions are implemented at the end-host at the transport layer (TCP/UDP)  Building block from which other services (such as reliable data stream) can be built  Contributes to scalability of network  Issues: No QoS support assumed from below  Hard to implement without network support  QoS is an ongoing debate…

7 Summary  Successes: IP on everything!  Drawbacks… but perhaps they’re totally worth it in the context of the original Internet. Might not have worked without them! “This set of goals might seem to be nothing more than a checklist of all the desirable network features. It is important to understand that these goals are in order of importance, and an entirely different network architecture would result if the order were changed.” 7

8 8 Transport Protocols  Lowest level end-to-end protocol.  Header generated by sender is interpreted only by the destination  Routers view transport header as part of the payload; they are not supposed to see the transport header. 7 7 6 6 5 5 7 7 6 6 5 5 Transport IP Datalink Physical Transport IP Datalink Physical IP router 2 2 2 2 1 1 1 1

9 What does the transport layer do?  No per-flow (connection) state in the network  Transport layer maintains the connection state. Transport layer identifies an end-to-end connection.  How does the transport layer identify an end-point (application)?

10 De-multiplexing: Port numbers  Network layer gets you to the host.  A port identifies the sending or receiving socket (application).  A socket is one endpoint of a two-way communication between two programs running on the network. A socket is bound to a port number so that the transport layer can identify the application that data is destined to be sent.  Identifying two end-points: An endpoint =  Source endpoint =  destination endponit =

11 11 Protocol and Port Demultiplexing  Multiple choices at each layer  Applications open a socket (identified by the port number) Port 80Port 22 Port 80 TCPUDP IP NET 1 NET 2 NET n … TCP/UDPIP Port Number = 80 Network Protocol Field = TCP Type Field =IP

12 12 Server and Client TCP/UDP IP Ethernet Adapter Server TCP/UDP IP Ethernet Adapter Clients Server and Client exchange messages over the network through a common Socket API Socket API hardware kernel space user space ports

13 Transport protocols  UDP  Provides only integrity and de-multiplexing  TCP adds…

14 14 UDP: User Datagram Protocol [RFC 768]  “bare bones” Internet transport protocol, “Best effort” service  UDP segments may be:  Lost, duplicated (bug, spurious retransmission a t L2)  Delivered out of order to app  Connectionless:  No handshaking between UDP sender, receiver  Each UDP segment handled independently Why is there a UDP? No connection establishment (which can add delay) Simple: sender, receiver stat e is minimal Small header No congestion control: UDP can blast away as fast as de sired

15 15 UDP, cont.  Often used for streaming multimedi a apps (e.g., Skype)  Loss tolerant  Rate sensitive  Other UDP uses (why?):  DNS  Reliable transfer over UDP  Must be at application layer  Application-specific error recovery Source port #Dest port # 32 bits Application data (message) UDP segment format Length Checksum Length, in bytes of UDP segment, including header

16 Transport protocols  UDP  Provides only integrity and de-multiplexing  TCP adds…  Connection-oriented  Reliable (error control)  Ordered byte stream (in-order delivery)  Bi-directional byte-stream  Flow and congestion controlled

17 TCP  Protocol implemented entirely at the ends  Fate sharing  Abstraction provided  Connection oriented protocol (hand-shake or connection establishment)  In-order byte-stream  Implemented functionality (next lecture)  Flow control  Reliability (error control)  Reassembly (in-order delivery)  Congestion control

18 /* get the server host entry */ hp = gethostbyname(argv[1]); if (hp == NULL) { perror("gethostbyname"); return -1; } /* create stream socket */ sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockfd < 0) { perror("socket"); return -1; } /* set the destination address */ daddr.sin_family = AF_INET; memcpy(&daddr.sin_addr.s_addr, hp->h_addr, hp->h_length); daddr.sin_port = htons(PORT); TCP Client Example 18

19 /* connect to the destination */ if (connect(sockfd, (struct sockaddr *)&daddr, sizeof(struct sockaddr_in))) { close(sockfd); perror("connect"); return -1; } inet_ntop(AF_INET, &daddr.sin_addr, s, sizeof(s)); printf("client: connecting to %s\n", s); /* receive message sent from the server */ if ((numbytes = recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) { perror("recv"); exit(1); } /* print the received message */ buf[numbytes] = '\0'; printf("client: received '%s'\n", buf); close(sockfd); TCP Client Example 19

20 Difference in abstraction  UDP  Recv(len) call gives you a packet (the payload part)  TCP  Connection establishment (hand-shake)  Will see in the TA led session.  Recv(len) call give you a sequence of bytes UDP segment (packet) Byte stream UDP segment (packet) len Incoming stream Application Recv() len Byte stream Application send()

21 TCP– What goes on underneath Byte stream Packet (1~7) Packet (8~10) Receive buffer Packet (9~11) Packet (8~10) I need seq# 8.

22 22 User Datagram Protocol(UDP): An Analogy Example UDP applications Multimedia, voice over IP UDP Single socket to receive messages No guarantee of delivery Not necessarily in-order delivery Datagram – independent packets Must address each packet Postal Mail Single mailbox to receive letters Unreliable Not necessarily in-order delivery Letters sent independently Must address each reply

23 Transmission Control Protocol (TCP): An Analogy TCP  Reliable – guarantee delivery  Byte stream – in-order delivery  Connection-oriented – single socket per connection  Setup connection followed by data transfer Telephone Call Guaranteed delivery In-order delivery Connection-oriented Setup connection followed by conversation Example TCP applications Web, Email, Telnet

24 REVISION CONTROL & MAKE

25 Overview  Revision control systems  Motivation  Features  Subversion primer  Make  Simple gcc  Make basics and variables  Testing  Useful Unix commands

26 Dealing with large codebases  Complications  Code synchronization  Backups  Concurrent modifications  Solution: Revision Control System (RCS)  Store all of your code in a repository on a server  Metadata to track changes, revisions, etc…  Also useful for writing books, papers, etc…

27 Basic RCS features (1/2)  Infinite undo  go back to previous revisions  Automatic backups  all your code ever, forever saved  Changes tracking  see differences between revisions

28 Basic RCS features (2/2)  Concurrency  Multiple people working at the same time  Snapshots  Save stable versions on the side (i.e. handin)  Branching  Create diverging code paths for experimentation

29 Typical RCS workflow 1. Create repository on RCS server 2. Checkout the repository to your local machine 3. Work locally: create, delete and modify files 4. Update the repository to check for changes other people might ha ve made 5. Resolve any existing conflicts 6. Commit your changes to the repository

30 RCS implementations  Concurrent Versions System (CVS)  Concurrency, versioning of single files  Subversion (SVN)  File and directory moving and renaming, atomic commits  Git  Modern, de-facto standard

31 Concurrent edits (1/2) John David File v1 Both check out file Edits (lines 1-20) File v2 Edits (lines 30-40) commit Update Merged automatically!

32 Concurrent edits (2/2) John David File v1 Both check out file Edits (lines 1-20) File v2 Edits (lines 10-20) commit Update Conflict needing manual inte rvention!

33 Resolving conflicts  When changes can’t be merged automatically  SVN gives you 3 files: file.mine : your file file.rx : the remote file file : original file with marked conflicts  You can  Discard your changes  Discard others’ changes  Go over each conflict and arbitrate as appropriate

34 Interacting with SVN  Command line  Readily available on your lab machines  Graphical tools  Easier to use  Subclipse for Eclipse gives IDE/SVN integration  tortoiseSVN

35 실습 server  IP: 143.248.141.40, 143.248.141.42~143.248.141.44  ID: ee (e.g., ee20110111)  Password: ee324EE#@$

36 Svn password  20100456 63900 20100667 26834 20100967 48013 20110198 810 20110227 39617 20110319 16411 20110468 57700 20110548 64302 20110968 30860 20120184 19424 20120277 12976 20120508 17278 20120677 40029 20120973 61034  20121092 42821 20130098 42807 20130185 30791 20130234 13448 20130363 14421 20130394 20796 20130451 13008 20130477 53705 20130478 45122 20130505 4805 20130842 742 20140055 20389 20140244 45336 20140544 23793 20153347 5044

37 Command line SVN example (1/2) $ svn co –-username= > https://ina.kaist.ac.kr/svn/test $ cd test $ vim >.txt $ vim >. $ svn add >.txt $ svn commit -m 'adding a text file with my student id‘ $ svn update $ cd../ $ svn cp trunk tags/ >_submission $ svn commit -m 'making a tag of the trunk for submission!‘ $ svn up $ echo -e ” >" >> student.txt $ svn commit –m “added my student id”

38 Command line SVN example (2/2) Revision control lets you note (and then see) what you changed: > svn log student.txt r986 | ntolia | 2006-08-01 17:13:38 -0400 (Tue, 01 Aug 2006) | 6 lines This allows the sp to get rid of chunks early before a transfer is complete. Useful when a file is requested in-order and the file size > mem cache size > svn diff -r 1:2 student.txt Index: file =================================================================== --- file (revision 1) +++ file (revision 2) @@-1,2+1,3@@ This isatestfile -It startedwithtwolines +It nolongerhastwolines +it hasthree

39 General SVN tips  Update, make, test, only then commit  Merge often (svn up)  Comment commits  Avoid commit races  Modular design avoids conflicts

40 Know more  subversion.tigris.org for SVN software & info  svnbook.red-bean.com for SVN book

41 Makefile  You are on your own.

42 Make  Utility for executable building automation  Saves you time and frustration  Helps you test more and better

43 Simple gcc If we have files: prog.c: The main program file lib.c: Library.c file lib.h: Library header file % gcc -c prog.c -o prog.o % gcc -c lib.c -o lib.o % gcc lib.o prog.o -o binary

44 gcc flags Useful flags 1.-g: debugging hook 2.-Wall: show all warnings 3.-Werror: treat warning as errors 4.-O0, -O1, -O2, -O3: optimization level 5.-DDEBUG: macro for DEBUG (#define DEBUG) Avoid using dangerous optimizations that could affe ct correctness

45 More gcc % gcc -g -Wall -Werror -c prog.c -o prog.o % gcc -g -Wall -Werror -c lib.c -o lib.o % gcc -g -Wall -Werror lib.o prog.o -o binary This gets boring, fast!

46 Makefile basics Build targets target: dependency1 dependency2... unix command (start line with TAB)‏ unix command

47 binary: lib.o prog.o gcc -g -Wall lib.o prog.o -o binary lib.o: lib.c gcc -g -Wall -c lib.c -o lib.o prog.o: prog.c gcc -g -Wall -c prog.c -o prog.o clean: rm *.o binary Makefile example

48 Makefile variables (1/7) Variables CC = gcc CFLAGS = -g -Wall -Werror OUTPUT = binary

49 binary: lib.o prog.o gcc -g -Wall lib.o prog.o -o binary lib.o: lib.c gcc -g -Wall -c lib.c -o lib.o prog.o: prog.c gcc -g -Wall -c prog.c -o prog.o clean: rm *.o binary Makefile variables (2/7)

50 CC = gcc CFLAGS = -g -Wall OUTPUT = binary $(OUTPUT): lib.o prog.o $(CC) $(CFLAGS) lib.o prog.o -o binary lib.o: lib.c $(CC) $(CFLAGS) -c lib.c -o lib.o prog.o: prog.c $(CC) $(CFLAGS) -c prog.c -o prog.o clean: rm *.o $(OUTPUT)‏ Makefile variables (3/7)

51 CC = gcc CFLAGS = -g -Wall OUTPUT = binary $(OUTPUT): lib.o prog.o $(CC) $(CFLAGS) lib.o prog.o -o binary lib.o: lib.c $(CC) $(CFLAGS) -c lib.c -o lib.o prog.o: prog.c $(CC) $(CFLAGS) -c prog.c -o prog.o clean: rm *.o $(OUTPUT)‏ Makefile variables (4/7)

52 CC = gcc CFLAGS = -g -Wall OUTPUT = binary OBJFILES = lib.o prog.o $(OUTPUT): $(OBJFILES)‏ $(CC) $(CFLAGS) $(OBJFILES) -o binary lib.o: lib.c $(CC) $(CFLAGS) -c lib.c -o lib.o prog.o: prog.c $(CC) $(CFLAGS) -c prog.c -o prog.o clean: rm *.o $(OUTPUT)‏ Makefile variables (5/7)

53 CC = gcc CFLAGS = -g -Wall OUTPUT = binary OBJFILES = lib.o prog.o $(OUTPUT): $(OBJFILES)‏ $(CC) $(CFLAGS) $(OBJFILES) -o binary lib.o: lib.c $(CC) $(CFLAGS) -c lib.c -o lib.o prog.o: prog.c $(CC) $(CFLAGS) -c prog.c -o prog.o clean: rm *.o $(OUTPUT)‏ Makefile variables (6/7)

54 CC = gcc CFLAGS = -g -Wall OUTPUT = binary OBJFILES = lib.o prog.o $(OUTPUT): $(OBJFILES)‏ $(CC) $(CFLAGS) $(OBJFILES) -o binary %.o: %.c # $<: dependency (%.c)‏ # $@: target (%.o)‏ $(CC) $(CFLAGS) -c $< -o $@ clean: rm *.o $(OUTPUT)‏ Makefile variables (7/7)

55 Simple Test Script (1/2) %./server 6667 & % cat testfile.01 |./testscript.py % cat testfile.02 |./testscript.py % killall -9 server

56 Simple Test Script (2/2) #/bin/sh echo “Starting server on port 6667.”./server 6667 & SERVERPID = $! echo “Running test files.” cat testfile.01 |./testscript.py cat testfile.02 |./testscript.py echo “Killing server process.” kill $(SERVERPID)‏

57 CC = gcc CFLAGS = -g -Wall OUTPUT = binary OBJFILES = lib.o prog.o all: $(OUTPUT)‏ $(OUTPUT): $(OBJFILES)‏ $(CC) $(CFLAGS) $(OBJFILES) -o binary %.o: %.c # $<: dependencies (%.c)‏ # $@: target (%.o)‏ $(CC) $(CFLAGS) -c $< -o $@ clean: rm *.o $(OUTPUT)‏ Augmenting the Makefile for testing (1/2)

58 CC = gcc CFLAGS = -g -Wall OUTPUT = binary OBJFILES = lib.o prog.o all: $(OUTPUT) test $(OUTPUT): $(OBJFILES)‏ $(CC) $(CFLAGS) $(OBJFILES) -o binary %.o: %.c # $<: dependencies (%.c)‏ # $@: target (%.o)‏ $(CC) $(CFLAGS) -c $< -o $@ test: $(OUTPUT)‏ sh./testscript.sh clean: rm *.o $(OUTPUT)‏ Augmenting the Makefile for testing (2/2)

59 Using the Makefile % make % make test % make clean Know more Google –“makefile example” –“makefile template” –“make tutorial” –Chapter 3 of Dave Andersen’s notes

60 Extra: useful Unix commands (1/2) find “func_name” in files % grep -r func_name. replace “bad_func_name” to “good_func_n ame” % sed -e “s/bad_func_name/good_func_name/g”\ prog.c > prog.c.new

61 Extra: useful Unix commands (2/2) find a file named “prog.c” % find -name prog.c download files from the Internet % wget http://address/to/file.tar.gz untar and unzip a file % tar xzvf file.tar.gz

62 Assignment  You have access to svn repository at https://ina.kaist.ac.kr/svn/ https://ina.kaist.ac.kr/svn/<student  However, we will change your password (to some unknown integer).  Luckily, we made a server that gives you a hint.  When your client asks whether the username and the password match, the server can tell you whether the password provided is less than, equal to, or greater than your real password.

63 Assignment I  Protocol is defined in the document. (See course web page). Query Response Server (provided by the instructor) Client  Part I: Assume the network is reliable. (due 9/14)  Part II: The server may drop a packet. (due 9/24)


Download ppt "NETWORK PROGRAMMING INTRO TO DISTRIBUTED SYSTEMS FALL 2015 L3-socket Dongsu Han Some material taken from publicly available lecture slides including Srini."

Similar presentations


Ads by Google