Table of contents

    TCP(Transmission Control Protocol) 프로토콜에서 연결 과정은 3 Way-Handshake 과정을 이용합니다.

     

    사람들이 만날 , 악수를 통해 인사를 하는 것과 같이 연결을 위해 서로 확인하는 절차여서 Handshake 라고 이름이 붙혀진 같네요.

     

     

     

    TCP 연결 과정을 간단하게 표현하자면 아래와 같습니다.

     

    Client     --------------->     Server     : SYN

    Client     <---------------     Server     : SYN, ACK

    Client     --------------->     Server     : ACK

     

    클라이언트에서 서버로 연결 요청을 하기 위해 SYN 메시지를 송신 합니다.

     

    서버는 클라이언트의 연결 요청을 수락한다는 의미로 SYN, ACK라는 응답 메시지를 송신합니다.

     

    마지막으로 클라이언트는 응답에 대한 응답 메시지인 ACK 송신합니다.

     

     

     

    굳이 이런 복잡한 연결절차를 해야하는지 의문점이 생길 있습니다.

     

    이것은 일종의 신뢰성을 높이기 위한 절차입니다.

     

    현대에 와서는 전자 분야가 워낙 발달해서 어쩌면 이런 절차들이 무의미할 있지만, 과거에는 노이즈가 매우 심했다고 합니다.

     

    노이즈가 심하면 외부 요인에 의해 잘못된 데이터가 보내질 있습니다.

     

    이런 것들을 방지하기 위한 일련의 보안 절차같은 셈이죠.

     

     

     

    Ethernet 아닌 다른 통신 기술을 활용했을 , 이런 절차 없는 통신 시스템을 양산개발에 활용한 경험이 있습니다.

     

    양산을 하고난 뒤에도 문제가 없었죠.

     

    최종 어플리케이션의 목적이 다른 이유도 있었지만, 그만큼 Chip 신뢰성이 높아진 것도 하지 않았을까 싶어요.

     

     

     

    현업에일하다보면, 책이나 표준 문서에 적힌 내용과 환경이 맞지 않거나 전혀 다른 경우도 많습니다.

     

    경험해보지 않았는데, 문서 위주로 통신 기술 프로토콜을 선택하는 것은 정말 위험한 일이라고 생각합니다.

     

    프로젝트 어플리케이션의 목적에 따라 원하는 통신 기술 프로토콜을 활용해야하죠.

     

    통신 Latency 성능 확보를 위해, 일부로 UDP 활용하는 경우도 있다고 합니다.

     

    , TCP 재전송, 흐름제어 등을 활용하지 않겠다는 의미입니다.

     

    그리고 필요한 부분만 신뢰성을 확보하는 로직을 만들기도 합니다.