달력

11

« 2024/11 »

  • 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
2008. 11. 10. 21:07

[Note] TCP 3 Way Handshake Extra Articles2008. 11. 10. 21:07


TCP 3 Way Handshake
가 진행되는 과정에 대해서 알아보도록 하겠다. TCP/IP Protocol에 대해서 처음 공부하는 독자라면 일단 지나쳐도 좋다. 하지만 다음에 다시 한번 들여다 봐야 할 것이다.

TCP 3 Way Handshake TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. 이름이 재미있다. 영어 그대로 보면세방향으로 악수를 한다?” 라고 표현을 했는데, 맞는 표현이다. 이 과정에서 송신측과 수신측에 총 3개의 패킷이 생성이 되기 때문이다. 캡처한 그림을 들여다 보라.

<그림1-6. 네트워크 모니터로 캡처한 그림 – TCP 3 Way Handshake1>

그림에서 하이라이트된 부분을 보면 192.168.5.3 이라는 IP주소를 사용하는 컴퓨터가 BLUEAPPLE이라는 이름의 컴퓨터로 HTTP Get Request를 보내는 것을 알 수 있다. BLUEAPPLE이 웹서비스를 하고 있다. 그런데 웹서비스를 요청하는 패킷의 앞에 TCP 패킷 3개가 더 있다는 것을 알 수 있다. 주의 깊게 보면 192.168.5.3 BLUEAPPLE에게 TCP패킷을 보내고 있고, BLUEAPPLE은 그에 대한 응답을 하고 있고, 다시 192.168.5.3이 뭔가 패킷을 보내고 있는 것이 보일 것이다. 이 과정이 TCP 3 Way handshake 이다. 그렇다면 이 과정에서 어떤 일이 생길까? 구체적으로 보도록 하자.


<그림1-7. TCP 3 way handshake의 과정>

먼저 송신측 호스트는 상대방과 통신을 원하고 있음을 알리는 뜻으로 TCP헤더의 SYN(Synchoronize) Flag 를 켠다. 켠다는(on) 것은 “1”로 설정함을 의미한다. 그리고 이 세그먼트(보통 TCP 패킷을 세그먼트라고 부른다.)의 일련번호(S/N)를 붙여서 세그먼트의 시작번호를 상대방에게 알려준다.(TCP 3 way handshake의 첫번째 과정)

수신측 호스트는 이 SYN Flag 신호에 대해서 응답을 하게 되는데 송신측 호스트가 보낸 패킷을 잘 받았다는 표시로 응답메시지를 만든다. ACK(Acknowledgement) Flag를 켜고, 상대방의 S/N에 대한 확인메시지를 발송해 주는 것이다. 예제에서 상대방의 S/N 100번이었기 때문에 S/N=100번을 잘 받았다는 응답으로 수신측 호스트는 다음에 받을것으로 기대되는 일련번호를 응답한다. 결국 100번에 1을 더하여 101번이라는 응답을 주게 된다. 그런 이유로 위의 예제에서 두번째 패킷의 ACK No 101번이 되었다. 이걸로 끝이 아니다. 자신이 보낼 패킷의 일련번호도 역시 발송하게 되므로 SYN Flag=on, 자신의 Sequence Number 200번부터 시작한다는 정보를 담아서 세그먼트를 만들게 되는데 이것은 결국 송신측과 수신측이 양방향 세션을 수립함을 의미하는 것이다.(TCP 3 way handshake의 두번째 과정)

마지막으로 송신측 호스트는 두번째 패킷에 대한 응답을 해 주게 되고, 그때부터 데이터의 전송이 시작된다. (TCP 3 way handshake의 세번째 과정)

조금 복잡한듯 하지만 익숙해 지면 간단히 찾을 수 있다. 네트워크모니터를 보면 설명부분에서 순서대로 S, A..S, A 로 시작하는 패킷이 있는 것이 보일 것이다 이 부분이 TCP 3 Way handshake를 하는 과정이다.

<그림1-8. 네트워크 모니터로 캡처한 그림 – TCP 3 Way Handshake2>


 

:
Posted by 새벽예찬