1 / 29

TCP Protocol Functions and Socket Introduction

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.

lynnhill
Download Presentation

TCP Protocol Functions and Socket Introduction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Protocols 2 References: RFC’s 791, 793, 768, 826 Slides provided by Bob Cotter, updated by Shuai Zhao

  2. Lecture Outline • TCP Header • TCP Functions • Introduction to Sockets

  3. TCP Protocol Functions • Connection Oriented • Sequence Numbers • Flow Control • Reliable Data Transfer • Congestion Control

  4. 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  5. 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

  6. Segment Sequence Numbers • 32 bit field (2^32 numbers) • suggest timer based initialization (4 microsec.) • wrap-around at 4.55 hrs.

  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 123000

  8. 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

  9. 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

  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)

  11. TCP - Flow Control Packets 0 1 2 3 4 5 6 7 window (8) sent ack.

  12. TCP - Congestion Control • Window-size backoff • multiplicative decrease • additive increase

  13. Sockets Introduction IP Addresses 134.193.2.250 134.193.2.254

  14. Sockets IntroductionPorts 134.193.2.250 134.193.2.254 1 2 3 7 8 9

  15. Sockets IntroductionSocket App 1 App 2 App 3 2 3 1 134.193.2.254

  16. 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

  17. 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

  18. Basic Socket FunctionsServer • Read ( ) • Read an incoming message • Write ( ) • Send a message to client • Close ( ) • Close the socket

  19. 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

  20. 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 ( )

  21. Additional Socket Functions • Byte ordering functions • DEC / Intel vs Internet / 68000 • Name resolution functions • host / protocol / service • by name / address / port • Other Stuff

  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 ( )

  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_addr h_addr_list[0]

  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 */ };

  25. 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);

  26. 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 */ };

  27. 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 */ };

  28. 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?

  29. Next Step:Client/Server in Windows • CSTP Windows Support Environment • Windows Operating Environment • Windows Programming Environment • Sockets

More Related