ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP/IP 와 UDP/IP
    [+] Security [+]/네트워크 2020. 6. 15. 21:33

     

    어느 화창한 6월의 오후,

     

    나는 여느 때와 같이 코딩을 하며 시간을 보내고 있었다.

     

    머신러닝으로 학습된 모델을 API로 만들어 원격으로 요청할 수 있게 끔 하는 작업이었는데,

     

    연구실 PC는 유동 IP를 사용하고 있어서, 고정 IP를 발급 받아야 외부에서 접근할 수 있다고한다.

     

    근데 IP발급 요청을 작성하는 칸에 무슨 외계어 마냥 맥주소, 통신방식, 단말종류 어쩌구 저쩌구 이해할 수 없는 용어들이 홍수처럼 쏟아지니, 대충 기본값으로 채워서 신청했다.

     

    그리고 몇일 뒤 발급받은 IP로 통신을 해보니....

     

    될리가 있나....

     

    마감기한이 얼마 남지 않아서, 고정IP를 발급받은 교수님 PC에서 서버를 급하게 실행했다.

     

    교수님께서는 정보보안을 한다는 애가 네트워크도 몰라서 되겠냐 하셨고

     

    무지함과 무력함을 용납할 수 없었던 나는, 이를 갈며 네트워크에 대해 모르는 것이 전혀 없게끔 하겠노라 하였으니

     

    그 첫번째로서 TCP/IP와 UDP/IP를 공부하고자 한다.

     

     

     

    0. 개요

     

    우선 네트워크란 뭘까.

     

    컴퓨터 여럿이 연결되어 정보를 주고받을 수 있는 통신망이다.

     

    주소창에 www.naver.com 을 입력한다면 네이버 화면이 딱 나타나는 것 또한 네트워크 과정이고

     

    카카오톡으로 메세지를 전송할 수 있는 것또한 네트워크 때문이다!

     

     

    하지만 이는 처음부터 컴퓨터 여럿을 연결시켜 통신하는 방식(네트워크)이 아니었다.

     

    2차 세계대전 당시 미국은 통신망이 붕괴되어도 다시 연결할 수 있는 아주 생명력 높은 통신망을 원했는데,

     

    여기서 고안된 방식이 네트워크다.

     

    컴퓨터를 여럿 연결하여 정보를 주고받는다면 일부 노선이 단절되어도 우회하여 통신할 수 있다!

     

    https://www.computerhope.com/jargon/n/network.htm

    하지만 이 방식을 사용한다면 길을 찾는 수고가 필요하고 쓸데없이 돌아 갈수도 있다.

     

    하여! 생겨난 통신 방법이 IP(Internet Protocol) 방식이다.

     

    어디로 도착해야 할지 도착지점을 명확히하여 통신하고자 하는 방식이다!

    (IP는 그외에도 패킷 분할과 재조립 기능을 규정한다)

     

     

     

    1. TCP/IP (Transmission Control Protocol/IP) 와 UDP/IP(User Datagram Protocol/IP)

     

    실제 통신에서는 도착지만 제대로 설정했다고 통신이 가능한 것은 아니다.

     

    그 다음으로는 통신방식을 설정해야 하는데

     

    통신방식에는 느리더라도 데이터 누실 없이 무사히 도착하게끔 하는 신뢰성 위주의 통신 방식이 있고,

     

    데이터 누락이 있더라도 최대한 빠르게 통신해야 할 상황이 있다.

     

    전자의 경우 TCP/IP, 후자의 경우 UDP/IP 의 특징이다.

     

     

    신뢰성을 중시하는 TCP/IP의 경우 

     

    1. 먼저 "지금 통화해도 되니" 라는 문자를 보낸다.

     

    2. 이를 받은 컴퓨터는 "ㅇㅇ 통화 걸어도 되" 라는 문자를 다시 보내면

     

    3. 두 컴퓨터는 정상적으로 데이터를 주고 받을 수 있는 환경이 된다.

     

    이렇듯 TCP/IP는 기본적으로 3번의 통신을 전제로 하는데 이를 3 Way-Handshake 라고한다.

     

    https://www.computerhope.com/jargon/n/network.html

    하여 TCP는 HTML을 주고받는 http통신이나, 파일 전송 통신, 이메일 등과 같은 신뢰성을 중시하는 통신에서 사용된다.

     

    HTML문서는 오타 하나만 나도 컴파일이 안되니까 확실히 정확한 통신이 우선된다.

     

    하지만 육안으로 구분할 수 없는, 거의 차이가 없는, 혹은 차이가 나도 괜찮은 데이터도 TCP통신에서는 전송되지 못하는데,

     

     

    이를 해결하기 위해 UDP/IP를 사용한다.

     

     

    UDP/IP는 TCP/IP와는 달리 3 Way-handshake도 없고, 한번 데이터를 던져주고 나서 데이터가 제대로 도착했는지는 뒷전이다.

     

    마치 편지와도 같다. 송신자는 편지를 작성후 우체통에 넣어두고나면 그뿐, 제대로 도착했을 지는 송신자가 관여할 일이 아니다.

     

    이렇듯 신뢰성을 포기하고 속도를 택한 UDP는 리듬게임이나 격투게임등 반응속도가 아주 민감한 통신에서 사용된다.

     

    혹시 게임 중에 "눌렀는데 왜 안먹지!" 라는 말에 친구가 "에휴 컴퓨터는 거짓말을 하지 않아" 라고 반응 한다면

     

    UDP통신에서는 데이터가 누실 될 수 있다고 일침을 갈겨주자.

     

     

    댓글

Designed by Tistory.