묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3way handshaking 시점의 패킷들의 정보
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 너무 잘 듣고 있는데 궁금한 부분이 생겼어요..실제로 소켓 라이브러리를 통해서 TCP/IP에서 가상연결 ?의 느낌으로 3Way HandShaking이 일어난다고 말씀 하셨는데그렇다면 1. 구글 서버와 연결 하기 위해서 실제로 TCP/IP 계층의 패킷들이 만들어져야 하는데 거기서 세그먼트는 전송데이터(HTTP 메세지)는 빠지고 출발지, 목적지의 IP,PORT 들만 가지고 만들어져서 아래계층으로 헤더들을 추가해서서버랑 connetion 이 되는건가요 ?좀 더 부가적으로 설명하자면 전송데이터(HTTP 메세지)만 빠진 데이터들이 예를 들어 다시 밑으로 전송계층 -> 인터넷계층 -> 네트워크 계층으로 하나씩 감싸져서 상대 서버에 도착 후 3Way HandShaking 이후 connetion 이후 다시 소켓이나 혹은 애플리케이션 계층으로 돌아 전송데이터(HTTP 메세지)를 가지고 다시 차례대로 계층으로 헤더들이 다시 추가되어서 실제 데이터가 전송되는 지 너무 궁금해요.. (전 먼저 Connetion을 위해 HTTP메세지 없이 캡슐화 해서 보내고, Connetion 이후 다시 역캡슐화로 윗 계층가서 헤더 추가하고 다시 캡슐화 하고 보내는 걸로 이해했어요)그렇다면 가상연결의 느낌이랑 다른 거 같아서.. 가상연결은 TCP/IP에서 소켓 라이브러리를 통해 바로 연결되는 느낌인데 이론상 물리계층으로 데이터가 전달될텐데 이게 가능할 거 같진 않아서 헷갈려요 ㅠㅠ
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
iptables와 routing table의 차이
안녕하세요 널널님, 강의 잘 듣고 있습니다.다름이 아니라 routing table과 iptable의 차이에 대해 의문이 생겨 질문을 남깁니다.둘 다 패킷을 수정하여 ip:port 를 변경시켜주는, 일종의 nat를 수행하는 것 같은데 둘의 차이는 무엇인가요..?NAT table은 NAT 장치에 있는 routing table을 의미하는 것인가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
안녕하세요 수강기간 연장 부탁드리겠습니다.
안녕하세요업무가 늘어서 강의를 수강하기 어려워졌습니다..강의 연장을 부탁드려도 될까요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션 3. 포인터와 배열 (3주차) 배열 실습까지 진행했는데요
저는 코드를 똑같이 따라 했다고 생각했는데 오류가 납니다.파일 올려주신다고 했는데 어디서 다운 받을 수 있나요? https://youtu.be/7Tk8ocwMO7Q
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
반년넘게 C#해도 이해라는게 도저히 안갔는데
C++하니까스택이고 힙이고 참조고 이해가 됩니다진짜 왜 C#을 먼저했을까요? 감사합니다
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
hash_map, map 질문 드립니다.
hash_map 같은 경우 그럼 큰 공간을 미리 할당해 놓고 할당된 공간 안에 key값을 기준으로 value 값을 채워 넣어 준다.그럼 예를 들면 map.reserve(100);과 같은 개념일까요??메모리를 희생하여 CPU 연산 속도를 올린다는 의미가reserve : 큰 공간을 미리 할당(메모리 희생)이사비용 감소 (미리 큰 공간을 할당하여 사용하므로 new ...() 과 같은 동작을 안해도 되므로) -> CPU 연산 속도 증가? 이러한 의미로 이해했는데 제가 이해한바가 맞는지가 궁금합니다.key값을 알면 빠르게 찾을 수 있다. -> map은 이진 탐색 O(logN)으로 찾지만, hash_map은 hm[key] O(1) -> m[key]도 가능하지 않나요? 그럼 map도 키 값을 알면 O(1) 즉 빠르게 찾을 수 있게 되는 건가요?hash 기법을 이용해서 key값을 추출하는 이유가 보안 때문인건가요?메모리를 늘릴 수 록 성능이 좋아지는 의미가 키 값이 겹쳐질 확률이 적어져서 성능이 좋아지는 건가요? -> 키 값이 겹치면 빈 공간을 찾아 가야하니
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
안녕하세요. 강의 보기 전 질문드립니다.
안녕하세요. 유니티를 다루다가 언리얼을 공부하고자 해당 강의 구매 후 시청 전에 질문 드릴 것이 있어 남깁니다.유니티로 게임 로직을 구현할 때 경험상 씬(언리얼에서는 레벨이라고 하는 것 같습니다)을 통해 간단하게 로그인씬->로비씬->인게임씬의 로직으로 게임이 구현되는데요. 강의 내용의 서버는 인게임씬에 해당하는 것인지 로그인씬, 로비씬 같은 것도 구현이 가능한 것인지 궁금합니다.인게임씬에 해당하여 다른 씬은 따로 구현해야한다면 1강이나 2강을 보면 도움이 될 지도 궁금합니다.감사합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
lock 사용에 있어 근본적 질문
안녕하세요 강의 잘 듣고 있습니다. 전역변수 사용에 있어 원자화 되지 않은 함수들로 인한 race condition 문제로 저희가 원하지 않는 값들이 return 되기에 lock을 사용하여 해당 lock동안에는 다른 Thread의 사용을 방지한다고 이해하였습니다. 그렇기 때문에 lock의 사용이 빈번해진다면 전반적으로 코드의 구성도 복잡해지고 성능 측면에서도 좋지 못하다 이해하였고, 그렇다면 lock의 사용은 변수를 공유하지 않는 부분에서는 필요치 않을까? 하는 의문이 들었습니다. 나아가 만약 lock을 사용하는 Thread가 있다면, 그 기간 동안에는 lock을 사용하지 않는 다른 Thread들 도 lock의 명령어들이 끝날 때까지 기다려야 하는 것인지 궁금합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
HTTP 버전의 경우 어떤식으로 결정되는건가요?
클라이언트쪽에서 HTTP 요청메세지를 보내기전에GET /search?q=hello&hl=ko HTTP/1.1 웹애플리케이션 서버의 HTTP 버전의 지원 여부를 알아야 해당 서버에 맞는 HTTP버전으로 요청을 보낼꺼같은데 이부분은 언제 어떻게 실행되나요?
-
해결됨CloudNet@와 함께하는 Amazon EKS 기본 강의
섹션 21 EKS cluster 설치시 오류
안녕하세요 강의 잘 수강하고 있습니다.클러스터 설치중 아래와 같은 오류 메세지가 나옵니다.Error: loading config file "-": error converting YAML to JSON: yaml: line 24: mapping values are not allowed in this context 몇 번을 지웠다가 설치해봐도 이런 메세지가 생기네요환경변수도 충분히 집어 넣어서 카펜더 설치 정상적으로 완료했어도요...어떻게하면 해결할 수 있을까요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
프로토콜에 대해서 질문이 있습니다.
프로토콜이란 것이 참 추상적이어서 감이 잘 잡히지 않는데요, HTTP, FTP, SMTP, POP3--------------------------TCP, UDP TCP와 UDP의 차이는 어떻게 구현하는 것이며,HTTP, FTP, SMTP, POP3 프로토콜과 TCP, UDP의 관계에서 비롯된 차이가 궁금합니다.예를 들어, HTTP 프로토콜을 TCP로 구성한다고 했을 때, 또는 HTTP 프로토콜을 UDP로 구성한다고 했을 때 TCP 프로그래밍은 3 Hand - Shake 구조만 갖추면 TCP 프로토콜이라 할 수 있을지요? 또는 UDP 구조만 갖추면 UDP 프로토콜이라고 할 수 있을지요? HTTP, FTP, SMTP, POP3 프로토콜의 차이는 Client / Server 소켓 프로그래밍으로 프로그래밍을 달리 구성하는것에서 차이가 오는지요? 또 그것을 구현 중에 TCP 구조 UDP 구조를 택하는 것에서 차이가 발생하는지요? TCP/IP프로토콜이라는 말은 IP프로토콜 기반 TCP 프로토콜을 말하는 것이라 알고 있는데, HTTP/UDP 또는 HTTP/TCP 이렇게도 표기하는지요? 고맙습니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
본 강의 코드에서 Event와 CV간의 논리적 순서 차이
Event는 커널 레벨에서 다른 쓰레드와 통신하기 위해 사용하는 것이고 (이런 점에서 IPC와 유사하다고 생각됩니다. 하지만 프로세스와 달리 쓰레드는 메모리를 공유하므로 더 효율적이겠구요...) Condition Variable은 유저 레벨에서 직접 구현하는 것이라 생각하면 굳이 OS API 및 커널의 도움을 받지 않고 조건을 체크한다는 것으로 이해하였습니다.CV에서...일단 락 받아조건 맞아? 조건 안 맞으면 락 풀어. 다음 기회에...다른 thread에서 신호 줄때까지 blocked위 처럼 설명하신 것 같은데, 이해가 가지 않는 부분이 몇 군데 있어 질문드립니다.Q1. unique_lock<mutex> lock(m)은 생성자에서 이미 락을 잡았을텐데, 왜 cv.wait()에서 "1) Lock을 잡고" 부분에서 다시 락을 잡는건지 궁금합니다. 100% 락을 잡았다는 보장이 없는 것인가요?? 생성자에서 락을 잡지 못하면 어차피 다음 코드 실행이 안되지 않나요? (혹은 조건을 불만족했을때 cv.wait()에 대한 루프를 돌아야 하기 때문에 락을 다시 잡는 것인가요?)Q2. 왜 예제 코드에서는 Event 방식보다 CV 방식이 효율적이라고 하신건지 궁금합니다.결국 CV방식에서도 Blocking된 쓰레드를 깨우려면 커널의 도움을 받아야 하는 것 아닌가요?로직 상으로도 둘 다 바쁜 대기가 존재하지 않고 같은 순서로 동작하는 것 같은데 코드의 길이가 줄어서 효율적이라고 하신 건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReleaseRef 질문이 있습니다!
WraightRef wraight(new Wraight());wraight->ReleaseRef();wraight = nullptr;wraight 에 nullptr을 넣어서 ReleaseRef가 수행하는 도중에 위처럼 (중간에 개입)을 써 놓은 부분에서 다른 WraightRef가 wraight를 참조를 시도한다면 reftCount는 0이 되지만_refCount는 1이 되어서 delete this가 실행이 되면 문제가 발생하지 않나요??
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
리소스와 scv
안녕하세요 강사님!스타를 예로 들어주셨는데,그렇다면 SCV가 API에 해당하고 미네랄, 건물은 리소스, 미네랄을 켜라 명령, 건물을 지어라 명령이 HTTP 메서드에 해당하는 건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Serialization#3강에서 11분 6초 Array.Copy 질문
//string Array.Copy(Encoding.Unicode.GetBytes(this.name),0,segment.Array,count,nameLen); 강사님께서 destination Index가 들어갈 자리에 count를 인자로 주셨는데, segment의 경우 자료형이 ArraySegment이기 때문에 단순 count가 아닌 segment.Offset + count를 destination Index로 주어야 될것같은 의문이 들어서 질문드립니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
Socket에 대한 질문입니다.
서버측에서 연결 대기하는 소켓과 서버측에서 프로세스가 생성하고 오픈하는 소켓은 서로 다른건가요? 다르다면 그 차이는 무엇일까요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
순서 번호(sequence number)에 관한 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 강사님?? 강의를 듣다가 궁금해서 질문 남깁니다. 두 Host가 TCP IP 통신을 위해 3 way handshake 후 통신을 할때 sequence number는 이전 그대로인가요, 아님 새로운 임의의 숫자인가요?예를 들어 초기에 Host A(1234) / Host B(369)이면 3 way handshake 후 Host A(1235) / Host B(370)가 된다. Host A에서 Host B로 데이터를 전송할 때 sequence 번호는 1235인가요? 아님 새로 배정되나요?매번 질문에 답해주셔서 감사합니다 :)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
잡큐1, 2를 들으며 질문이 있습니다. (Push 큐로직 + Send()의 시간복잡도 관련)
루키스님 안녕하세요?잡큐 1, 2를 들으며 본 서버 강의 앞부분과 비슷한 내용같은데 차이를 몰라 질문 올리게 되었습니다. 아래 질문들의 제 본질적인 질문은옛날에 만든거 아닌가? 왜 새로 만드지? 뭐가 다른거지?입니다 JobQueue #1 강의 중PacketHandler.cs 수정 중에스레드가 일을 Push할 때 처리 가능한 상황이면 해당 스레드가 처리, 그렇지 않으면 Queue에 Push만 하고 종료, 서버코어의 Session.cs의 Send()가 이미 비슷하게 구현됨이라고 설명해주셨는데, 말씀 그대로 이미 비슷하게 큐로 구현이 되어있어 뭐가 다른거지 생각해보다가아래 그림 플로우 처럼 제가 이해한게 맞는지 궁금합니다. JobQueue #2 강의 중 Broadcast() 로직의 O(N^2)을 O(N)으로 줄이기 위해 패킷 모아보내기 스킬을 소개해 주셨습니다.그런데 강의 앞부분 'SendBuffer'에서 버퍼를 다룰 때RecvBuffer와는 다르게 SendBuffer는 외부에 구현함으로써 O(N^2)을 O(N)으로 줄일 수 있다.라고 이미 말씀해주셨는데요, O(N^2)을 O(N)으로 줄이는 둘의 차이점이 궁금합니다.둘은 완전히 다른 얘기일까요? 만약 그렇다면, 둘 다 그대로 방치했다면 O(N^3) O(2N^2, 표현이 맞진 않지만 느낌상)이 되는 로직이 되는건가요? 답변 미리 감사합니다.수강자 올림
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
API 종속에서 자유로워지기
강의 초반부에 windows.h같은 헤더를 사용하게 되면 추후 바꿔야 될 부분이 많아 표준인 thread를 사용한다고 하셨습니다.강의가 window os기반으로 구성되어 있고, 제가 window os는 잘 사용해 보지 않아 막연한 걱정이 있는데, 그럼 window에서 작동하는 IOCP로 서버 구성시, 추후 리눅스로 옮겨갈때 epoll로 바꿔주는 과정에도 엄청한 자원이 소모되지 않나요? 현업에서는 대부분 window os로 서버를 구성하나요? epoll에 대해서도 꼭 공부가 필요한지, IOCP에 비해 중요도가 떨어지는지도 궁금합니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
코어와 쓰레드의 매핑관계가 잘 이해가 가지 않습니다.
10:30부근에 말씀하시는 내용을 들어보면,쓰레드의 개수 = 코어의 개수 일때 가장 이상적이라고 하셨습니다.CPU가 4코어일때 하나의 프로세스(MMO서버)에 4개의 쓰레드가 가장 이상적이라는 의미인가요?멀티코어 프로세서에서 같은 프로세스여도 서로 다른 쓰레드이면 각 코어마다 같은 프로세스의 서로 다른 쓰레드 작업이 가능하다. 이게 가능한 이유는 유저모드 쓰레드가 아닌 커널 모드 쓰레드 이기 때문이다.제가 이해한 위 내용이 맞는지 궁금합니다.