280 likes | 352 Views
Protocols 2. References: RFC’s 791, 793, 768, 826. Lecture Outline. TCP Header TCP Functions Introduction to Sockets. TCP Protocol Functions. Connection Oriented Sequence Numbers Flow Control Reliable Data Transfer Congestion Control. TCP Header.
E N D
Protocols 2 References: RFC’s 791, 793, 768, 826 CS423 (cotter)
Lecture Outline • TCP Header • TCP Functions • Introduction to Sockets CS423 (cotter)
TCP Protocol Functions • Connection Oriented • Sequence Numbers • Flow Control • Reliable Data Transfer • Congestion Control CS423 (cotter)
TCP Header 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ CS423 (cotter)
Segment Sequence Numbers • 32 bit field (2^32 numbers) • suggest timer based initialization (4 microsec.) • wrap-around at 4.55 hrs. CS423 (cotter)
TCP - Connection control 2-way Handshake 3-way Handshake System A System B System A System B syn syn i syn j ack i+1 syn data i+1 ack j+1 data CS423 (cotter)
TCP Window • Identify how much data a receiving site can hold (buffer size) in bytes. • Example: • Window size is 4096 bytes • Assume packet size is 512 bytes (with 40 additional bytes for TCP and IP headers). • Initial sequence number is 123000 CS423 (cotter)
TCP Window System A System B seq 123000 seq 123512 seq 124024 ack 124536 credit 4096 seq 124536 seq 125048 seq 125560 seq 126072 ack 126584 credit 4096 CS423 (cotter)
TCP Window (recv failure) System A System B seq 123000 seq 123512 seq 124024 ack 124536 credit 4096 seq 124536 seq 125048 seq 125560 seq 126072 ack 125048 credit 4096 CS423 (cotter)
TCP-Reliable Data Transfer • Lost Packet Retransmission • Go-Back-N • Selective Repeat • Round Trip Time Calculation • time from send to ack • RTT = X * old_RTT + (1 - X)*new_RTT • Karn’s Algorithm (don’t time retransmissions) CS423 (cotter)
TCP - Flow Control Packets 0 1 2 3 4 5 6 7 window (8) sent ack. CS423 (cotter)
TCP - Congestion Control • Window-size backoff • multiplicative decrease • additive increase CS423 (cotter)
Sockets Introduction IP Addresses 134.193.2.250 134.193.2.254 CS423 (cotter)
Sockets IntroductionPorts 134.193.2.250 134.193.2.254 1 2 3 7 8 9 CS423 (cotter)
Sockets IntroductionSocket App 1 App 2 App 3 2 3 1 134.193.2.254 CS423 (cotter)
Internet Ports • 16 bit fields (64k ports possible) • Duplicate sets for TCP and UDP • Well-known Ports ( 1-255 reserved) • ftp: 21 telnet: 23 finger: 79 • time: 37 echo: 7 SNMP: 161 • BSD usage conventions • 1 - 1024 Privileged Ports • 1025 - 5000 General Applications (arbitrary ports) • 5000 + Site Specific services CS423 (cotter)
Basic Socket FunctionsServer • Socket ( ) • Create a socket of a particular type • Bind ( ) • Bind that socket to a specific port • Listen ( ) • Wait for an incoming message • Accept ( ) • Create a new socket and return new socket ID to server CS423 (cotter)
Basic Socket FunctionsServer • Read ( ) • Read an incoming message • Write ( ) • Send a message to client • Close ( ) • Close the socket CS423 (cotter)
Basic Socket FunctionsClient • Socket ( ) • Create a socket of a particular type • Connect ( ) • Establish a connection to a remote Port/Socket • Read ( ) / Write ( ) • Send and receive messages to/from remote socket • Close ( ) • Close the socket CS423 (cotter)
Create a Socket socket ( ) Create a Socket socket ( ) Bind address to socket bind ( ) Put socket in listen state listen ( ) Wait for connection requests and accept when one arives accept ( ) Make a connection request connect ( ) Socket Interaction Server Client Bind address to socket bind ( ) CS423 (cotter)
Additional Socket Functions • Byte ordering functions • DEC / Intel vs Internet / 68000 • Name resolution functions • host / protocol / service • by name / address / port • Other Stuff CS423 (cotter)
Information Byte Ordering • Convert from host to network order htons ( ) /* used to convert a short integer */ htonl ( ) /* used to convert a long integer */ • Convert from network to host order ntohs ( ) ntohl ( ) CS423 (cotter)
Host Name Lookup • Convert Domain name to IP address • hostent *hptr gethostbyname (char *newname) struct hostent { char *h_name; /* official host name */ char **h_aliases; /* other aliases */ int h_addrtype; /* address type */ int h_length; /* address length */ char **h_addr_list; /* list of addresses*/ }; #define h_addr h_addr_list[0] CS423 (cotter)
Port Number Lookup • Used for well-known services • servent *sptr getservbyname(char *service) • struct servent { char *s_name; /* official service name */ char **s_aliases; /* other aliases */ int s_port; /* port for this service */ char *s_proto; /* protocol to use */ }; CS423 (cotter)
Protocol Number Lookup • Used to convert protocol name to official number • protoent *pptr getprotobyname ( char *protocol) struct protoent { char *p_name; /* official protocol name */ char **p_aliases; /* list of aliases allowed */ short p_proto; /* official protocol number */ }; CS423 (cotter)
Socket Address Structure • connect (sd, (struct sockaddr far *) &addr_Loc, sizeof(addr_Loc)); struct sockaddr_in { u_short sin_family; /* address family */ u_short sin_port; /* address port */ struct in_addr sin_addr; /* IP address (union) */ char sin_zero[8]; /* filler */ }; CS423 (cotter)
Course Review: • Evolution of C / S Architecture • how did we get to Client Server? • Objectives of C/S Architecture • What problem is C/S trying to solve? • C / S transport (specifically Internet model) • How do the lower protocol layers work? • Socket Concepts • How do sockets (in general) work? CS423 (cotter)
Next Step:Client/Server in Windows • CSTP Windows Support Environment • Windows Operating Environment • Windows Programming Environment • Sockets CS423 (cotter)