3-WAY Handshake

Posted by lib oimb
2018. 6. 27. 13:56 TOPIC

 3-way hansdshake를 알아보기 전에 간단하게 네트워크 전송계층에 대해서 먼저 알아보자


 해당 그림은  OSI 7 게층으로 네트워크 계층이다.

여기서 우리가 알아볼 계층은 Transport 계층이다.

 

Transport 계층 데이터 전송을 담당하고 있는 계층인데 TCP 와 UDP 가 있다 

간단하게 둘을 설명하면 통신에 앞서 두 호스트를 연결을 한다면 TCP계층이고 하지 않는다면 UDP 계층으로 보면 된다.



그렇다면 3-way handshake는 어디에서 사용이 되는 걸까? 

답은 TCP이다. TCP는 통신에 앞서 서로 연결하는 하는 과정을 거치게 되는데 그 과정을 3-way handshake 라고 한다.




그림에서 보는 것과 같이 3번의 과정을 거치게 된다.


1. Client에서 Server에 연결 요청을 하기위해 SYN 데이터를 보낸다.



2. Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다.

  그리고 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.



3. Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 요청을 잘 받았다는 ACK 를 전송한다.

 ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다.


이러한 과정을 보이는데 실제 데이터 예를 보면


위 그림과 대응해서 보면 10번 11번 12번 과정을 보면 13.13.3.3 이 클라이언트에 해당되고 13.13.1.1 이 server에 해당된다.

SYN 과 ACK를 그림에서 보는것과 같은 과정을 거친다는것을 알 수 있다.


그렇다면 왜 이러한 과정을 거칠까?


이유는 간단하다. TCP의 특징이 곧 이유인데 


1. 흐름 제어 및 혼잡 제어.


2. 높은 신뢰성을 보장한다.


로 볼수 있다.


오늘은 간단하게 3-way handshake를 공부 해봤다. 후에 통신을 자세히 공부하게 될때 참고가 될거 같다.




'TOPIC' 카테고리의 다른 글

끄적끄적 REST API ? <1>  (0) 2019.03.12
IP address  (0) 2018.07.10
Call by Value or Reference in JAVA  (0) 2018.07.02
3-WAY Handshake  (0) 2018.06.27
Unicode,UTF  (0) 2018.06.25
BASE64  (0) 2018.06.25
이 댓글을 비밀 댓글로