TCP의 3-way handshake 과정은 TCP/IP 네트워크 통신에서 매우 중요한 역할을 하며, 이를 통해 두 통신 장비 간의 신뢰할 수 있는 연결을 수립합니다. 여기서 "가상 회선"이라 함은 물리적인 회선이 아닌, TCP 연결을 통해 생성되는 논리적인 경로를 의미합니다. 이 과정을 통해 데이터의 정확한 전송을 보장합니다. 단계별로 살펴보면 다음과 같습니다:
1. 연결 수립(3-way Handshake)
- SYN: 클라이언트는 서버에게 연결을 요청하는 SYN 패킷을 보냅니다. 이때, 클라이언트는 자신의 초기 시퀀스 번호(Sequence Number)를 임의의 난수로 설정하여 전송합니다. 이 초기 시퀀스 번호는 이후 데이터 전송에서 순서와 무결성을 보장하는 데 사용됩니다.
- SYN-ACK: 서버는 클라이언트의 SYN 요청을 받고, 연결을 수락한다는 의미로 SYN-ACK 패킷을 클라이언트에게 보냅니다. 여기서 ACK 값은 클라이언트의 초기 시퀀스 번호에 1을 더한 값이고, 서버 역시 자신의 초기 시퀀스 번호를 임의의 난수로 설정하여 전송합니다.
- ACK: 클라이언트는 서버의 SYN-ACK 응답을 받고, 최종적으로 ACK 패킷을 서버에게 전송합니다. 이 ACK 패킷의 시퀀스 번호는 서버의 초기 시퀀스 번호에 1을 더한 값입니다. 이 과정이 완료되면 TCP 연결이 성공적으로 수립됩니다.
2. 왜 초기 시퀀스 번호로 임의의 난수를 사용하는가?
- 보안: 공격자가 네트워크 패킷을 예측하거나 조작하는 것을 어렵게 하기 위해. 고정된 값이나 예측 가능한 시퀀스를 사용하면, 공격자가 이를 이용해 세션 하이재킹(Session Hijacking)과 같은 보안 공격을 시도할 수 있습니다.
- 패킷 손실 및 중복 구분: 네트워크 상에서 이전 연결의 패킷과 현재 연결의 패킷을 명확히 구분하기 위해. 이는 패킷의 순서를 추적하고, 네트워크 지연이나 패킷 손실이 발생했을 때 올바르게 재전송을 관리하는 데 중요합니다.
- 연결의 유일성 보장: 각 TCP 연결은 고유해야 합니다. 임의의 난수를 사용함으로써 각 연결의 고유성을 보장하고, 이전 연결과 혼동되는 것을 방지합니다.
3. 연결 종료(4-way Handshake)
연결 종료 시에는 4-way handshake 과정이 사용되며, FIN 패킷과 ACK 패킷을 교환하여 연결을 체계적으로 종료합니다. 이 과정은 연결을 수립하는 것만큼 중요하며, 데이터 전송이 완료된 후 연결을 깨끗하게 종료하여 리소스를 해제합니다.
TCP의 이러한 메커니즘은 네트워크 통신에서 데이터의 신뢰성과 순서를 보장하며, 효율적인 데이터 전송을 가능하게 합니다.
'여러가지 > 이것저것' 카테고리의 다른 글
GET과 POST의 차이점 (0) | 2024.03.18 |
---|---|
HTTPS 공개키 암호화로 안전한 키 교환, 비밀키 암호화로 효율적인 데이터 통신을 보장/ 두 암호화 방식 사용 (0) | 2024.03.18 |
HTTP, HTTPS 차이점 (0) | 2024.03.18 |
TCP와 UDP의 차이점 (0) | 2024.03.18 |
웹 통신의 큰 흐름 : HTTP://WWW.GOOGLE.COM/ 을 접속할 때 일어나는 일 (0) | 2024.03.18 |