socket data structures and how the tcp protocol worksgersch/cs457/cs457_tutorial2.pdf ·...
TRANSCRIPT
![Page 1: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/1.jpg)
Socket Data structures and
How the TCP protocol works
TA: Awad A Younis Class: CS457
Fall 2014
![Page 2: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/2.jpg)
�Outline
�Data structures for TCP socket
�Connection Establishment (Client-side)
�Socket setup (Server-side)
�Closing TCP Connection
2
![Page 3: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/3.jpg)
�Socket structure (TCP socket)
• Data structure associate with each socket
• Programs refer to data structures using descriptor returned by socket
servSock= socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))
• More than one descriptor can refer to the same socket structure
Send and receive Queues
Protocol state: Closed, Connecting Listening, Established…
3
![Page 4: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/4.jpg)
�What happen when you create and use a socket? 1. Connection Establishment (Client-side)
• When the client creates a new socket (socket()), it is in the closed state:
• When the client calls connect() with port number (Q) and IP address (W.X.Y.Z),
the system fills in the four fields in the socket structure.
But we did not assign any Local port or Local IP
4
![Page 5: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/5.jpg)
�What happen when you create and use a socket? 1. Connection Establishment (Client-side)
• TCP opens three-way handshake
1. Connection request from the client to the server
2. Acknowledgment from server to client
3. Another Acknowledgment from client to server
• The client considers the connection as established when it received AK from
the server.
5
![Page 6: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/6.jpg)
�What happen when you create and use a socket? • The whole process (client-side)
Note: • If there is no acknowledgement received from the server, client times out and gives up. • This may take order of minutes
6
![Page 7: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/7.jpg)
�What happen when you create and use a socket? 2. Socket setup (Server-side)
• This step is similar as in the client when the socket() function is called
• Using the bind() function the server needs to bind to port number and IP address known to the client.
7
![Page 8: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/8.jpg)
�What happen when you create and use a socket? 2. Socket setup (Server-side)
• When the server calls listen() function, the state of the socket is changed to
listening (ready to accept new connection).
• Any client connection request comes to server before the call to listen() will be rejected.
8
![Page 9: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/9.jpg)
�What happen when you create and use a socket? • The whole process (server-side): bind() and listen()
9
![Page 10: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/10.jpg)
�What happen when you create and use a socket? 2. Socket setup (Server-side): accept()
• When the client connection request arrives, a new socket structure is created for the
connection.
• The new socket state is set to connecting and it is added to not-quite-connected
sockets.
Note: new socket port number and IP address is the same as the listening socket (Wait a minute).
10
![Page 11: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/11.jpg)
�What happen when you create and use a socket? 2. Socket setup (Server-side): accept()
• Example:
• How an incoming packet can be matched to sockets in the same host which have the same local port number and IP Address?
11
Packet
Source IP Address 172.16.1.10
Source Port 56789
Destination IP Address 10.1.2.3
Destination port 99
![Page 12: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/12.jpg)
�What happen when you create and use a socket? 2. Socket setup (Server-side): accept()
• When the third message (of the three handshakes messages) comes from the client, the
new socket’s state is set to Established
• The original server socket does not change state
12
![Page 13: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/13.jpg)
�What happen when you create and use a socket? • The whole process (server-side): accept()
13
![Page 14: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/14.jpg)
�What happen when you create and use a socket? 3. Closing TCP Connection
• When one application calls close() before the other end closes (what?):
1. TCP implementation transmits any data remaining in the SendQ
2. Handshake message is sent
3. Descriptor is deallocated
4. The state is set to closing
• When the acknowledgment for the close handshake is received, the sate changes to Half-Closed (Remains until the other end’s HSM is received).
14
![Page 15: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/15.jpg)
�What happen when you create and use a socket? 3. Closing TCP Connection
• When the other end’s close handshake message is arrived, an acknowledgment is sent and sate changes to Time-Wait.
• Why Time-Wait state? � The possibility of a message being delayed in a network � Twice the time a packet can remain in a network. � It stays for anywhere from 30 second to 2 minutes
15
![Page 16: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/16.jpg)
�What happen when you create and use a socket? 3. Closing TCP Connection
• What will happen to the end point that does not close first?
• When the closing handshake message arrives:
1. An acknowledgement is sent immediately
2. The connection state becomes Close-Wait
3. When the application calls close():
• Descriptor is deallocated
• HSM initiated
• Deallocate socket structure
16
![Page 17: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/17.jpg)
�What happen when you create and use a socket? 3. Closing TCP Connection: the whole process
17
![Page 18: Socket Data structures and How the TCP protocol worksgersch/cs457/CS457_tutorial2.pdf · 2014-09-03 · What happen when you create and use a socket? 2. Socket setup (Server-side):](https://reader034.vdocument.in/reader034/viewer/2022052408/5f056dd37e708231d412eb49/html5/thumbnails/18.jpg)
Thank You
Reference • Pocket Guide to TCP/IP Socket, by Michael J. Donahoo and Kenneth
L. Calvert • Beej’s Guide to Network Programming Using Internet Sockets, by
Brian "Beej" Hall. (http://www.cs.columbia.edu/~danr/courses/6761/Fall00/hw/pa1/6761-sockhelp.pdf)
18