TCP(Transmission Control Protocol)
- 신뢰성과 연결 지향을 특징으로 하는 전송 계층 프로토콜
- 데이터를 정확하고 순서대로 전달하기 위해 다양한 메커니즘을 제공
왜 연결 지향이라고 하는거지?
TCP는 데이터 전송 전에 송신자와 수신자가 연결을 설정(3-way handshake)하고, 데이터가 제대로 전송되었는지 확인하며, 연결을 종료(4-way handshake)하는 과정이 있기 때문에 연결 지향(Connection-Oriented)이라고 한다.
3-way handshake?
3-way handshake는 TCP 연결을 설정하기 위해 반드시 필요한 과정이다. 이유는 아래와 같다.
- 양측의 통신 기능 여부 확인
- 초기 시퀀스 번호(ISN) 교환
- 연결 신뢰성 확보
3-way handshake 동작 과정
- A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.
- B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
- A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.
4-way handshake?
3-way handshake가 TCP의 연결을 초기화할 때 사용한다면, 4-way handshake는 세션을 종료하기 위해 수행되는 절차이다.
4-way handshake 동작 과정
- 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.
- 서버는 일단 확인메시지를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 TIME_WAIT상태다.
- 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.
- 클라이언트는 확인했다는 메시지를 보낸다.
'외부활동 > JSCODE 네트워크' 카테고리의 다른 글
[5주차] 서브넷과 서브넷 마스크 (0) | 2024.11.27 |
---|---|
[4주차] UDP Checksum (0) | 2024.11.21 |
[4주차] UDP (0) | 2024.11.17 |
RESTful하게 개발한다는 건 뭘까? (0) | 2024.11.16 |
[3주차] REST API, 웹 보안 (0) | 2024.11.15 |