1. Trang chủ
  2. » Giáo án - Bài giảng

mạng máy tính nâng cao nguyễn đức thái chương 3 transport sinhvienzone com

106 54 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 106
Dung lượng 1,87 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Transport services and protocols provide logical communication between app processes running on different hosts  transport protocols run in end systems  send side: breaks app messages

Trang 1

A note on the use of these ppt slides:

We’re making these slides freely available to all (faculty, students, readers)

They’re in PowerPoint form so you can add, modify, and delete slides

(including this one) and slide content to suit your needs They obviously

represent a lot of work on our part In return for use, we only ask the

following:

 If you use these slides (e.g., in a class) in substantially unaltered form,

that you mention their source (after all, we’d like people to use our book!)

 If you post any slides in substantially unaltered form on a www site, that

you note that they are adapted from (or perhaps identical to) our slides, and

note our copyright of this material.

Thanks and enjoy! JFK/KWR

SinhVienZone.Com

Trang 2

Chapter 3: Transport Layer

 UDP: connectionless transport

 TCP: connection-oriented transport

 TCP congestion control

SinhVienZone.Com

Trang 3

 3.7 TCP congestion control

SinhVienZone.Com

Trang 4

Transport services and protocols

 provide logical communication

between app processes

running on different hosts

 transport protocols run in

end systems

 send side: breaks app

messages into segments, passes to network layer

 rcv side: reassembles

segments into messages, passes to app layer

 more than one transport

protocol available to apps

 Internet: TCP and UDP

application

transport

network data link physical

application

transport

network data link physical

SinhVienZone.Com

Trang 5

Transport vs network layer

 relies on, enhances,

network layer services

 network-layer protocol

= postal service

SinhVienZone.Com

Trang 6

Internet transport-layer protocols

network data link physical

network data link physical

network data link physical

network data link physical

network data link physical

network data link physical

application

transport

network data link physical

SinhVienZone.Com

Trang 7

 3.7 TCP congestion control

SinhVienZone.Com

Trang 8

link physical

application transport network link physical

demultiplexing)

Multiplexing at send host:

SinhVienZone.Com

Trang 9

How demultiplexing works

 host receives IP datagrams

 each datagram has source

IP address, destination IP

address

 each datagram carries 1

transport-layer segment

 each segment has source,

destination port number

 host uses IP addresses & port

numbers to direct segment to

appropriate socket

source port # dest port #

32 bits

applicationdata (message)other header fields

TCP/UDP segment format

SinhVienZone.Com

Trang 10

(dest IP address, dest port number)

 When host receives UDP segment:

 checks destination port number in segment

 directs UDP segment to socket with that port number

 IP datagrams with different source IP addresses and/or source port numbers directed

to same socket

SinhVienZone.Com

Trang 11

Connectionless demux (cont)

DatagramSocket serverSocket = new DatagramSocket(6428);

serverIP: C

SP: 6428 DP: 9157

SP: 9157 DP: 6428

SP: 6428 DP: 5775

SP: 5775 DP: 6428

SP provides “return address”

SinhVienZone.Com

Trang 12

 dest port number

 recv host uses all four

 each socket identified by its own 4-tuple

 Web servers have different sockets for each connecting client

 non-persistent HTTP will have different socket for each request

SinhVienZone.Com

Trang 13

serverIP: C

SP: 9157 DP: 80

SP: 9157 DP: 80

D-IP:C

S-IP: A D-IP:C

S-IP: B

SP: 5775 DP: 80 D-IP:C S-IP: B

SinhVienZone.Com

Trang 14

serverIP: C

SP: 9157 DP: 80

SP: 9157 DP: 80

D-IP:C

S-IP: A D-IP:C

S-IP: B

SP: 5775 DP: 80 D-IP:C S-IP: B

SinhVienZone.Com

Trang 15

 3.7 TCP congestion control

SinhVienZone.Com

Trang 16

UDP: User Datagram Protocol [RFC 768]

 “no frills,” “bare bones”

Internet transport

protocol

 “best effort” service, UDP

segments may be:

UDP sender, receiver

 each UDP segment

handled independently

of others

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

SinhVienZone.Com

Trang 17

UDP segment format

Length, in bytes of UDP

segment, including header

SinhVienZone.Com

Trang 18

 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? More later

Goal: detect “errors” (e.g., flipped bits) in transmitted segment

SinhVienZone.Com

Trang 19

Internet Checksum Example

 Note

 When adding numbers, a carryout from the

most significant bit needs to be added to the result

 Example: add two 16-bit integers

SinhVienZone.Com

Trang 20

 3.7 TCP congestion control

SinhVienZone.Com

Trang 21

Principles of Reliable data transfer

 important in app., transport, link layers

 top-10 list of important networking topics!

 characteristics of unreliable channel will determine

complexity of reliable data transfer protocol (rdt)

SinhVienZone.Com

Trang 22

Principles of Reliable data transfer

 important in app., transport, link layers

 top-10 list of important networking topics!

 characteristics of unreliable channel will determine

complexity of reliable data transfer protocol (rdt)

SinhVienZone.Com

Trang 23

Principles of Reliable data transfer

 important in app., transport, link layers

 top-10 list of important networking topics!

 characteristics of unreliable channel will determine

complexity of reliable data transfer protocol (rdt)

SinhVienZone.Com

Trang 24

Reliable data transfer: getting started

send

rdt_send(): called from above,

(e.g., by app.) Passed data to

deliver to receiver upper layer

udt_send(): called by rdt,

to transfer packet over

unreliable channel to receiver

rdt_rcv(): called when packet arrives on rcv-side of channel

deliver_data(): called by

rdt to deliver data to upper

SinhVienZone.Com

Trang 25

Reliable data transfer: getting started

We‟ll:

 incrementally develop sender, receiver sides of

reliable data transfer protocol (rdt)

 consider only unidirectional data transfer

 but control info will flow on both directions!

 use finite state machines (FSM) to specify

“state” next state

uniquely determined

by next event

event actions

SinhVienZone.Com

Trang 26

Rdt1.0: reliable transfer over a reliable channel

 underlying channel perfectly reliable

 no bit errors

 no loss of packets

 separate FSMs for sender, receiver:

 sender sends data into underlying channel

 receiver read data from underlying channel

Wait for call from below

rdt_rcv(packet)

SinhVienZone.Com

Trang 27

Rdt2.0: channel with bit errors

 underlying channel may flip bits in packet

 checksum to detect bit errors

 the question: how to recover from errors:

that pkt received OK

tells sender that pkt had errors

 sender retransmits pkt on receipt of NAK

new mechanisms in rdt2.0 (beyond rdt1.0):

 error detection

 receiver feedback: control msgs (ACK,NAK) rcvr->senderSinhVienZone.Com

Trang 28

Wait for ACK or NAK

Wait for call from below

sender

receiver

rdt_send(data)

SinhVienZone.Com

Trang 29

rdt2.0: operation with no errors

Wait for ACK or NAK

Wait for call from below rdt_send(data)

SinhVienZone.Com

Trang 30

Wait for ACK or NAK

Wait for call from below rdt_send(data)

SinhVienZone.Com

Trang 31

rdt2.0 has a fatal flaw!

stop and wait

SinhVienZone.Com

Trang 32

rdt2.1: sender, handles garbled ACK/NAKs

Wait for call 0 from above

sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)

rdt_send(data)

Wait for ACK or NAK 0 udt_send(sndpkt)

Wait for ACK or NAK 1

SinhVienZone.Com

Trang 33

rdt2.1: receiver, handles garbled ACK/NAKs

Wait for

0 from below

sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt)

Wait for

1 from below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

&& has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)

Trang 34

 twice as many states

 state must “remember”

 note: receiver can not

know if its last ACK/NAK received OK

at sender

SinhVienZone.Com

Trang 35

rdt2.2: a NAK-free protocol

 same functionality as rdt2.1, using ACKs only

 instead of NAK, receiver sends ACK for last pkt

received OK

 receiver must explicitly include seq # of pkt being ACKed

 duplicate ACK at sender results in same action as

NAK: retransmit current pkt

SinhVienZone.Com

Trang 36

rdt2.2: sender, receiver fragments

Wait for call 0 from above

sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)

sender FSMfragment

Wait for

0 from below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

&& has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data)

SinhVienZone.Com

Trang 37

rdt3.0: channels with errors and loss

New assumption:

underlying channel can

also lose packets (data

or ACKs)

 checksum, seq #, ACKs,

retransmissions will be

of help, but not enough

Approach: sender waits

“reasonable” amount of time for ACK

 retransmits if no ACK received in this time

 if pkt (or ACK) just delayed (not lost):

 retransmission will be duplicate, but use of seq

#‟s already handles this

 receiver must specify seq

# of pkt being ACKed

 requires countdown timer

SinhVienZone.Com

Trang 38

rdt3.0 sender

sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)

start_timer rdt_send(data)

Wait for ACK0

rdt_rcv(rcvpkt) &&

( corrupt(rcvpkt) ||

isACK(rcvpkt,1) )

Wait for call 1 from above

sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt)

start_timer rdt_send(data)

udt_send(sndpkt) start_timer

Wait for ACK1

rdt_rcv(rcvpkt)

SinhVienZone.Com

Trang 39

rdt3.0 in action

SinhVienZone.Com

Trang 40

rdt3.0 in action

SinhVienZone.Com

Trang 41

Performance of rdt3.0

 rdt3.0 works, but performance stinks

 ex: 1 Gbps link, 15 ms prop delay, 8000 bit packet:

 U sender: utilization – fraction of time sender busy sending

 1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link

 network protocol limits use of physical resources!

ds microsecon

8 bps

10

bits 8000

Trang 42

rdt3.0: stop-and-wait operation

first packet bit transmitted, t = 0

RTT

last packet bit transmitted, t = L / R

first packet bit arrives last packet bit arrives, send ACK

ACK arrives, send next packet, t = RTT + L / R

Trang 43

Pipelined protocols

Pipelining: sender allows multiple, “in-flight”,

yet-to-be-acknowledged pkts

 range of sequence numbers must be increased

 buffering at sender and/or receiver

 Two generic forms of pipelined protocols: go-Back-N, selective repeat

SinhVienZone.Com

Trang 44

Pipelining: increased utilization

first packet bit transmitted, t = 0

RTT

last bit transmitted, t = L / R

first packet bit arrives last packet bit arrives, send ACK

ACK arrives, send next

Trang 45

Pipelining Protocols

Go-back-N: big picture:

 Sender can have up to

 Sender has timer for

oldest unacked packet

 If timer expires,

retransmit all unacked

packets

Selective Repeat: big pic

 Sender can have up to

N unacked packets in pipeline

 Rcvr acks individual packets

 Sender maintains timer for each unacked packet

 When timer expires, retransmit only unack packet

SinhVienZone.Com

Trang 46

Selective repeat: big picture

in pipeline

packet

 When timer expires, retransmit only unack

packet

SinhVienZone.Com

Trang 47

Sender:

 k-bit seq # in pkt header

 “window” of up to N, consecutive unack‟ed pkts allowed

 ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK”

 may receive duplicate ACKs (see receiver)

 timer for each in-flight pkt

 timeout(n): retransmit pkt n and all higher seq # pkts in window

SinhVienZone.Com

Trang 48

GBN: sender extended FSM

Wait start_timer

udt_send(sndpkt[base]) udt_send(sndpkt[base+1])

… udt_send(sndpkt[nextseqnum-1]) timeout

rdt_send(data)

if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum])

if (base == nextseqnum) start_timer

nextseqnum++

} else refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum) stop_timer

rdt_rcv(rcvpkt) &&

notcorrupt(rcvpkt)

base=1 nextseqnum=1

rdt_rcv(rcvpkt)

&& corrupt(rcvpkt)

SinhVienZone.Com

Trang 49

GBN: receiver extended FSM

ACK-only: always send ACK for correctly-received pkt with highest in-order seq #

 may generate duplicate ACKs

need only remember expectedseqnum

 out-of-order pkt:

 discard (don‟t buffer) -> no receiver buffering!

 Re-ACK pkt with highest in-order seq #

deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt)

Trang 50

GBN in

action

SinhVienZone.Com

Trang 52

Selective repeat: sender, receiver windows

SinhVienZone.Com

Trang 53

Selective repeat

data from above :

 if next available seq # in

advance window base to

next unACKed seq #

Trang 54

Selective repeat in action

SinhVienZone.Com

Trang 55

between seq # size

and window size?

SinhVienZone.Com

Trang 56

 3.7 TCP congestion control

SinhVienZone.Com

Trang 57

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

 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

TCP receive buffer

socket door

application

writes data

application reads data

SinhVienZone.Com

Trang 58

TCP segment structure

source port # dest port #

32 bits

applicationdata (variable length)

sequence numberacknowledgement number

Receive window Urg data pnter checksum

F S R P A U

head len usednot

Options (variable length)

URG: urgent data

(generally not used)

ACK: ACK #

valid PSH: push data now

(generally not used)

to accept

counting

by bytes

of data (not segments!)

Internet checksum (as in UDP)

SinhVienZone.Com

Trang 59

TCP seq #‟s and ACKs

„C‟

host ACKs receipt

of echoed

„C‟

host ACKs receipt of

„C‟, echoes back „C‟

time

simple telnet scenario

SinhVienZone.Com

Trang 60

TCP Round Trip Time and Timeout

Trang 61

TCP Round Trip Time and Timeout

EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

 Exponential weighted moving average

 influence of past sample decreases exponentially fast

typical value: = 0.125

SinhVienZone.Com

Trang 63

TCP Round Trip Time and Timeout

Setting the timeout

EstimtedRTT plus “safety margin”

large variation in EstimatedRTT -> larger safety margin

 first estimate of how much SampleRTT deviates from

Trang 64

 3.7 TCP congestion control

SinhVienZone.Com

Trang 65

TCP reliable data transfer

 timeout events

 duplicate acks

 Initially consider simplified TCP sender:

 ignore duplicate acks

 ignore flow control, congestion control

SinhVienZone.Com

Trang 66

TCP sender events:

data rcvd from app:

 Create segment with

seq #

 seq # is byte-stream

number of first data

byte in segment

 start timer if not

already running (think

of timer as for oldest

 restart timer

Ack rcvd:

 If acknowledges previously unacked segments

 update what is known to

be acked

 start timer if there are outstanding segments

SinhVienZone.Com

Trang 67

TCP sender

event: data received from application above

create TCP segment with sequence number NextSeqNum

if (timer currently not running)

start timer pass segment to IP

NextSeqNum = NextSeqNum + length(data)

event: timer timeout

retransmit not-yet-acknowledged segment with

smallest sequence number start timer

event: ACK received, with ACK field value of y

if (y > SendBase) {

SendBase = y

if (there are currently not-yet-acknowledged segments)

start timer }

Comment:

• SendBase-1: last cumulatively

ack‟ed byte Example:

• SendBase-1 = 71; y= 73, so the rcvr wants 73+ ;

y > SendBase, so that new data is acked

SinhVienZone.Com

Ngày đăng: 30/01/2020, 23:01

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm