본문 바로가기
  • AI (Artificial Intelligence)
Skills/Network

Tcp 3-way Hand shaking

by 로샤스 2014. 4. 22.

네트워크 상에서 서로 다른 Device 가 TCP 프로토콜을 이용하여 통신을 하려면 3 way hand shaking 을 하여야 한다.

 

1. Active open : 처음 Listen status 상대에게 Syn packet 을 발송하여 Syn+ack를 요청 한다.

2. Recieve Syn : Syn packet 을 수신한 상대는 Tcp 연결이 정상적이라면 Syn+ack packet 을 회신하며 Syn-reciened 상태로 변경된다.

3. Established : Syn+Ack 을 수신한 Client 는 자신의 Status 또한 Established 로 바뀌며 서로 Data를 주고 받을 수 있는 상태로 변경되게 된다.

 

 

아래에서 보면 Syn 이후 Syn,Ack 그다음 Ack 가 차례대로 발생한 내용을 볼 수 있다.

( 빨간색으로 가득찬 부분은 특정 아이피가 드러난 부분이라 삭제를 했다 )

 

 

#1. 아래 그림은 최초에 Syn Packet을 발생시키는 것에 대한 내용이다.

 

 

Seq : 순서 정도로 생각하면 된다. (sequence number)

Source port : client가 요청한 특정 Port

Destination port : 목적지 Port

Flag tcp : Syn 에만 Not set 이 아닌 Set 으로 표시 되어있고 해당 부분에 1이라고 표시 되어 있다.

             이것은 Syn 만 활성화 된 Packet 으로 Syn packet 이 전송되는 것을 보여준다.

 

#2. 아래 그림은 다음 단계 Syn+Ack 단계에서의 내용이다.

 

 

위에서 말한 것과 같이 목적지에서 소스 방향으로 보내는 Packet 이며 Ack가 생기며 1이라는 숫자도 더해졌다.

source port 는 목적지포트가 출발지 포트로 변경되었다. 요청에 대한 응답을 보내는 것이기 때문이다.

아울러 큰 빨간 박스에서는

AcK에서 Not set 이었던 부분이 Set으로 변경되며 0이 1로 변한 것과

Syn이 Set 으로 되어 있는 것을 확인 할 수 있다.ㄷㄱ

 

#3. 마지막으로 Syn + ack 에 대한 Ack 를 주는 내용이다.

 

 

AcK 부분만 Set (1)로 되어 있는 것을 확인 할 수 있다.

아울러 다시 목적지 포트와 소스포트가 변경이 된다.

최정적으로 ACk 만을 회신하여 Established 상태로 만든다.

 

#4. Client는 위와 같은 TCP Session 수립 후에 Http에 대한 Data 를 요청하게 된다.

 

 

 

 

 

 

 

출처 : http://blog.naver.com/bukbukno?Redirect=Log&logNo=30188900805

 

 

 

 

 

 

댓글