Launch service pages are live SaaS, web app, indie game, and home server public-context handoffs. No secrets.
Services SaaS Web App Game Homelab

RDT 2.1 동작 방식 정리

네트워크 운영 관점에서 RDT 2.1 동작 방식 정리의 목적, 구성 흐름, 실행 전 확인할 항목을 정리한 기술 노트입니다. 원문 핵심: [rdt 2.1] receiver가 보낸 ACK/NAK이 훼손되는 경우 ​ sender에서 중복된 packet를 받는 경우 ​ ​ 1(sender). rdt_send(data) : application에서 wait...

핵심 요약

  • 네트워크 운영 업무에서 RDT 2.1 동작 방식 정리를 빠르게 검토할 수 있도록 원문을 운영 절차 중심으로 재구성했습니다.
  • 실습/설정/로그 내용은 보존하되, 적용 범위와 검증 포인트를 먼저 확인할 수 있게 정리했습니다.
  • 원문 핵심: [rdt 2.1] receiver가 보낸 ACK/NAK이 훼손되는 경우 ​ sender에서 중복된 packet를 받는 경우 ​ ​ 1(sender). rdt_send(data) : application에서 waiting(TCP가 application에게 message(data)를 받고 sequence number가 0인 segment를 생성하기 위해 기다림)상태인 TCP에게 message를 보냄 - event ​ 2(send...

적용 범위

이 글은 네트워크 운영 영역에서 RDT 2.1 동작 방식 정리를 검토하는 사람을 위한 정리본입니다. 원문은 네이버 블로그에 작성된 실습/메모를 기반으로 하며, 현재 환경에 적용할 때는 명령어와 설정값을 반드시 재검증해야 합니다.

정리된 본문

[rdt 2.1]

receiver가 보낸 ACK/NAK이 훼손되는 경우

sender에서 중복된 packet를 받는 경우

1(sender). rdt_send(data) :

application에서 waiting(TCP가 application에게 message(data)를 받고 sequence number가 0인 segment를 생성하기 위해 기다림)상태인 TCP에게 message를 보냄 - event

2(sender). sndpkt=make_pkt(0, data, checksum) :

TCP가 application에게 받은 message에 sequence number 0과 checksum을 붙혀 segment(packet)를 생성

3(sender). udt_send(sndpkt) :

TCP가 IP에게 segment(packet)을 보내고 (동시에 보내는 segment를 버퍼에 임시 저장) IP 에게서 오는 sequence number 0을 가진 segment에 대한 ACK 또는 NAK 신호를 기다리는 상태가 됨

4(receiver). rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) :

waiting(TCP가 IP에게 sequence number가 0인 segment를 받길 기다림)상태인 TCP가 IP에게 segment(packet)을 받는데 해당 segment가 손실이 없고 sequence number가 0인 경우 - event

5(receiver). extract(rcvpkt, data) :

IP에게 받은 segment(packet)에서 message(data)를 추출

6(receiver). deliver_data(data) :

TCP가 application에게 message(data)를 보냄

7(receiver). sndpkt=make_pkt(ACK, chksum) :

acknowledgement와 checksum이 포함된 segment를 생성

8(receiver). udt_send(sndpkt) :

TCP가 IP에게 segment(packet)을 보내고 waiting(TCP가 IP에게 sequence number가 1인 segment를 받길 기다림) 상태로 돌아감

9(sender). rdt_rcv(rcvpkt_ && notcorrupt(rcvpkt) && isACK(rcvpkt) :

TCP가 IP에게 segment(packet)을 받는데 해당 segment가 손상이 없고 acknowledgement (ACKs)인 경우 waiting(TCP가 application에게 message(data)를 받고 sequence number가 1인 segment를 생성하기 위해 기다림) 상태로 돌아감 - event

A1 : receiver가 보낸 segment가 NAK이거나 훼손된 경우 (8번을 거쳐서 받은 segment가 훼손된 경우나 A2번을 거쳐 NAK segment를 받은 경우)

A1-1(sender). rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || isNAK(rcvpkt)) :

sequence number가 0인 segment에 대한 ACK or NAK을 기다리는 상태인 TCP가 IP에게 segment(packet)을 받는데 해당 segment가 훼손됐거나 negative acknowledgement (NAKs)인 경우 - event

A1-2(sender). udt_send(sndpkt) :

TCP가 버퍼에 저장한 sequence number가 0인 segment(packet)을 IP에게 재전송하고 다시 sequence number가 0인 segment에 대한 ACK 또는 NAK 신호를 기다리는 상태가 됨

이후 전송중 packet이 훼손된다면 A2과정, 훼손없이 잘 전송된다면 A3과정을 거침

A2 : sender가 재전송한 segment가 훼손된 경우 (A1을 거쳐 받은 segment가 훼손된 경우)

A2-1(receiver). rdt_rcv(rcvpkt) && (corrupt(rcvpkt)) :

waiting(TCP가 IP에게 sequence number가 1인 segment를 받길 기다림)상태인 TCP가 IP에게 segment(packet)을 받는데 해당 segment가 훼손된 경우 - event

A2-2(receiver). sndpkt=make_pkt(NAK, chksum) :

sequence number가 0인 segment에 대한 negative acknowledgement와 checksum이 포함된 segment를 생성

A2-3(receiver). udt_send(sndpkt) :

TCP가 IP에게 segment(packet)을 보내고 waiting(TCP가 IP에게 sequence number가 1인 segment를 받길 기다림) 상태로 돌아감

이후 sender에서 A1 과정 수행

A3 : sender가 재전송한 segment가 손상은 없지만 sequence number가 0인 경우 (A1을 거쳐 받은 segment가 손상은 없지만 sequence number가 0인 경우 - sender가 sequence number가 0인 segment에 대한 ACK을 받지 못했기 때문에 sequence number는 그대로 0인 상태)

A3-1(receiver). rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) :

waiting(TCP가 IP에게 sequence number가 1인 segment를 받길 기다림)상태인 TCP가 IP에게 segment(packet)을 받는데 해당 segment가 손상은 없지만 sequence nember가 0인 경우 - event

A3-2(receiver). sndpkt=make_pkt(ACK, chksum) :

sequence number가 0인 segment에 대한 acknowledgement와 checksum이 포함된 segment를 생성

A3-3(receiver). udt_send(sndpkt) :

TCP가 IP에게 segment(packet)을 보내고 waiting(TCP가 IP에게 sequence number가 1인 segment를 받길 기다림) 상태로 돌아감

이후 문제가 없다면 sender에서 9번 진행

9(sender). rdt_rcv(rcvpkt_ && notcorrupt(rcvpkt) && isACK(rcvpkt)

9번이 진행된 후 sequence number가 1로 변경되고 위와 동일한 과정 수행

운영 체크리스트

  • 대상 OS, 네트워크 대역, 계정 권한, 패키지 버전이 현재 환경과 맞는지 확인합니다.
  • 운영 장비에서 실행하기 전 랩 환경 또는 읽기 전용 명령으로 먼저 검증합니다.
  • 설정 변경, 서비스 재시작, 방화벽 변경, 디스크 작업은 백업과 롤백 경로를 준비한 뒤 진행합니다.
  • 본문의 IP, 계정명, 경로, 장비명은 예시 또는 당시 실습 환경 기준이므로 실제 환경 값으로 치환합니다.

원문 출처

원문: https://blog.naver.com/hermes_u/222430149241
네이버 카테고리: Network
원문 작성일: 2021-07-13T15:53:00.000+09:00

If this article connects to a real product, infrastructure workflow, web app, or game launch, I can turn the rough signal into a small paid deliverable.

Best fit for network diagnosis, packet flow, routing, and service exposure review related to RDT 2.1 동작 방식 정리. No login, private source code, production credential, or sensitive customer data is required for the first pass.

See paid service options

\n\n\n