transport 계층 핵심 개념
- multiplexing / demultiplexing
multiplexing : 나중에 목적지에 가서demultiplexing 될 수 있도록 sender측에서 transport header 붙여줌
demultiplexing : header info 이용하여 올바른 socket 찾아갈 수 있도록 한다.
어떤 socket을 찾기 위해서 ip address로 host로 온 후 -> port 번호가지고 socket 찾아간다
<UDP datagram>
DNS, SNMP, HTTP/3는 UDP 위에 올라
checksum : error가 있냐 없냐만 판단 (recovery 하지않음)
-> error있을때 버릴지 올릴지는UDP가 원하는대로 함
UDP checksum
: sender측에서 계산한 checksum과 받은 checksum이 같은지 비교해서 error detect 한다.
: 계산 방법
-> 두 개의 16bit을 binary로 생각하고 더함(carry 발생하면 제일 뒤에다가 1 더해줌) 이러한 더한 결과를 ones-complement 취함(0->1로 1->0으로).이 결과가 checksum 된다.
network는 unreliable이기에 transport에서 reliable되게끔 reliable data transfer protocol 이용해 처리해줘야함
-> reliable보장해주기 위한 구성요소
-> checksum, acknowledgement, negative ackknowledgement, sequence number, timer, pipelining&window
ack : error recovery 역할
pipelining: ack 받지않은 상태의sement가 여러 개일 수 있게 해줌 (하나 보내고 그에 대한 ack 받기 전까지 data 아예 안보내면 자원낭비이기에 필요하다)
window : pipelining의 규모 (maximum n개까지 가능하다 제한 둔다)
-> window size 정하는 기준
1. receiver가 receive할 수 있는 ability & buffer message
2. level of congestion in network
timeout 지나면 loss 발생했다 생각하고 retransmit 한다
TCP
flow control : sender가 receiver를 overwhelm 하지 않는다
congestion control : sender가 network를 overwhelm 하지 않는다
full-duplex data :주기만/받기만 하지 않고 주고 받는다 ( sender, reciever 둘다 seq랑 ack 모두 주고 받는다 )
timeout을 너무 크거나 작게 잡으면 안되고 적당히 잡아야한다
-> 이를 위해 RTT를 estimate한다.
-> Sample RTT이용하여 estimate
sample RTT란?
: 특정 segment를 보내고나서 ack 받기 전까지 걸리는 시간
retransmit한 data에 대한 SampleRTT는 timeout 시간조정에 반영하지 않는다
estimated RTT : sampleRTT들을 평균낸 값
estimated RTT= (1-a)*estimated RTT + a*SampleRTT
-> sample이 old할수록 sample의 영향이 낮아진다
timeout interval = estimatedRTT + 4*DevRTT(safety margin)
DevRTT : sample이 estimatedRTT로부터 얼마나 벗어낫겠느냐
retransmission 유발 요소
1. timeout
2. 3 duplicate acks
'CS > 컴퓨터네트워크' 카테고리의 다른 글
Network layer - Router (0) | 2023.12.12 |
---|---|
Network layer - overview of Network Layer (0) | 2023.12.12 |
application layer-4 (DNS) (0) | 2023.10.25 |
application layer-2 (0) | 2023.10.24 |
application layer-1 (0) | 2023.10.24 |