묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
공부 방법에 대해서 질문이 있습니다
안녕하십니까 게임 프로그래머 취업 가이드 영상을 보고 클라이언트쪽만 공부하다가 서버 공부를 시작하려고 하는 대학교 2학년생입니다.유니티와 언리얼강의 전체를 한번씩 보면서 어떤 느낌인지 파악하고 이해 안되는 강의를 계속 돌려보는 식으로 공부하려고 했습니다. 근데 제가 유니티 c#, 알고리즘, 엔진을 들을때는 괜찮았는데 게임서버 강의를 이제 1번 완강했는데 거의 부분적인 이해만 한것같고 전체의5%정도밖에 이해를 못했습니다.. 이게 다음파트로 넘어가는게 맞을까요? 아니면 이해갈때까지 서버강의를 계속 들어야할까요?조금이라도 이해가 더 될까봐 한빛아카데미 데이터 통신과 컴퓨터 네트워크 박기현 지음 이 이론책을 같이 보면서 공부중인데 이 두꺼운 이론책을 봐도 이 강의와의 접점을 못찾겠고 봐도 이해가 잘 안가는데 보는게 맞을까요? 아니면 시간낭비일까요..?강의 듣는 순서도 고민이 됩니다 유니티 강의보다 c++ 강의와 c++ 서버 강의를 듣고 유니티 강의로 넘어오는게 나을까요 아니면 지금 하는대로 유니티먼저듣고 c++강의로 넘어가는게 맞을까요?중구난방하게 글을 적은 느낌이라 죄송합니다 ㅠㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
쿠키와 세션
쿠키랑 세션이랑 다른거잖아요둘다 인증에 사용되는 작은 저장소같은거예요저는 둘이 다르다고해서어떤로그인에는 전과정에 쿠키만 쓰이고 어떤과정에는 전과정에 세션만쓰이고이런건줄알았는데 이 그림을 보니로그인이라는건 세션+쿠키가 둘다쓰이는 작업인거네요..?로그인을 하면 항상 sessionid를 발급해줘야하니까 세션이 쓰이고클라이언트 측에서는 그정보를 저장하고있어야하니 sessionid를 담은쿠키가 생성되는거구요.제 말이 맞나요?https://sjparkk-dev1og.tistory.com/12. 쿠키정보는 항상 서버에 전송되기때문에 네트워크 트래픽이 유발돼요근데 쿠키는 웹브라우저에 있는 작은저장소예요 이말은 곧 서버의 자원을 활용하지 않는다는얘기죠근데 서버에 항상 전송돼서 네트워크 트래픽을 유발하는게 서버의 자원을 쓰는것과 다른얘기인가요?자꾸 요청이 오면 그거 처리하느라 자원을 써야하는거아닌가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
new List 동기화 와 관련하여..
public List<IPacket> PopAll(){ List<IPacket> list = new List<IPacket>(); lock(_lock) { ...어떤 처리.. }} 이 함수가 멀티 스레드로 실행 된다고 했을대 list 이 변수는 안에가 list 형태인데 linkedlist 같은것도 스레드 세이프 한건가요?여러개의 스레드가 linkedlist 를 생성만 한다고 했을때(위의 예시처럼 원소 추가나 조작 없이) 동시에 new 연산이 내부에서 실행 된다 여러개 스레드에서 동시에 힙에 new 연산이 실행될것 같은데(예를 들어 c++ vector<> 같은..) 멀티스레드로 new 연산시 같은 주소에 생성될 일이 발생할 수도 있지 않을까 해서요 질문을 요약하자면-지역변수에서 힙쪽의 new 를 생성하는게 있다면 그것은 스레드 세이프한가? 라는것이 질문입니다답변 부탁드려요!
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
IP주소를 이용한 네트워크 주소 식별 관련
안녕하세요, 좋은 강의를 올려주셔서 감사드립니다.아래와 같은 두개의 IPv4 주소가 있다고 가정했을때,[1] 217.101.92.127 /25[2] 217.101.92.127 /27세가지의 의문점이 있습니다.의문1) 총 32 bit의 전체 숫자는 같지만 [1]과 [2]는 network ID를 식별하고자 하는 bit의 수가 다르기 때문에 각각 다른 network 로 식별할 수 있는 것일까?의문2) 만약 [1], [2]가 다른 network로 식별 된다면 [1], [2]의 전체 IPv4 주소는 같지만 [1], [2]는 다른 host로 식별 되는 것일까?의문3) [1], [2]가 결국 다른 host로 식별 된다면 IPv4 주소체계에서 32bit 숫자로 배정 할 수 있는 host의 숫자는 2^32가 아니라 중복이 허용되기 때문에 훨씬더 많은 host를 배정할 수 있는 것일까?항상 건강하시고 앞으로도 좋은 강의 부탁드립니다.감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
싱글 코어와 멀티 코어에 대해 질문드립니다.
안녕하세요. 싱글 코어와 멀티 코어에 대해 궁금한 점에 대해 질문드립니다.1.만약 제가 작성한 프로그램에서 멀티 쓰레드를 사용하더라도 사용하는 컴퓨터의 CPU가 싱글 코어 일 경우쓰레드를 사용할 때 컨텍스트 스위칭이 일어나기 떄문에 멀티 쓰레드를 사용하는 건 의미가 없는 게 맞을까요?2.반대로 멀티 코어인 컴퓨터에 단일 스레드 환경의 프로그램을 만들었을 경우 여러 코어를 사용하는 게 아닌 하나의 코어만 사용하게 되어 CPU의 성능을 제대로 활용 못하는 게 맞을까요? 실제 운영체제 환경에서는 제가 만든 프로그램 외 에도 백그라운드로 실행되는 프로그램들이 있어서 코어 하나만 사용하진 않겠지만 개념적으로 봤을 때 멀티 코어일 때 단일 쓰레드 환경의 프로그램이면 CPU 성능을 제대로 활용 못 하는 게 맞는 건지 궁금합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
안녕하세요. 강의 블로그를 정리했는데 괜찮을지 여쭤봅니다..
안녕하세요. 강의를 보고 블로그에 정리해보았는데 괜찮을지 여쭤봅니다.정리한지는 꽤 되었지만.. 최근 문제가 될 것 같다는 댓글을 받아서 여쭤봅니다.https://azurealstn.tistory.com/123#comment14716519위 글은 강의를 보고 정리한 글입니다.이상한 요지가 조금이라도 발견하시면 바로 비공개로 하겠습니다!감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReadOnlySpan 버전 문제
ReadOnlySpan<byte> s = new ReadOnlySpan<byte>(segment.Array, segment.Offset, segment.Count); 이 질이 오류가 난다고 강의에는 나오는데유니티 2021.3.4 버전을 쓰고 있는데 오류가 나지않는건 유니티에서 사용하고 있는 C# 버전때문인가요?ReadOnlySpan 은 C# 버전 몇부터 유니티에서 지원하는건지 설명이 잘 안나오는것 같은데 어디서 알수 있을까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Push의 LCurrentJobQueue관련 질문입니다.
현재 JobQ에 Push하는 과정에서LCurrentJQ를 확인하여 GlobalQ에 넣을지, 스스로 실행할 지를 결정하는 것으로 보입니다. TLS는 각 Thread마다 별개의 주소 공간으로 소유하고 있는 것처럼 동작한다고 이해하고 있습니다.한 thread에는 실행 흐름이 하나인 것으로 알고 있는데LCurrentJobQueue가 nullptr이 아닌 상황에서 Push가 발생할 수 있나요?Execute를 실행하는 thread의 LCurrentJQ만 nullptr이 아닐 것 같은데 Execute가 실행 중인 thread라면 Push를 동시에 실행할 수 없을 것으로 생각됩니다. ㅜㅜ
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
SendBuffer Pooling 관련 질문있습니다.
여기서 다 썼으면 버리고 새거로 교체할 때 교체하지 않고 그냥 Reset만 호출해서 _usedSize를 0으로만 해줘도 되지 않을까 했었는데 WSASend를 호출하는 과정에서 아직 예전 버퍼가 날아가면 안되는 상황이 있기 때문에 새로 할당해준다. 가 맞게 이해한 부분인가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의에서 뜨는 에러가 뜨지 않습니다.
강의에선 GenPackets.cs의 Span계열에 오류가 뜨는데 저는 Span계열에 오류가 뜨지 않습니다. 그럴경우 그냥 진행해도 될까요???
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
L3 Packet에서 payload
강사님 안녕하십니까, 좋은 강의 만들어주신 덕분에 정말 잘 듣고 있습니다.L3 Packet 개념에서 payload관련 설명 중 궁금한 것이 있어 질문드리고 싶습니다.강의에서 payload가 상대적 개념이라고 언급하셨는데, 정확히 어떤 의미인지 궁금합니다.감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷 모아보내기 개수와 flushed 개수가 다른데 왜이런걸까요?
상황.1listen register 는 10, backlog 는 100 으로 해놨고connector 에서 Connect 할대도 100 으로 해놨습니다SendBuffer 의 크기는 public static int ChunkSize { get; set; } = 65535 * 100; 이고RecvBuffer _recvBuffer = new RecvBuffer(65535); 인데 어떤 부분이 문제일까요?.. 원본 jobTimer 코드 까지 실행하면 강의와 결과는 거의 같게 나옵니다만.. 상황 2 위 상황에서 서버 클라가 보내고 받는 데이터가Hello Server!Hello Server! I am 1 가 되고 서버 클라 간의 패킷 또한 정상적으로 받아지는건 확인했습니다그런데 리슨서버에서 register = 1, backlog = 1로 해놓고더미 클라이언트 쪽에선 Connector 로 2개의 클라가 접속하게 했을때 결과가 아래 처럼 나오고 있습니다,connector.Connect(endPoint, () => { return SessionManager.Instance.Generate(); } , 2 );코드를 수기로 처서 그런것 같기도 한데 어떤 부분에 문제를 의심해 볼 수 있을까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
같은 프로세스에서 포트번호가 구분되는지 궁금합니다
강의에서 게임은 8090 , 화상통화는 21000, 웹 브라우저는 10010 이라고 예시가 나와있습니다. 만약에 크롬을 2개를 키거나 크롬, 사파리 이렇게 켰을때 포트번호가 겹칠 수도 있다고 생각되고 크롬에서 여러개의 페이지를 열었을때 어느 페이지에서 요청했는지 어떻게 구분하는지 궁금합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
브라우저 포트할당
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]클라이언트에서는 브라우저 창 하나당 포트 하나할당인가요?크롬 한창, 익스폴로러 두창이면 총 세포트 할당되나요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3way hand shake관련 질문 드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: )질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 복습하다가 궁금한 점이 생겨 질문드립니다 3 way handshake가 tcp 계층에서 실행되는데 연결시 ip 정보 없이 port정보로만 연결 하는 것인가요 ???그러면 3 way hand shake 연결 후 ip layer에서 ip정보 , network access layer에서 mac 정보가 추가된 후 클라리언트에게 패킷을 전달하는 것인가요???
-
미해결AWS Certified Advanced Networking - Specialty 자격증 준비하기
강의 업데이트
현재 시험에 맞는 강의일까요?혹시 아직 업데이트 안된거라면, 답변 부탁드립니다.다른 방법으로 공부를 해야할 것 같아서요!!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
심리스에 관하여..
11:51 분심리스관련해서 아이디어가 생각나서 혹시..아이디어.1(가정 : 몬스터라면 애초에 서버에서만 클라로 뿌려주면 되긴 하겠지만, 클라에서 몬스터 정보를 준다 가정할때..)몬스터, 스킬, 유저, 모든 사물에 잡큐를 하나씩 배치를 해주어서 심리스를 해결한다고 했는데즉 이 말은 동기화 되야 하는 데이터가 있을때 심리스라서 맵 단위로 잡큐가 존재 할수 없으니예를 들자면 플레이어가 있고 플레이어 근방에, A 라는 몬스터가 있는데 이 몬스터의 동작을 그 주변에 있는 몬스터들도 알아야 하는 정보라 할때 몬스터의 정보(어떤 변경사항이 있고 다른 유저가 알아야 하는정보)를 서버에 보내고플레이어 근방에 있는(대략 일정 변경의 반지름 또는 시야에 들어오는 공간분할 처리내에 있는 유저) 정도의 유저들(동기화 대상들)에게만해당 몬스터 정보를 뿌려주어 해서 몬스터,사물 기반으로 데이터를 전송하는 방식일까요?아이디어.2(서버에서 처리 되는 기준)서버기준으로 , 사물, 몬스터 등에 개별 잡큐가 존재1. 몬스터가 왔다갔다 하는 동작이 몬스터 개별 잡큐에 넣기만 하고 실행 하진 않는다2. 플레이어가 몬스터나 사물등 일정 거리 안의 시야뷰에 보인다면 해당 오브젝트 동기화 대상들간의 잡들을 실행 하면서 동기화 처리를 한다용어는 들어 보긴 했는데 설명을 듣다가 갑자기 생각이 떠올라서 적어 봅니다
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
쿠키와 http 설정에 대해서 질문드립니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 궁금한게 있어 질문드립니다.쿠키 강의영상에서 domain과 path속성은 HTTP 응답일때 해당하는 속성인건가요? HTTP 요청일떄 해당하는 속성인건가요? 그리고 [쿠키]에 관한 영상의 11분경에 " 쿠키가 막 생기면 큰일나겠죠?" 라는 말을 하셨는데, 무슨 의미인건가요? 제가 질문한 1번에 대한 답이 HTTP응답이라면, 응답해주는 입장에서는 쿠키는 사용자 PC에 저장되니 굳이 많이 저장되도 신경 안쓰지 않나요? 왜 도메인 속성을 지정안하면 큰일난다는 건가요? 이해가 안됩니다. HTTP응답에 Secure이나, HttpOnly 같은것은 서버쪽에서 지정해주는건가요? 그렇다면 이러한 속성들은 서버쪽에서 사용자를 위한 배려차원에서 지원하는건가요? 솔직히 서버측에서는 사용자가 다른곳에 가서 XSS공격을 받던 말던 상관 없을수 있을거같은데. 저런 속성을 지정하는건 브라우저가 자동으로 해주는지, 아니면 서버가 수동으로 작성해줘야하는지, 그러면 그것이 배려차원에서 작성해주는것인지 궁금합니다. 질문이 많아 죄송합니다. HTTP 강의 전체적으로 얘기해주시는 것들은 다 브라우저들이 자동으로 알아서 해주는 기능들인거죠? (강의 중간중간에 F12로 보여주신거보니 그런거같습니다. 아니면 예시로 나온 구글이 HTTP 속성들을 지정해놓은건가요?)실무에서 개발하면 HTTP Body에 데이터를 실어줄 로직을 짜기 급급하지. HTTP 속성을 컨트롤러단에서 set메소드를 이용해서 진짜 설정을 하나하나 해주는지 궁금해서요. 감사합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
Cache-Control 질문드립니다.
http 응답 메시지에 Cache-Control 헤더를 적는것이라고 알고있는데요. 클라이언트 - 프록시캐시서버 - 원서버이렇게 되어있다고 할 때, 프록시 캐시 서버를 도입하게되면 클라이언트는 원서버에서 데이터를 받는게 아니라 프록시 캐시서버에서 데이터를 받는건가요?1번의 응답이 맞다면 그럼 프록시캐시서버가 http응답 메시지를 클라이언트에게 내려주는건가요?Cache-Control: public 이나 Cache-Control: private는 프록시캐시서버와 원서버중에 어떤 서버가 내려주는 http응답메시지에 작성이 되어야하는건가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
연결을 유지하는 모델 질문입니다
안녕하세요이번 강의 20초쯤에 강사님께서 TCP/IP연결은 기본적으로 연결유지가 된다고 하셨는데 1.이 연결 유지가 된다고 하는게 3 Way Handshake를 계속 유지하고 있다는 뜻인가요? 2.HTTP는 기본이 연결을 유지하지 않는 모델이라고 <비연결성> ppt에 써져있는데 다음 페이지인 <비연결성 한계와 극복>에서 지금은 HTTP 지속 연결이라고 써있습니다. 이건 말그대로 이제 HTTP가 서버 자원 소모에도 불구하고 연결을 유지하는 모델로 바뀌었다는 뜻인가요?