eec-484/584 computer networks lecture 15 wenbing zhao [email protected] (part of the slides are based...
Post on 19-Dec-2015
213 views
TRANSCRIPT
EEC-484/584EEC-484/584Computer NetworksComputer Networks
Lecture 15Lecture 15
Wenbing ZhaoWenbing Zhao
[email protected]@ieee.org(Part of the slides are based on Drs. Kurose & Ross’s slides (Part of the slides are based on Drs. Kurose & Ross’s slides
for their for their Computer Networking Computer Networking book, and book, and on materials supplied by on materials supplied by Dr. Louise Moser at UCSB and Prentice-Hall)Dr. Louise Moser at UCSB and Prentice-Hall)
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
22
OutlineOutline
• UDP
• TCP– Segment header structure– Connection management
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
33
UDP: User Datagram ProtocolUDP: User Datagram Protocol
• “No frills,” “bare bones” Internet transport protocol• “Best effort” service, UDP segments may be:
– Lost– Delivered out of order to app
• Connectionless:– No handshaking between UDP sender, receiver– Each UDP segment handled independently of
others
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
44
Why is There a UDP?Why is There a UDP?
• No connection establishment (which can add delay)
• Simple: no connection state at sender receiver
• Small segment header
• No congestion control: UDP can blast away as fast as desired
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
55
UDPUDP• Often used for streaming
multimedia apps– Loss tolerant– Rate sensitive
• Other UDP uses– DNS– SNMP
• Reliable transfer over UDP: add reliability at application layer
source port # dest port #
32 bits
Applicationdata
(message)
UDP segment format
length checksumLength, in
bytes of UDPsegment,
includingheader
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
66
UDP ChecksumUDP Checksum
Sender:• treat segment contents as
sequence of 16-bit integers• checksum: addition (1’s
complement sum) of segment contents
• sender puts checksum value into UDP checksum field
Receiver:• compute checksum of
received segment• check if computed checksum
equals checksum field value:– NO - error detected– YES - no error detected. But
maybe errors nonetheless?
Goal: detect “errors” (e.g., flipped bits) in transmitted segment
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
77
Internet Checksum ExampleInternet Checksum Example
• When adding numbers, a carryout from the most significant bit needs to be added to the result
• Example: add two 16-bit integers
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
To know more: http://www.netfor2.com/udpsum.htmhttp://www.netfor2.com/checksum.html
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
88
TCP: OverviewTCP: Overview• Full duplex data:
– Bi-directional data flow in same connection
– MSS: maximum segment size
• Connection-oriented: – Handshaking (exchange
of control msgs) init’s sender, receiver state before data exchange
• Flow controlled:– Sender will not overwhelm
receiver
• Point-to-point:– One sender, one receiver
• Reliable, in-order byte steam:– No “message boundaries”
• Pipelined:– TCP congestion and flow
control set window size
• Send & receive buffers
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
99
TCP: OverviewTCP: Overview
• TCP connection is byte stream, not message stream, no message boundaries
• TCP may send immediately or buffer before sending• Receiver stores the received bytes in a buffer
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1010
TCP Segment StructureTCP Segment Structure
source port # dest port #
32 bits
applicationdata
(variable length)
sequence number
acknowledgement numberReceive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG: urgent data (generally not used)
ACK: ACK #valid
PSH: push data now(generally not used)
RST, SYN, FIN:connection estab(setup, teardown
commands)
# bytes rcvr willingto accept
countingby bytes of data(not segments!)
Internetchecksum
(as in UDP)
A TCP segment must fit into an IP datagram!
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1111
The TCP Segment HeaderThe TCP Segment Header
• Source port and destination port: identify local end points of the connection– Source and destination end points together identify the connection
• Sequence number: identify the byte in the stream of data that the first byte of data in this segment represents
• Acknowledgement number: the next sequence number that the sender of the ack expects to receive– Ack # = Last received seq num + 1– Ack is accumulative: an ack of 5 means 0-4 bytes have been
received
• TCP header length – number of 32-bit words in header
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1212
The TCP Segment HeaderThe TCP Segment Header
• URG – indicates urgent pointer field is set• Urgent pointer – points to the seq num of the last byte in a
sequence of urgent data• ACK – acknowledgement number is valid• SYN – used to establish a connection
– Connection request: ACK = 0, SYN = 1– Connection confirm: ACK=1, SYN = 1
• FIN – release a connection, sender has no more data• RST – reset a connection that is confused• PSH – sender asked to send data immediately
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1313
The TCP Segment HeaderThe TCP Segment Header
• Receiver window size –number of bytes that may be sent beyond the byte acked
• Checksum – add the header, the data, and the conceptual pseudoheader as 16-bit words, take 1’s complement of sum– For more info: http://www.netfor2.com/tcpsum.htm
http://www.netfor2.com/checksum.html
• Options – provides a way to add extra facilities not covered by the regular header– E.g., communicate buffer sizes during set up
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1414
TCP Sequence Numbers and ACKsTCP Sequence Numbers and ACKs
Sequence numbers:– byte stream “number” of
first byte in segment’s data
ACKs:– seq # of next byte
expected from other side
– cumulative ACK
Host A Host B
Seq=42, ACK=79, data = ‘C’
Seq=79, ACK=43, data = ‘C’
Seq=43, ACK=80
Usertypes
‘C’
host ACKsreceipt
of echoed‘C’
host ACKsreceipt of
‘C’, echoesback ‘C’
timesimple telnet scenario
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1515
TCP Connection ManagementTCP Connection Management
TCP sender, receiver establish “connection” before exchanging data segments
• Initialize TCP variables:– Sequence numbers– Buffers, flow control info (e.g. RcvWindow)
• Client: connection initiator Socket clientSocket = new
Socket("hostname","port number"); • Server: contacted by client Socket connectionSocket = welcomeSocket.accept();
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1616
TCP Connection ManagementTCP Connection Management
Three way handshake:
Step 1: client host sends TCP SYN segment to server
– specifies initial sequence number
– no data
Step 2: server host receives SYN, replies with SYN/ACK segment
– server allocates buffers
– specifies server initial sequence number
Step 3: client receives SYN/ACK, replies with ACK segment, which may contain data
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1717
TCP Connection ManagementTCP Connection Management
Three way handshake:• SYN segment is considered
as 1 byte• SYN/ACK segment is also
considered as 1 byte
client
SYN (seq=x)
server
SYN/ACK (seq=y, ACK=x+1)
ACK (seq=x+1, ACK=y+1)
connect accept
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1818
TCP Connection ManagementTCP Connection Management
Closing a connection:
client closes socket: clientSocket.close();
Step 1: client end system sends TCP FIN control segment to
server
Step 2: server receives FIN, replies with ACK. Closes connection, sends FIN.
client
FIN
server
ACK
ACK
FIN
close
close
closed
tim
ed w
ait
Spring Semester 2007Spring Semester 2007 EEC-484/584: Computer NetworksEEC-484/584: Computer Networks Wenbing ZhaoWenbing Zhao
1919
TCP Connection ManagementTCP Connection Management
Step 3: client receives FIN, replies with ACK.
– Enters “timed wait” - will respond with ACK to received FINs
Step 4: server, receives ACK. Connection closed.
Note: with small modification, can handle simultaneous FINs
client
FIN
server
ACK
ACK
FIN
closing
closing
closed
tim
ed w
ait
closed