카테고리 없음

TuckerProgramming 네트워크 이론

_WooHyun_ 2025. 5. 25. 04:30

네트워킹이란

PC < = > AWS 같은 통신을 말함 프로토콜마다 차이점이 있는데 크게 3가지

  1. 레이턴시

CPU → RAM 빛의속도

PC → PC 거리에 따라 엄청난 속도차이 (ping 속도, 지연속도

물리적인 한계인 딜레이를 줄이기 위한 Latency 눈속임이 필요

  1. 연결 안전성

www : world wide web

집 → ISP(kt, lg, skt….) → BackBone (각 지역마다의 노드) → 바다 랜선 → ISP → AWS

패킷 이동중 연결이 끊길 수 있다.

이때 안정성을 잘 보완 필요

  1. 순서 비보장

CPU → RAM : 순서보장 / 스택 1,2,3 순서

PC → 랜선 → 네트워크 : 순서 보장 X / ISP, BackBone 에 가장빠른곳을 찾아 뿌려지기 때문에 순서 비보장

Protocol 이란

약속, 규약 TCP, UDP, HTTP, SMTP….

통신하기 위해서 규칙이 필요하기 때문

IP 10.10.25.3 → Gateway 10.10.0.0 10.10 에 대한 패킷들 IP로 모두 받음 IP로 컴퓨터를 찾고 → TCP/UDP/HTTP… 으로 변환되고 port로 bind된 터미널을 찾음

게임쪽은 보통 TCP / UDP

  1. TCP
    1. 연결 유무 확인, 패킷 순서보장, 패킷 송수신 보장
    2. 3 way handshake 를 통해서 연결성 유지함
      1. 패킷 전송 후 전송 무사히 됐다는 응답이 없거나 Disconnect를 받으면 연결이 끊겼다고 판단
    3. 패킷 보낼때 마다 패킷에 순서가 있어서 순서, 송신 보장해줌 1,2,4,5→ 도착 하면 1,2 만 처리하고 3 을 계속 재전송 요청 3이 도착한다면 4,5,6… 처리 시작
  2. UDP
    1. 연결 유무 X
    2. 순서 보장 X
    3. 송신 보장 X
    4. 3way handshake 를 하지 않아서 속도가 3배 빠름
    5. 패킷들의 유실 평균양은 7% 라고 함 그래서 게임, 스트리밍 등에 많이 쓰임
  3. Reliable UDP
    1. UDP 의 단점 때문에 프로그래머가 만든 게임용 통신
    2. 어떤 부분은 안전성 높이고 어떤 부분은 성능을 높이는 프로그래머가 규칙을 만듬

Deterministic 방식이란

TCP, UDP 전송부분 말고 어떤 데이터를 보내서 어떻게 활용할건지에 대해도 잘 정해야함

  1. Deterministic
    1. UDP 에서 많이 씀
    2. 반응성이 좋은게임에 많이 씀
    3. 같은 입력이 같은시간에 두개의 PC에 들어감 → 결과가 같다고 가정 가능
    4. 같은 입력 같은시간에 어떻게 넣냐 → 레이턴시를 어떻게 극복하냐 → 레이턴시 시간동안 기다리기 때문에 같은결과가 나옴
    만약 싱크가 안맞는다 (Dsync) 가 된다면
    1. 레이턴시 시간만큼 Delay주기단점 : 먹먹한 느낌이 듬, Delay라
    2. 방법 : 펀치한번날리는데 상대방 PC에 도착하는 시간만큼 Delay를 주어서 자기 PC에도 Delay를 주어 처리
    3. Roll BackP1 이 펀치한게 P2에서 펀치한 이후에 도착했다면 뒤감기해서 펀치를 처리하고 다음 P2의 펀치를 처리한 후 다시 앞감기를 함
      • 유저입장에서 튄다고 느껴짐 → 먼저 때린것 처럼 보였는데 뒤감기 앞감기 처리 때문에 먼저 맞은거 처럼 보이고 처리도 그렇게 됨 (사실 싱크가 맞는 처리)
      • 구현하기 어려움 : 뒤감기, 앞감기 처리 하다보면 문제되는 로직이 많음
    4. 단점 :
    5. Delay + Roll Back = Deterministic 방식오버워치에서 Roll Back 기능을 구현하다가 트레이서 Replay 기능이 쉽게 구현됨
    6. Delay 와 Roll Back 을 합친방법
  2. ServerAuthority
    1. TCP 에서 많이 씀
    2. 서버권한이 필요한 MMORPG등에 많이 씀

중계서버

== Relay Server == BroadCast Server 다 같은말

Player1 이 입력한걸 서버에 보내고 그 처리를 모든 Player한테 보내는 모든 입력에 대한 처리를 서버가 처리

턴제 처리와 같음 30fps 게임이라면 1초에 30번 만큼 턴제 처리를 하는거임

네트워킹이란

PC < = > AWS 같은 통신을 말함 프로토콜마다 차이점이 있는데 크게 3가지

  1. 레이턴시

CPU → RAM 빛의속도

PC → PC 거리에 따라 엄청난 속도차이 (ping 속도, 지연속도

물리적인 한계인 딜레이를 줄이기 위한 Latency 눈속임이 필요

  1. 연결 안전성

www : world wide web

집 → ISP(kt, lg, skt….) → BackBone (각 지역마다의 노드) → 바다 랜선 → ISP → AWS

패킷 이동중 연결이 끊길 수 있다.

이때 안정성을 잘 보완 필요

  1. 순서 비보장

CPU → RAM : 순서보장 / 스택 1,2,3 순서

PC → 랜선 → 네트워크 : 순서 보장 X / ISP, BackBone 에 가장빠른곳을 찾아 뿌려지기 때문에 순서 비보장

Protocol 이란

약속, 규약 TCP, UDP, HTTP, SMTP….

통신하기 위해서 규칙이 필요하기 때문

IP 10.10.25.3 → Gateway 10.10.0.0 10.10 에 대한 패킷들 IP로 모두 받음 IP로 컴퓨터를 찾고 → TCP/UDP/HTTP… 으로 변환되고 port로 bind된 터미널을 찾음

게임쪽은 보통 TCP / UDP

  1. TCP
    1. 연결 유무 확인, 패킷 순서보장, 패킷 송수신 보장
    2. 3 way handshake 를 통해서 연결성 유지함
      1. 패킷 전송 후 전송 무사히 됐다는 응답이 없거나 Disconnect를 받으면 연결이 끊겼다고 판단
    3. 패킷 보낼때 마다 패킷에 순서가 있어서 순서, 송신 보장해줌 1,2,4,5→ 도착 하면 1,2 만 처리하고 3 을 계속 재전송 요청 3이 도착한다면 4,5,6… 처리 시작
  2. UDP
    1. 연결 유무 X
    2. 순서 보장 X
    3. 송신 보장 X
    4. 3way handshake 를 하지 않아서 속도가 3배 빠름
    5. 패킷들의 유실 평균양은 7% 라고 함 그래서 게임, 스트리밍 등에 많이 쓰임
  3. Reliable UDP
    1. UDP 의 단점 때문에 프로그래머가 만든 게임용 통신
    2. 어떤 부분은 안전성 높이고 어떤 부분은 성능을 높이는 프로그래머가 규칙을 만듬

Deterministic 방식이란

TCP, UDP 전송부분 말고 어떤 데이터를 보내서 어떻게 활용할건지에 대해도 잘 정해야함

  1. Deterministic
    1. UDP 에서 많이 씀
    2. 반응성이 좋은게임에 많이 씀
    3. 같은 입력이 같은시간에 두개의 PC에 들어감 → 결과가 같다고 가정 가능
    4. 같은 입력 같은시간에 어떻게 넣냐 → 레이턴시를 어떻게 극복하냐 → 레이턴시 시간동안 기다리기 때문에 같은결과가 나옴
    만약 싱크가 안맞는다 (Dsync) 가 된다면
    1. 레이턴시 시간만큼 Delay주기단점 : 먹먹한 느낌이 듬, Delay라
    2. 방법 : 펀치한번날리는데 상대방 PC에 도착하는 시간만큼 Delay를 주어서 자기 PC에도 Delay를 주어 처리
    3. Roll BackP1 이 펀치한게 P2에서 펀치한 이후에 도착했다면 뒤감기해서 펀치를 처리하고 다음 P2의 펀치를 처리한 후 다시 앞감기를 함
      • 유저입장에서 튄다고 느껴짐 → 먼저 때린것 처럼 보였는데 뒤감기 앞감기 처리 때문에 먼저 맞은거 처럼 보이고 처리도 그렇게 됨 (사실 싱크가 맞는 처리)
      • 구현하기 어려움 : 뒤감기, 앞감기 처리 하다보면 문제되는 로직이 많음
    4. 단점 :
    5. Delay + Roll Back = Deterministic 방식오버워치에서 Roll Back 기능을 구현하다가 트레이서 Replay 기능이 쉽게 구현됨
    6. Delay 와 Roll Back 을 합친방법
  2. ServerAuthority
    1. TCP 에서 많이 씀
    2. 서버권한이 필요한 MMORPG등에 많이 씀

중계서버

== Relay Server == BroadCast Server 다 같은말

Player1 이 입력한걸 서버에 보내고 그 처리를 모든 Player한테 보내는 모든 입력에 대한 처리를 서버가 처리

턴제 처리와 같음 30fps 게임이라면 1초에 30번 만큼 턴제 처리를 하는거임

네트워킹이란

PC < = > AWS 같은 통신을 말함 프로토콜마다 차이점이 있는데 크게 3가지

  1. 레이턴시

CPU → RAM 빛의속도

PC → PC 거리에 따라 엄청난 속도차이 (ping 속도, 지연속도

물리적인 한계인 딜레이를 줄이기 위한 Latency 눈속임이 필요

  1. 연결 안전성

www : world wide web

집 → ISP(kt, lg, skt….) → BackBone (각 지역마다의 노드) → 바다 랜선 → ISP → AWS

패킷 이동중 연결이 끊길 수 있다.

이때 안정성을 잘 보완 필요

  1. 순서 비보장

CPU → RAM : 순서보장 / 스택 1,2,3 순서

PC → 랜선 → 네트워크 : 순서 보장 X / ISP, BackBone 에 가장빠른곳을 찾아 뿌려지기 때문에 순서 비보장

Protocol 이란

약속, 규약 TCP, UDP, HTTP, SMTP….

통신하기 위해서 규칙이 필요하기 때문

IP 10.10.25.3 → Gateway 10.10.0.0 10.10 에 대한 패킷들 IP로 모두 받음 IP로 컴퓨터를 찾고 → TCP/UDP/HTTP… 으로 변환되고 port로 bind된 터미널을 찾음

게임쪽은 보통 TCP / UDP

  1. TCP
    1. 연결 유무 확인, 패킷 순서보장, 패킷 송수신 보장
    2. 3 way handshake 를 통해서 연결성 유지함
      1. 패킷 전송 후 전송 무사히 됐다는 응답이 없거나 Disconnect를 받으면 연결이 끊겼다고 판단
    3. 패킷 보낼때 마다 패킷에 순서가 있어서 순서, 송신 보장해줌 1,2,4,5→ 도착 하면 1,2 만 처리하고 3 을 계속 재전송 요청 3이 도착한다면 4,5,6… 처리 시작
  2. UDP
    1. 연결 유무 X
    2. 순서 보장 X
    3. 송신 보장 X
    4. 3way handshake 를 하지 않아서 속도가 3배 빠름
    5. 패킷들의 유실 평균양은 7% 라고 함 그래서 게임, 스트리밍 등에 많이 쓰임
  3. Reliable UDP
    1. UDP 의 단점 때문에 프로그래머가 만든 게임용 통신
    2. 어떤 부분은 안전성 높이고 어떤 부분은 성능을 높이는 프로그래머가 규칙을 만듬

Deterministic 방식이란

TCP, UDP 전송부분 말고 어떤 데이터를 보내서 어떻게 활용할건지에 대해도 잘 정해야함

  1. Deterministic
    1. UDP 에서 많이 씀
    2. 반응성이 좋은게임에 많이 씀
    3. 같은 입력이 같은시간에 두개의 PC에 들어감 → 결과가 같다고 가정 가능
    4. 같은 입력 같은시간에 어떻게 넣냐 → 레이턴시를 어떻게 극복하냐 → 레이턴시 시간동안 기다리기 때문에 같은결과가 나옴
    만약 싱크가 안맞는다 (Dsync) 가 된다면
    1. 레이턴시 시간만큼 Delay주기단점 : 먹먹한 느낌이 듬, Delay라
    2. 방법 : 펀치한번날리는데 상대방 PC에 도착하는 시간만큼 Delay를 주어서 자기 PC에도 Delay를 주어 처리
    3. Roll BackP1 이 펀치한게 P2에서 펀치한 이후에 도착했다면 뒤감기해서 펀치를 처리하고 다음 P2의 펀치를 처리한 후 다시 앞감기를 함
      • 유저입장에서 튄다고 느껴짐 → 먼저 때린것 처럼 보였는데 뒤감기 앞감기 처리 때문에 먼저 맞은거 처럼 보이고 처리도 그렇게 됨 (사실 싱크가 맞는 처리)
      • 구현하기 어려움 : 뒤감기, 앞감기 처리 하다보면 문제되는 로직이 많음
    4. 단점 :
    5. Delay + Roll Back = Deterministic 방식오버워치에서 Roll Back 기능을 구현하다가 트레이서 Replay 기능이 쉽게 구현됨
    6. Delay 와 Roll Back 을 합친방법
  2. ServerAuthority
    1. TCP 에서 많이 씀
    2. 서버권한이 필요한 MMORPG등에 많이 씀

중계서버

== Relay Server == BroadCast Server 다 같은말

Player1 이 입력한걸 서버에 보내고 그 처리를 모든 Player한테 보내는 모든 입력에 대한 처리를 서버가 처리

턴제 처리와 같음 30fps 게임이라면 1초에 30번 만큼 턴제 처리를 하는거임