3 - Way Handshake & 4 - Way Handshake (TCP / UDP)
3 Way Handshake 와 4 Way Handshake는 TCP 프로토콜에서 호스트 간 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정이다
그럼 여기서 TCP 와 UDP가 무엇인지 간단하게 알고 가보자
TCP
- 연결형 서비스를 지원하는 전송계층 프로토콜
- 인터넷 환경에서 기본 사용
- 호스트간 신뢰성 있는 데이터 전달(연결형 서비스니까 !) 과 흐름제어 및 혼잡제어 등을 제공하는 전송 계층 (데이터 흐름 제어)
- 호스트 간의 연결의 설정(3 way handshake)과 해제(4 way handshake)
여기서 중요한 흐름제어와 혼잡제어를 꼭 알아야 한다! ==> 요 건 링크
UDP
- 비연결형 서비스를 지원하는 전송계층 프로토콜
- 사용자 데이터그램형 프로토콜
- TCP와는 달리 연결의 설정과 해제(3 way handshake & 4 way handshake) 과정이 없음
- 송신측에서 수신측이 데이터를 잘받았는지 확인하지 않고, 일방적으로 데이터를 보내기만 함
일단 미리 알아두어야 할 것은 클라이언트와 서버간의 서로 통신하기 위해 두 종류의 패킷(ACK , SYN)을 보낸다
일단 패킷들의 종류를 몇가지 알아보면
CWR : 송신자의 자신의 윈도우 사이즈를 줄인다.
ECE : 혼잡 감지 시 수신자가 ECE를 설정하여 송신자에게 알린다.
URG : Urgent Point 필드와 함께 사용되고 플래그 설정 시 TCP는 해당 세그먼트를 전송 큐의 제일 앞으로 보낸다.
ACK : SYN에 대한 확인의 의미이다. 3 way handshake에서의 syn과 reset을 제외하고 모든 세그먼트에 ACK가 설정
PSH : 일반적으로 모든 데이터를 전송하고 마지막에 보내는 신호로 수신측은 데이터를 즉시 전송하라는 의미
RST : 송신자가 유효하지 않은 연결을 시도할 때 거부하는데 이용되고 또한 통신의 연결 및 종료를 정상적으로 할 수 없을 때 사용
SYN : 통신 시작 시 연결을 요청하고 ISN(순서번호)을 교환
FIN : 데이터 전송을 종료
3 Way HandShake
흐름을 설명하자면
- Client는 맨 처음 close 상태이며 , Server와 연결하기 위해 SYN을 보낸다
- Server는 맨 처음 Listen 상태이며, SYN을 받고, 그거에 대한 ACK를 보내고 , Client도 포트를 열어 달라고 SYN을 보낸다
- Client가 Server의 ACK 와 SYN을 받고(여기서 클라는 established상태), SYN에 대답으로 ACK를 보낸다,
- Server가 마지막으로 ACK를 받으면 established로 상태가 변경되며 , tcp 연결이 완료된다
Closed : 닫힌 상태
LISTEN : 포트가 열린 상태로 연결 요청 대기 중
SYN_RCV : SYNC 요청을 받고 상대방의 응답을 기다리는 중
ESTABLISHED : 포트 연결 상태
4 Way Handshake
Client가 연결을 종료하겠다는 FIN플래그를 전송한다.
Server는 FIN플래그를 받은 다음 플래그에 대한 ACK를 보낸 후 TIME_WAIT 상태가 된다.
(FIN을 받았지만 , Client가 보낸 패킷이 라우팅 지연이나 패킷 손실의 이유로 재전송을 보낼 수 있는데, 이 때 FIN패킷보다 늦게 도착할 수 있기 때문에 TIME_WAIT상태에서 일정시간 기다리는 것이다.)
Time_wait상태가 끝나면 Server는 연결을 종료하겠다는 FIN플래그를 전송한다.
Client는 FIN플래그에 대한 ACK플래그를 보낸 후 tcp 연결을 종료 된다
'네트워크' 카테고리의 다른 글
SSL 동작과정 (0) | 2020.08.19 |
---|---|
TCP 프로토콜 - (흐름제어 와 혼잡제어) (0) | 2020.08.19 |
Post와 GET의 차이 (0) | 2018.03.11 |