UDP vs TCP (스타크래프트)

hojoon·2023년 9월 10일
0

CS

목록 보기
2/2
post-thumbnail

최근에 CS지식, 그중에서도 네트워크와 관련하여 너무 부족함을 느껴서 관심을 가지고 공부하려고 하고 있다.

최근에 회사에서 로봇의 CMS(호출 대기 모드)와 관련하여 네트워크를 설정해야 했는데 로봇개발자분한테 물어보고 설명을 들어도 이해가 가지 않고 단편적인 CMS 서버 구조에 대해서만 듣다보니 막상 다시 혼자해보려면 잘안됐었다. (처음에 설명을 들었을땐 회사에서 아무도 못한 도커로 CMS 가상 이뮬레이터를 내가 켰음 ㅋㅋㅋㅋ 근데 한달 정도 지나고 보니 어떻게 했는지 몰라서 몇시간 삽질했는데도 못함.......)

결론은 네트워크에 대해 공부해보자

UDP TCP는 솔직히 개발자라면 많이 들어봤을거다.(난 잘모름 )

TCP 란 ?

첫 공부는 항상 남들이 다 써놓은 블로그보다 공식문서 같은거부터 봐야한다.

  • TCP (전송 제어 프로토콜)은 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜이다. TCP는 데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해준다. Vint CERF와 Bob Kahn (당시 DARPA 과학자)는 TCP를 1970년 대에 설계하였다. (출처 : MDN)

TCP / IP

TCP / IP 는 IP 주소 체계를 따르고 IP 라우팅을 이용해 목적지에 도달하여 TCP의 특성을 활용해 송수신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지하겠다는 것이다.

잠시만 이러면 네트워크 7계층 까지 대충은 알아야 한다.

(출처 :https://aws-hyoh.tistory.com/entry/OSI-7-Layer-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0)

  • 네트워크 통신 시 송수신자가 지켜야 할 각 단계의 규칙
  • 위로 갈수록 Application(소프트웨어, 프로그램) 가까워진다.
  • 아래로 갈수록 물리적(하드웨어)에 가까워진다.
  • 계층을 나눈 이유는장애 발생시 어느 구간에서 발생하였는지 명확하게 알기 위함이다.

7계층 : HTTP, FTP, DHCP, SMTP, DNS

DNS, HTTP빼고는 다 처음 듣는다. ㅎ!

4계층 : 송수신자의 논리적 연결을 담당하고, 신뢰성 있는 연결을 유지하도록 돕는다. (TCP, UDP)

3계층 : IP가 활용되는 부분, 대역이 다른 IP들이 목적지를 향해 제대로 찾아갈 수 있도록 돕는다.

2계층 : 같은 네트워크 대역을 사용하는 단말들에 대해 신뢰성 있는 전송을 보장한다. 'MAC address'를 활용하여 같은 구간 내의 Endpoint, Switching 장비에 전달하며, 1 Layer에 해당하는 물리 계층에 생길 수 있는 오류를 찾는다.

이게 그러면 IP Time 와이파이 네트워크 관리자 창에서 같은 채널?주소를 할당 받은 애들끼리 라우팅하는것이 3계층에서 일어나는 건가 보다.

1계층 : Cable로 대표되는 물리적인 계층으로 전기적 신호가 전송되는 구간입니다.

다시 돌아와서 TCP 란??

쉽게 말하면 송수신자같의 신뢰성 있는 연결을 보장한다. -> 왜냐면 서로 통신이 가능한지, 데이터를 얼마나 받을 수 있는지, 얼마나 보낼 수 있는지, 송수신자가 잘 보내고, 잘 받고 있는지를 확인한다.

이게 3-way handshake라고 한다.

각종 어려운 용어가 있지만 나는 오늘 노마드코더에 파인만 기법에 대해서 영상을 시청했기 때문에 기술적인 용어는 다 빼도록 하겠다.(귀찮아서 그런거 아님)

TCP 특징

  • 흐름 제어 (송수신자 상황에 맞게 데이터 양을 정함)
  • 혼잡 제어 (네트워크의 상태를 확인하고 데이터 송출량을 조절함)

TCP가 이렇단다. UDP 는??

UDP

  • 비신뢰적이고 비순차적 전달(에러가 없는 것을 보장하지 않음)
  • 'best effort'(최선형, 데이터를 목적지에 전송하는 것을 최우선으로 함). IP에 약간의 기능만 추가

'best effort'(최선형) 서비스 -> UDP segment는 사라지거나 순서가 바뀔 수 있음
connectionless(비연결형) -> 송/수신측 사이의 handshaking이 없고 각 UDP의 segment는 목적지 주소만 가지고서 독립적으로 다뤄짐.

UDP가 존재하는 이유?

연결 설립이 X -> 지연 X

단순 -> 송/수신자 간의 연결 상태를 유지 X

헤더 사이즈가 작음 -> 빠르게 데이터를 보낼 수 있다.

혼잡 제어가 없다. -> 빠르게 데이터를 보낼 수 있다.

TCP를 알고나니 UDP와의 차이점을 알겠고 UDP가 뭔지도 이해가 간다. (신뢰성을 보장하지 않지만 일방향이기때문에 속도는 TCP보다 빠름.)

스타크래프트에서 UDP란??

PC방에서 친구들이랑 스타크래프트 하다 보면 UDP로 게임한적 많을 거다. 보통 배틀넷에서 게임하면 반응 속도가 매우 느려서 런처 프로그램 깔고 게임 했었는데 (빠르게 해주는 원리는 모름) UDP로 하면 빨랐다. 그 이유는 배틀넷은 온라인이고 여러 유저가 접속해서 하는 게임이기 떄문에 또, 신뢰성을 보장해야 하기 때문에 TCP 방식이라 주고 받는 속도가 느린것 같고 로컬 네트워크는 같은 IP 물고 있기만 하면 되니까 신뢰성이런걸 보장할 필요가 없고 UDP 방식으로 데이터를 전송하기 때문에 빠른게 아닐까 생각해본다.!!

profile
프론트? 백? 초보 개발자의 기록 공간

0개의 댓글