CSTP FS01CS423 (cotter)1 Protocols 2 References: RFC’s 791, 793, 768, 826
CSTP FS01CS423 (cotter)2 Lecture Outline TCP Header TCP Functions Introduction to Sockets
CSTP FS01CS423 (cotter)3 TCP Protocol Functions Connection Oriented Sequence Numbers Flow Control Reliable Data Transfer Congestion Control
CSTP FS01CS423 (cotter)4 TCP Header | 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 |
CSTP FS01CS423 (cotter)5 TCP - Connection control 2-way Handshake 3-way Handshake System ASystem B syn syn i syn j ack i+1 data i+1 ack j+1 data
CSTP FS01CS423 (cotter)6 Segment Sequence Numbers 32 bit field (2^32 numbers) suggest timer based initialization (4 microsec.) wrap-around at 4.55 hrs.
CSTP FS01CS423 (cotter)7 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
CSTP FS01CS423 (cotter)8 TCP Window System ASystem B seq ack credit 4096 ack credit 4096 seq seq seq seq seq seq
CSTP FS01CS423 (cotter)9 TCP Window (recv failure) System ASystem B seq ack credit 4096 ack credit 4096 seq seq seq seq seq seq
CSTP FS01CS423 (cotter)10 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)
CSTP FS01CS423 (cotter)11 TCP - Flow Control Packets sent ack. window (8)
CSTP FS01CS423 (cotter)12 TCP - Congestion Control Window-size backoff –multiplicative decrease –additive increase
CSTP FS01CS423 (cotter)13 Sockets Introduction IP Addresses
CSTP FS01CS423 (cotter)14 Sockets Introduction Ports
CSTP FS01CS423 (cotter)15 Sockets Introduction Socket App 1 App 2App
CSTP FS01CS423 (cotter)16 Internet Ports 16 bit fields (64k ports possible) Duplicate sets for TCP and UDP Well-known Ports ( reserved) –ftp: 21telnet:23finger: 79 –time:37echo:7SNMP: 161 BSD usage conventions – Privileged Ports – General Applications (arbitrary ports) –5000 +Site Specific services
CSTP FS01CS423 (cotter)17 Basic Socket Functions Server 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
CSTP FS01CS423 (cotter)18 Basic Socket Functions Server Read ( ) –Read an incoming message Write ( ) –Send a message to client Close ( ) –Close the socket
CSTP FS01CS423 (cotter)19 Basic Socket Functions Client 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
CSTP FS01CS423 (cotter)20 Socket Interaction Client Server Wait for connection requests and accept when one arives accept ( ) Create a Socket socket ( ) Bind address to socket bind ( ) Put socket in listen state listen ( ) Create a Socket socket ( ) Bind address to socket bind ( ) Make a connection request connect ( )
CSTP FS01CS423 (cotter)21 Additional Socket Functions Byte ordering functions –DEC / Intel vs Internet / Name resolution functions –host / protocol / service –by name / address / port Other Stuff
CSTP FS01CS423 (cotter)22 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 ( )
CSTP FS01CS423 (cotter)23 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_addrh_addr_list[0]
CSTP FS01CS423 (cotter)24 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 */ };
CSTP FS01CS423 (cotter)25 Protocol Number Lookup Used to convert protocol name to official number protoent *pptr getprotobyname ( char *protocol) structprotoent{ char *p_name;/* official protocol name */ char**p_aliases;/* list of aliases allowed */ short p_proto;/* official protocol number */ };
CSTP FS01CS423 (cotter)26 Socket Address Structure connect (sd, (struct sockaddr far *) &addr_Loc, sizeof(addr_Loc)); struct sockaddr_in { u_shortsin_family; /* address family */ u_shortsin_port;/* address port */ struct in_addrsin_addr;/* IP address (union) */ charsin_zero[8];/* filler */ };
CSTP FS01CS423 (cotter)27 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?
CSTP FS01CS423 (cotter)28 Next Step: Client/Server in Windows CSTP Windows Support Environment Windows Operating Environment Windows Programming Environment Sockets