-
네트워크 6주차: TL (TCP: Window, Timeout)교내 강의/컴퓨터 네트워크 2024. 4. 13. 15:23
TCP:
congestion, flow control에서 window size를 조절함
flow control은 수신쪽의 버퍼를 체크하여 맞춰보냄.
MSS: 나눠서 보내는 양
full duplex data: 양방향으로 동시에 보냄
Source Port, Destination Port: 출/도착지 포트번호
Sequence Number: S Flag와 작용, random으로 지정 (2^32 sr 딜레마는 안생김.)
Acknowledge Number: 받은 S_num으로 계산됨
HeadLen: 헤더의 총 길이/4
not used: 예약된 필드(미사용)
TCP Flags: 통신중에 연결 상태를 물어볼 때 사용하는 부분
U: urgent = 긴급 비트 1이면 보내는 것이 중요하다 (아래 Urgent Pointer랑 세트)
A: ack = 승인 비트 물어본 거에 대한 응답, 승인해 줄 때 사용
P: push = 원래 TCP 버퍼가 일정한 크기만큼 쌓여야 패킷을 보낼 수 있는데 상관 없이 보내겠다.
R: reset = 연결된 상태에서 문제가 발생하면 1을 보내서 새로고침
S: sync = 연결을 시작할 때 사용함, 보내진 뒤 동기화
F: finish = 연결을 끊을 때 사용함.
Window: TCP 수신 버퍼 공간 크기을 알려줌
Checksum: 헤더가 온전하게 왔는지 확인
Urgent Pointer: U bit가 1일 경우 긴급한 위치가 어딘지 표시
TCP option: 최대 40바이트 옵셔널
sequence number:
발송 시 segment 안의 데이터의 위치를 가리킴.
수신 시 받은 ack를 return 함.
10,000 bit 짜리 데이터를 1,000 bit의 10개의 segment로 나누어 보냈다고 가정했을 때,1000바이트, 2000바이트... 이런 식으로 비트 단위의 offset을 나타낸다는 점이다.
acknowledgement number:수신자가 다시 송신자에게 ACK를 보낼 때 사용하는 필드로, 다음에 받기를 원하는 데이터의 sequence number를 의미.
1000bit를 받으면 ack = 받은 sequence number +1000이 됨.
cumulative ack 사용: premature 발생하여 duplicate이 오면, 받아야 할 ack를 cumulative로 보냄
1. handshake로 임의의 seqnum을 정함
2. 임의의 seqnum에 length(data)를 보냄.
3. ack가 Sendbase보다 크면 sendbase는 ack로 바꿈. (cumulative)
1. 송신: 순서대로 패킷을 보냄,
2. 수신: 연속해서 받기 위해 delay함 (ex: 500ms)
3. 수신: 누적 ack을 보냄
문제상황: 수신자가 못 받은 패킷이 있음
1. 순서대로 잘 받은 패킷 중 gap 바로 전까지의 ack를 보냄 (duplicate: 두번 보낸것이니)
그 이후 수신은 패킷이 올 때 마다 duplicate ack를 보냄
2. 송신자는 누락된 하나의 패킷을 보냄
3. 수신자는 다시 누적 ack을 보냄
time out은 상대적으로 오래 걸림:
duplicate ack를 사용하면 fast retransmit 가능
"triple duplicate ACKs" 오면 빠르게 해당 패킷을 재전송 함
tcp time-out 정하는 법:
rtt보다 길게: rtt가 올 때 마다 시간을 측정(sample RTT), estimate RTT를 구함
Estimate RTT:
알파 = 1/8
이전의 평균값은 7/8만큼, 현재 sample은 1/8만큼 반영하여 구함.
Deviation:
Deviation = sampleRTT - EstimatedRTT
이전의 deviation은 3/4, 현재의 deviation은 1/4만큼 반영
Timeout은 EstimateRTT + 4Deviation
초기 Deviation은 sampleRTT/2
'교내 강의 > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 9주차: Net) VC, Router (0) 2024.04.30 컴퓨터 네트워크 7주차: Handshake, Flow Control, Congestion Control (0) 2024.04.19 네트워크 6주차: TL (rdt 3.0, Packet pipelining (GBN, SR)) (0) 2024.04.12 네트워크 5주차: Transport Layer (Multiplexing, Demultiplexing, PDU, RDT) (1) 2024.04.03 컴퓨터 네트워크 4주차: p2p, BitTorrent, DHT (0) 2024.03.27