290 likes | 296 Views
Learn about the functions of TCP protocol, including connection-oriented communication, sequence numbers, flow control, reliable data transfer, and congestion control. Also, get an introduction to sockets and how to use them for creating a connection between applications.
E N D
Protocols 2 References: RFC’s 791, 793, 768, 826 Slides provided by Bob Cotter, updated by Shuai Zhao
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 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
Segment Sequence Numbers • 32 bit field (2^32 numbers) • suggest timer based initialization (4 microsec.) • wrap-around at 4.55 hrs.
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
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
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
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)
TCP - Flow Control Packets 0 1 2 3 4 5 6 7 window (8) sent ack.
TCP - Congestion Control • Window-size backoff • multiplicative decrease • additive increase
Sockets Introduction IP Addresses 134.193.2.250 134.193.2.254
Sockets IntroductionPorts 134.193.2.250 134.193.2.254 1 2 3 7 8 9
Sockets IntroductionSocket App 1 App 2 App 3 2 3 1 134.193.2.254
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
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
Basic Socket FunctionsServer • Read ( ) • Read an incoming message • Write ( ) • Send a message to client • Close ( ) • Close the socket
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
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 ( )
Additional Socket Functions • Byte ordering functions • DEC / Intel vs Internet / 68000 • Name resolution functions • host / protocol / service • by name / address / port • Other Stuff
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 ( )
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]
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 */ };
Getaddrinfo() • #include <sys/types.h> • #include <sys/socket.h> • #include <netdb.h> • int getaddrinfo(const char *node, // e.g. "www.example.com" or IP const char *service, // e.g. "http" or port number const struct addrinfo *hints, struct addrinfo **res);
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 */ };
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 */ };
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?
Next Step:Client/Server in Windows • CSTP Windows Support Environment • Windows Operating Environment • Windows Programming Environment • Sockets