Top Banner
1 © David Morgan 2003-12 Linux Networking: Linux Networking: tcp tcp David Morgan © David Morgan 2003-12 a network TCP process application process TCP process application process data data data data TCP context and interfaces TCP context and interfaces Computer A Computer B
15

Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

Dec 06, 2018

Download

Documents

vanthuan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

1

© David Morgan 2003-12

Linux Networking: Linux Networking: tcptcp

David Morgan

© David Morgan 2003-12

a network

TCP process

application process

TCP process

application process

dat

a

dat

a

dat

a

dat

a

TCP context and interfacesTCP context and interfaces

Computer A Computer B

Page 2: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

2

© David Morgan 2003-12

TCP purposes and featuresTCP purposes and features

� Basic data transfer

� Process-to-process multiplexing

� Reliability

� Flow control

� Connections

© David Morgan 2003-12

Transport purposes and featuresTransport purposes and features

� process-to-process data transfer

� reliability

� flow control

� connections

TCPTCP UDPUDP

*

* discard, no recovery

Page 3: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

3

© David Morgan 2003-12

Basic data transfer methodBasic data transfer method

� Sending TCP

– “blocks” (segments) the data stream

– gives each block its own packet (“segment”)

� Receiving TCP

– reassembles the blocks into original stream

© David Morgan 2003-12

MultiplexedMultiplexed

““processprocess--toto--processprocess”” transfertransfer

� processes given identifying numbers (“ports”)

� IP address/TCP port pair is a local “socket”

� pair of sockets, one on each of 2 machines, associated with a unique bilateral “connection”

� packets between machines belong to a particular one of the machines’ connections

� overall packet flow contains separate flow for each connection

Page 4: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

4

© David Morgan 2003-12

ReliabilityReliability

� problems with data– damaged

– lost

– duplicated

– delivered out-of-order

� solution

– Sending TCP Receiving TCP

– number the data acknowledge good data

– require acknowledgement discard bad data

– resend unacknowledged reassemble by the numbers

© David Morgan 2003-12

Flow controlFlow control

� Problem

– sending TCP might overwhelm receiving TCP

� Solution

– constrain sender by requiring receiver’s

permission which data, by number range, may be

transmitted

Page 5: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

5

© David Morgan 2003-12

TCP connectionsTCP connections

� relability/flow control require state info

� each TCP initializes/maintains it for each data stream

� connection ends, state info data structures freed

© David Morgan 2003-12

TCP packet (segment) headerTCP packet (segment) header

32 bits

Page 6: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

6

© David Morgan 2003-12

““FlagFlag”” bitsbits

TCP Header

TCP flags field

URG = urgent

ACK= acknowledgement

PSH = push

RST = reset

SYN = synchronize

FIN = finish

© David Morgan 2003-12

Establishing a Establishing a ““connectionconnection””

� client sends packet with SYN bit set

� server returns packet with SYN & ACK set

� client sends packet with ACK set

� called “3-way handshake”

� connection establishment’s signature sequence

Page 7: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

7

© David Morgan 2003-12

33--way handshakeway handshake

host1 host2

�T

i m

e

SYN=1

SYN=1, ACK=1

ACK=1

© David Morgan 2003-12

TCP TCP -- SYNSYN

SYN flag set indicates new

connection request

Client Server

Page 8: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

8

© David Morgan 2003-12

TCP TCP -- SYN/ACKSYN/ACK

SYN and ACK

Flags set

1592481969 Ack = next expected Seq

© David Morgan 2003-12

TCP ACKTCP ACK

ACK Flag

Seq = 1592481969

Page 9: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

9

© David Morgan 2003-12

TCP is TCP is ““stream orientedstream oriented””

� data transmitted during connection viewed as one continuous stream

� bytes are consecutively numbered

� stream segmented into packets for transmittal

© David Morgan 2003-12

File deconstructionFile deconstruction

into sequenced packetsinto sequenced packets

data for 1st packet

0 1 1000 1999 499,999

data for 2nd packet

a 500,000-byte file

byte numbers

1st packet – 0

2nd packet – 1000

3rd packet – 2000

etc

sequence number assignments:Packet’s sequence number is the

byte-stream number of the 1st

data byte in the packet.

Page 10: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

10

© David Morgan 2003-12

Sequence numbersSequence numbers

� Relative to byte stream, not packet series

� Initial sequence number randomly chosen

– during connection setup handshake

– actual byte count does not start from zero

� two number sequences

– TCP carries 2 flows (full-duplex)

– a separate sequence for each flow/direction

© David Morgan 2003-12

AcknowlegementAcknowlegement numbernumber

� also byte-stream relative

� is sequence number next-expected from partner

� acknowledges receipt of all prior bytes

� therefore called “cumulative” acknowlegement

� acknowlegements are piggybacked

– client-to-server acks ride with server-to-client data

– server-to-client acks ride with client-to-server data

Page 11: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

11

© David Morgan 2003-12

Numbering exampleNumbering example**::

((““CC”” keystroke in telnet)keystroke in telnet)

host1 host2

�T

i m

e SEQ=42 ACK=79

SEQ=79, ACK=43

SEQ= 43 ACK=80

Data=“C”

* Kurose & Ross, p. 234

Host ACKs receipt of

“C”, echoes back “C”

Host ACKs receipt of

“C”

Starting SEQs:

host1: 42

host2: 79

Data=“C”

© David Morgan 2003-12

Traffic controlTraffic control

� Flow control

– adapt rate to partner’s capacity

– depends on spare room in partner’s receive buffer

� Congestion control

– adapt rate to intervening path’s capacity

– depends on “just-about-anything”

Page 12: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

12

© David Morgan 2003-12

Flow control: receive windowFlow control: receive window

receive “window” (variable size)

receive buffer (fixed size)

spare room TCP data in

buffer

data from IP

to

application

process

© David Morgan 2003-12

Partner given Partner given ““willingnesswillingness--toto--acceptaccept””

spare room TCP data in

buffer

n bytes

n

Page 13: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

13

© David Morgan 2003-12

Congestion controlCongestion control

� cap sent-but-unacknowledged data amount

� congestion limit can exceed flow limit

� vary the cap per perceived network congestion

– cap more severely when packet loss rate rises

– relax cap when it drops

© David Morgan 2003-12

TCP Socket TCP Socket

� Connection defined by socket pair

– Combination of IP address and port = socket

� Client IP = 10.100.13.138

� Client Port = 32825

– Client Socket = 10.100.13.138:32825

� Server IP = 216.239.39.100

� Server Port = 80 (HTTP Default)

– Server Socket = 216.239.39.100:80

Page 14: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

14

© David Morgan 2003-12

wellwell--known TCP portsknown TCP ports

� 21 - FTP Control

� 20 - FTP Data

� 23 - Telnet

� 25 - SMTP (Simple Mail Transport Protocol)

� 80 - HTTP

� 110 - POP3

� 119 - Network News Transfer Protocol

© David Morgan 2003-12

TCP connection teardownTCP connection teardown

host1 host2

�T

i m

e

FIN=1, ACK=1

FIN=1, ACK=1

ACK=1

Page 15: Linux Networking: tcp - Santa Monica College- Faculty ...homepage.smc.edu/morgan_david/linux/n-protocol-04-tcp.pdf · 5 © David Morgan 2003-12 ... spare room TCP data in buffer n

15

© David Morgan 2003-12

FIN/ACKFIN/ACK

© David Morgan 2003-12

BiblioBiblio

� Computer Networking, Kurose & Ross, Addison-Wesley, 2003; Chapter 3 “Transport Layer”

� “Telnet Protocol Specification,” RFC 854, 1983