1. 3-way handshake
가. 개념
□ 서버-클라이언트 간 데이터 송/수신을 위한 연결 과정
나. 과정
1) Client: SYN (SYN_SENT)
2) Server: SYN+ACK(SYN_RECV)
3) Client: ACK(Established)
4) Server: ACK 수신(Established)
2. 데이터 송/수신 과정
가. 재전송 과정
1) Client: Data A 전송 (Data A에 대한 재전송 타이머(RTO) 동작)
2) Client: Data B 전송 (Data B에 대한 재전송 타이머 동작)
3) Server: Data A에 대한 ACK 전송
4) Server: Data B 수신 못함(ACK 전송 못함)
5) Client: Data A에 대한 ACK 수신 / Data B에 대한 재전송 타이머 초과
6) Client: Data B 재전송
- 상기 과정은 무한히 진행되지 않고, 일정 시간/횟수 동안 ACK 오지 않으면 연결을 그냥 종료해버림
나. 빠른 재전송 과정
1) Client: Data A,B,C,D,E 전송 (재전송 타이머(RTO) 동작)
2) Server: Data A에 대한 ACK 전송
3) Server: Data B 수신 못함 → C 부터 수신 → 순서번호에 맞지 않는 데이터 수신 → B에 대한 재전송 요청
4) Server: Data D,E 를 수신할 때마다 Data B 재전송 요청
5) Client: Data B에 대한 재전송 요청이 3번 발생하는 순간 해당 세그먼트가 누락되었다고 판단 즉시 재송신
- Data B 이후의 Data들은 정상 수신하였으므로 상기 과정은 RTO에 의한 재전송보다 혼잡하지 않은 상태
다. 연결 요청 거부(3-way handshake 거부)
1) Client: SYN (SYN Packet은 ACK 가 설정되어있지 않음)
2) Server: RST + ACK (No Listening State)
라. 연결 중단 → 추후 수정 예정
1-1) Client: RST + ACK
→ 상대방에게 ACK 넘버가 없이 Packet을 받은 경우
→ 단순히 RST 패킷만 주면 제대로 연결 종료했는지 모르기 때문에 ACK 패킷도 함께 전송
1-2) Client: RST
→ 상대방에게 ACK 넘버가 있는 Packet을 받은 경우
→ 현재 연결상태라는 뜻이므로 RST 만 주면 연결 중단 가능
3. 4-way handshake
가. 개념
□ 서버-클라이언트 간 연결 종료 과정
나. 과정
1) Client: FIN+ACK(FIN_WAIT1)
2) Server: ACK(CLOSE_WAIT) → 현재, 나의(서버 측) 버퍼에 있는 데이터들 처리해야겠군!
3) Client: (FIN_WAIT) → 서버가 버퍼에 있는 데이터를 다 처리할 때까지 기다려야지
4) Server: FIN+ACK → 나(서버 측) 버퍼에 있는 데이터들 다 털었어!
5) Client: ACK (TIME_WAIT) → ACK를 보낸 후, 2MSL 동안 기다림
(서버측이 ACK를 수신하지 못할 경우, FIN+ACK가 올수도 있기 때문)
6) Server: ACK 수신 (CLOSED)
7) Client: (CLOSED)
'자격증 > 정보보안기사' 카테고리의 다른 글
[네트워크 보안] 포트 (0) | 2022.08.04 |
---|---|
[네트워크 보안] UDP (0) | 2022.08.04 |
[네트워크 보안] TCP (0) | 2022.08.03 |
[네트워크 보안] ICMP 프로토콜 (0) | 2022.08.03 |
[네트워크 보안] IP 프로토콜 (0) | 2022.08.03 |