TCP 데이터 송수신 과정 및 연결종료

Benedictus Park·2022년 12월 15일
0

TCP/IP

목록 보기
11/11
post-thumbnail

1. 데이터 송수신 과정

1-1. 200Byte의 데이터를 A에서 B로 보낼 때

[A] SEQ 1200, 100 Byte Data // 1200번 패킷, 100바이트 데이터
[B] -> ACK 1301 // 받은 데이터의 (바이트 수 + 1)만큼 패킷 번호가 증가, 100바이트 잘 받았으니 1301번 패킷 내놔라!
[A] SEQ 1301, 100 Byte Data // 1301번 패킷, 100바이트 데이터
[B] -> ACK 1402 // 100바이트 잘 받았으니 1402번 패킷 내놔라!

1-2. 중간에 패킷이 유실된다면?

[A] SEQ 1200, 100 Byte Data // 1200번 패킷, 100바이트 데이터
[B] SEQ 1301 // 100바이트 잘 받았으니 1301번 패킷 내놔라!
[A] SEQ 1301, 100 Byte Data // 1301번 패킷, 100바이트 데이터, 유실
.
.
.
TimeOut
[A] SEQ 1301, 100 Byte Data // 1301번 패킷, 100바이트 데이터
[B] ACK 1402 // 100바이트 데이터 잘 받았으니 1402번 패킷 내놔라!

1-3. 정리

TCP 소켓은 응답을 요구하는 패킷을 보낼 시 타이머를 동작시키고, 타이머가 TimeOut 되면 패킷을 재전송 한다.

2. 연결종료(4-Way Handshaking)

연결 종료시, 연결 종료를 알리는 메시지(FIN)를 패킷에 삽입해서 보낸다.

[A] FIN, SEQ 5000, ACK - // 우리, 그만하자
[B] ACK, SEQ 7500, ACK 5001 // 잠깐 기다려봐!
[B] FIN, SEQ 7501, ACK 5001 // 끊을 준비 끝!
[A] ACK, SEQ 5001, ACK 7502 // 끊자~

0개의 댓글