728x90
반응형
SMALL
✅ TCP란?
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다.
✅ TCP 3-Way HandShake란?
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정. 데이터를 주고받기 전에 서버와 클라이언트가 확인 패킷을 3단계로 교환하여 연결을 맺는다.
Flag | 설명 |
SYN(연결 요청 플래그) | - TCP에서 세션을 성립할 때 가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 시퀀스 번호를 보내게 된다. |
ACK(응답플래그) | - 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷 - 다른 플래그와 같이 출력되는 경우도 있음 - 받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냄(일잔적으로 +1하여 보냄) - ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송 하거나 다음 패킷을 전송한다. |
- 클라이언트가 서버에게 SYN 패킷 전송
- 서버가 SYN 를 수신하고, 클라이언트에게 SYN 을 잘 받았다는 의미로 ACK 과 SYN 패킷 전송
- 클라이언트는 서버로부터 온 ACK 과 SYN 패킷을 수신하고, ACK를 서버로 전송
위처럼 3번의 통신을 끝마치면, 종단 간의 연결이 성립되는 것이다. 이 때부터 실제 패킷을 주고받게 된다.
✅ TCP 4-Way HandShake란?
Flag | 설명 |
FIN(연결종료 플래그) | - 세션 연결을 종료시킬 때 사용되며 더이상 전송할 데이터가 없음을 나타낸다. |
- 클라이언트는 서버에게 '끊을게요' 하는 의미로 FIN 플래그를 전송
- 서버는 FIN 을 수신하고, '알겠습니다' 하는 의미로 클라이언트에게 ACK 으로 답장
→ 남은 데이터를 마저 보내기 위해 CLOST_WAIT 상태로 전환 - 이후 데이터를 모두 보냈다면, 연결이 종료됐다는 FIN 플래그를 클라이언트에게 전송
- 클라이언트는 해당 FIN 을 수신하고 확인했다는 의미로 ACK 을 서버로 전송
→ 혹시나 아직 안 온 데이터가 있을 수 있기 때문에 이를 대기하기 위해 TIME_WAIT 상태로 전환
서버가 클라이언트로부터 ACK 을 수신했다면, 소켓을 닫게 된다. 그리고 TIME_WAIT 시간이 끝나면 클라이언트도 소켓을 닫게 된다. 이로써 통신이 완벽히 해제되는 것이다.
통신이 총 4번 이루어지기 때문에 4-way Handshake 라는 용어를 사용한다.
참고
https://velog.io/@haero_kim/TCP
https://sh-safer.tistory.com/142
https://yubh1017.tistory.com/81
728x90
반응형
'Computer Science' 카테고리의 다른 글
SOLID란? 객체지향 설계 5원칙(Python) (0) | 2023.01.11 |
---|---|
[네트워크 전송계층] UDP/TCP 특징 차이 (0) | 2023.01.11 |
[네트워크] 웹 사이트에 접속하는 과정 (0) | 2023.01.09 |
디자인 패턴(Design Pattern)이란? (0) | 2023.01.08 |
컴파일러란? (feat. 인터프리터) (0) | 2023.01.06 |