✅ 한 것들
📖 게임 서버 프로그래밍 교과서
2.5 컴퓨터 네트워크의 품질과 특성
네트워크의 품질을 저해하는 것들
스위치나 라우터에 처리 가능 한계 넘는 데이터 수신되면
- 1 패킷 드롭 : 한계 넘는 건 버린다
- 2 처리 못한 건 메모리에 누적
패킷 드롭 하면 패킷 유실(packet loss) 일어남
인터넷 서비스 공급자는 초과분 버리는 편
가정용 라우터는 메모리 누적시키는 편
누적이 지속되면 멈추거나 재부팅
OSI 계층 1에서 데이터가 아날로그 신호로 변환
수신자가 다시 디지털로 바꿀 때 잡음 섞이거나 신호 약해질 수 있음
계층 2, 3의 체크섬 검사로 확인 가능. 수정 시도 후 안되면 버림.
정리
- 네트워크 기기 처리 한계 넘어가면 패킷 유실 발생 가능
- 회선 신호가 약하거나 잡음 섞이면 패킷 유실 발생 가능
전송 속도와 전송 지연 시간
전송 속도(스루풋) : 두 기기 간에 초당 전송될 수 있는 최대 데이터양
레이턴시 : 두 기기 간에 데이터를 최소량 전송할 때 걸리는 시간
레이턴시 영향 주는 것
- 매체 종류 : 구리 전선(랜선), 광섬유(해저 케이블), 무선
- 매체 품질 : 선 훼손, 신호 간섭 등 일어나면 패킷 드롭 일어나 재전송
- 송수신자 사이의 라우터 처리 속도
- 데이터의 매체 통과 시간보다 네트워크 기기 처리 시간이 훨씬 길다
두 단말기 사이의 레이턴시 = 두 단말기 사이에 있는 네트워크 기기의 레이턴시 총합
두 단말기 사이의 스루풋 = 두 단말기 사이의 네트워크 기기 중 최소 스루풋
무선 네트워크의 품질
와이파이 데이터 전송 (CSMA, Carrier Sense Multiple Access)
- 1 데이터를 전파로 변환하여 보내기 직전 다른 전파 감지되는지 확인
- 2 전파 감지 안되면 전파 전송
- 3 전파 감지되면 기다렸다가 1,2 반복
- 4 신호 보낸 후 '신호 받았음' 응답 오는지 체크
- 5 응답 일정 시간 없으면 다시 보냄
이게 없으면 서로의 신호가 뒤섞여 통신 불가
2.6 컴퓨터 네트워크에서 데이터 보내기와 받기
UDP와 TCP는 OSI 계층 4
UDP (User Datagram Protocol) 네트워킹
- datagram : 64킬로 바이트 이하의 이진 데이터
- 패킷 유실, 중복, 순서 뒤섞임 발생 가능 (훼손은 매우 드묾)
- UDP 소켓 하나로 데이터 송수신 모두 가능
- 다대다 통신 가능
TCP (Transmission Control Protocol) 네트워킹
- TCP에서 보낼 스트림 데이터는 segment(IP 패킷에 넣을 수 있는 크기의 단위)로 쪼개진 후 IP 패킷에 넣어진다
- ack(확인 응답) 올 때까지 세그먼트 보낸다
2.7 패킷 유실 시 UDP와 TCP에서 현상
UDP에서 패킷 하나 유실되면 그 패킷이 포함된 datagram 전부 유실
TCP에서 패킷 하나 유실되면 (ack 안 오면) 그 패킷만 재전송
UDP 평균 레이턴시 = 네트워크 기기 레이턴시
TCP 평균 레이턴시 = 네트워크 기기 레이턴시 + 패킷 유실률 x 재전송 대기 시간
하지만 네트워크 게임에선 TCP가 더 불쾌
패킷 유실률은 20% 이하지만, 재전송 대기 시간은 수백 밀리초 수준
2.9 네트워크 주소 변환
네트워크 주소 변환(Network Address Translation, NAT)
- 다른 단말기로 전송되던 패킷의 송신자 주소나 수신자 주소가 다른 걸로 변환
- NAT 라우터 : NAT 변환하는 기기. 인터넷 공유기 같은 것들.
- IP 주소 1개를 여러 기기가 공용하게 만들어준다
- 홀펀칭 : 임의의 포트 번호 할당해서 내부 주소에 대응하는 외부 주소를 만들어 포트 매핑 엔트리에 저장