Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Dijkstra Algorithm
- 동기화
- 싸피 합격
- 뮤텍스란?
- 최단 경로
- 삼성 청년 SW 아카데미
- floyd-warshall
- 호스팅이란?
- 세마포어
- 호스팅
- 싸피
- 세마포어란?
- 웹 호스팅
- 뮤텍스
- 서버 호스팅
- 세마포어와 뮤텍스
- Synchronization
- Proxy
- SSAFY
- 플로이드 와샬
- 플로이드 워셜
- 프록시서버
- 세마포어와 뮤텍스의 차이
- 프록시
- 클라우드 서버
- 싸피 면접 후기
- 다익스트라 알고리즘
- 다익스트라
- Proxy Server
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
TCP 3 Way-Handshake & 4 Way-Handshake 본문
TCP 3 Way-Handshake
- TCP/IP 프로토콜을 이용하여 통신을 진행할 때, 두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정이다.
- 실제로 데이터 전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- SYN : Synchronize Sequence Number
- ACK : Acknowledgement
- 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
- 서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYNflag가 설정된 패킷을 발송한다. 클라이언트가 다시 ACK으로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVED 상태가 된다.
- 클라이언트는 서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게된다. 이때의 B서버 상태가 ESTABLISHED 이다.
4 Way-Handshake
- 3 Way-Handshake는 TCP의 연결을 초기화 할 때 사용한다면, 4 Way-Handshake는 세션을 종료하기 위해 수행되는 절차이다.
- 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.
- 서버는 클라이언트의 요청(FIN)에 대한 응답으로 ACK 패킷을 보낸다.
- 서버가 처리해야 할 모든 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.
- 클라이언트는 확인했다는 응답으로 ACK 패킷을 보낸다.
- 클라이언트의 ACK 패킷을 받은 서버는 소켓 연결을 close 한다.
- 클라이언트는 아직 서버로부터 받지 못한 데이터가 있을 것을 대비해 기다리는 과정을 거친다. (TIME_WAIT)
정리
- TCP는 연결지향적인 특성과 자체적으로 오류를 처리하며 순서서가 뒤바뀐 패킷을 교정해주는 기능이 더불어 주로 데이터의 신뢰도가 중요하다고 판단되어질 때 쓰인다.
- 신뢰도 확보가 중요하거나 용량이 큰 데이터(파일전송)를 전달해야 할 때, 실시간일 필요는 없을 때 활용된다.
- 하지만 데이터의 신뢰성 보다 전송 속도가 중요시되는 경우면 어떨까? 스트리밍 서비스 같은 경우 속도가 생명이다. 만약 계속해서 버퍼링이 걸린다면 사용자는 매우 불쾌할 것이다.
- UDP 프로토콜은 위와 같은 과정이 없이 단순히 데이터만을 전송하므로 속도가 빠르다. 스트리밍 서비스 같은경우 약간의 화질이나 음질의 손상이 있다 해도 끊기지 않는 서비스가 중요하다. 그래서 UDP방식을 사용한다.
출처
github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/3%20way%20handshake.md
'CS > 네트워크' 카테고리의 다른 글
OSI 7계층 (0) | 2021.04.07 |
---|---|
UDP란? (0) | 2021.04.06 |
주소창에 naver.com을 치면 일어나는 일 (0) | 2021.04.06 |
HTTP와 HTTPS의 차이는 무엇일까? (0) | 2021.04.04 |
쿠키 & 세션 (Cookie & Session) (0) | 2021.04.04 |
Comments