묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
강의 연장 부탁드립니다.
강의연장부탁드려도될까요 6월 한달간 다 듣는 걸 목표로 하겠습니다 급하게 따야할 일이 생겼는데 미루다 이제 듣기 시작했네요부탁드리겠습니다..!! 감사합니다.
-
미해결자동차 SW - UDS 진단통신 정복하기
CAN TP Addressing에 대한 질문 드려요
자동차 sw 신입 사원으로써 강의가 정말 도움이 됩니다. 그런데 ISO 15765 - 2 문서를 보면서 CAN TP 프레임에서 Addressing information에 관한 개념과 Normal Addressing, Exteneded Addressing같은 것들이 어떻게 활용이 되는지 궁금합니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 요청드립니다.
최근에 회사일이 바빠 강의를 들을 여력이 없었습니다.가능하다면 수강 기간 연장 가능할까요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
TCP Out of Order 발생 원인
안녕하세요 강사님 🙂 TCP 데이터 송수신과 관련하여 질문이 있습니다.데이터 시퀀스 넘버를 1, 2, ..., 100 이라고 했을 때,송신측이 1을 보내고 수신측이 1을 받고 2를 보내라는 ACK를 보내야 비로소 송신측이 2를 보내는 것으로 이해하였는데요.위와 같은 로직으로 송수신이 진행되면 순서가 잘못될 이유가 없을 것 같은데, 순서가 잘못되는 이유가 무엇인지 궁금합니다!프레임 한 개씩 체크하면서 보내면 너무 속도가 느리니, 실제로는 다수를 한 번에 보내고 ACK하는 방식으로 동작하는 것인지도 궁금합니다!위와 같이 동작하면 순서가 섞이는게 발생할 수 있다고 생각이 되어서요 🙂 감사합니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
OnRecvCompleted 내 RegisterRecv를 다시하는 이유가 먼가요?
좋은 강의 우선 너무 감사드립니다. ㅜㅜ 23:34 이후 부터 Recv 관련 내용을 듣다가 궁금한 부분이 있어서 질문드립니다. (1)OnAcceptHandler의 전체 코드를 살펴보면 클라이언트와 접속이 된 이후 수신 / 송신 이후 클라와의 연결을 끊어버리는데 (session.Disconnect() -> Shutdown, Close), OnRecvCompleted 내 RegisterRecv를 다시하더라도 클라쪽에서 보내는 데이터를 미처 다 수신받기 전에 끊겨질수 있지 않나요? 서버가 클라와의 연결을 끊을려고 할때 (Shutdown, Close) 클라쪽에서 보낸 데이터가 남아 있을 경우 바로 끊지 않고 비동기 수신 함수로 등록된 결과를 모두 처리하고 끊는걸로 이해하면 될까요? (2) 다시 낚시대를 던지는 행위 ? 가 결국은 클라와 연결이 된 이후클라쪽에서 한번에 여러개의 패킷을 send를 하기 때문으로 이해가 되는데, 만약 클라가 연결이 된 이후 한 개의 패킷만 전달한다는 정책이라면 따로 OnRecvCompleted 내 RegisterRecv를 하지 않아도 될까요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
강의연장 부탁드립니다
불합을 해서 한번만 더 연장 부탁드립니다 감사합니다
-
미해결IoT(사물인터넷)지식능력검정 자격증 대비
수업자료 다운이 불가합니다. 섹션 16
섹션 16. 사물인터넷과 빅데이터빅데이터 분석기법빅데이터 활용 사례 2개의 챕터에서 위와 같은 에러 메세지 나오면서 '수업자료' 가 다운이 불가합니다.조치 부탁드립니다. 감사합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP 의 Connectionless특성
안녕하세요! 궁금한게 있어서 문의드립니다.저는 지금까지 HTTP의 특징을 비연결성으로 배웠습니다... "HTTP/1.1부터는 keep-alive가 기본으로 세팅되어 자동으로 지속 연결이 된다." 라는 말을 저는HTTP 자체는 비연결성인데 HTTP 1.1 , HTTP 2.0등 이후 버전들이 성능개선을 위해 지속연결을 자동으로 사용한다 라고 말씀해주셨는데 그렇다면 HTTP는 연결성 아닌가요? 면접에서 HTTP의 특징을 물었을때 비연결성이다 라고 말하면 틀린건가요? 또한 둘 중 어떤게 맞는건지 궁금합니다HTTP는 무상태,비연결성 특징을 가진다. 왜냐하면 각 요청과 응답에 대해서 독립적으로 처리되기 때문이다. 또한 HTTP 1.0, 1.1 그 이상 버전에서도 TCP 지속연결 모델을 사용하지만 HTTP는 TCP위에서 동작하기 때문에 비연결성의 특징을 그대로 갖고 있다.HTTP는 무상태, 비연결성 특징을 가진다. 하지만 HTTP 1.0버전에서 비연결성의 단점이 드러났다. 따라서 1.1 버전 이상부터는 지속 연결을 사용하여 이러한 단점을 극복했다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
몇 가지 질문이 있습니다!
안녕하세요, 루키스님.좋은 강의를 제공해주신 것에 대해 항상 감사드립니다.기존에는 서버의 코어 부분은 건드리지 않고 컨텐츠 부분만 직접 수정 및 추가하며 클라이언트와 연동해보는 사이드 프로젝트만 진행해보았고,서버 코어 부분에 대하여 좀 더 깊게 이해를 해보기 위해 다시 정주행을 하는 중 입니다.이유는 모르겠지만, 같은 내용의 강의를 계속해서 볼 때마다 점점 이해되는 범위가 달라지는 것이 느껴지는 것 같긴 하네요..이번에는 최대한 운영체제 같은 윗 분들의 사정(?)을 고려해보며 이해를 해보며 접근을 해보려고 하는데요.그러다 보니 몇 가지 의문점이 생겨 질문 드립니다. 1. 세션코드에서 Send부분에 lock안에서 enqueue를 하는 이유는 TCP 통신의 순서를 보장하기 위해서 인가요? 2. Recv부분은 왜 lock이 안걸려있는지 이해가 되지 않습니다.검색해보거나 다른 분들 질문을 참고해보면, ReceiveAsync 부분이 1개의 스레드만 접근하는 것을 보장하기 때문이라고 하시는 것 같은데요.이 부분은 소켓API 부분에서 보장해주는 건가요?그렇다면 다른 SendAsync와 같은 부분과 다르게 버퍼를 읽던 중 다른 수신을 받게 되어도, 수신을 처리하는 스레드가 스레드풀에서 제공되는 것이 아닌, 현재 수신을 처리 중인 스레드가 완료 될 때 까지 어딘가에서 대기하고 있다가 한 번에 처리되는 건가요? 3. PacketSession의 OnRecv 부분에서 BitConverter.ToUInt16 메서드가 메서드 자체적으로 바이트 배열의 시작하는 인덱스에서 '2바이트'만큼을 부호없는 정수로 바꾸는 메서드라고 알아보았는데요.메서드 자체에서 '2바이트'라고 지정해둔 것은 보편적으로 패킷의 크기를 나타내는 헤더를 2바이트로 정하기 때문인가요? 4. 위처럼 OnRecv에서 패킷이 온전하게 도착하지 않았을 때, 단순히 writePos만 옮겨진 상태로 다음 패킷을 받을 때까지 기다리기만 해도 되는 것은, TCP 통신 자체가 '순서를 보장하기 때문에 앞에서 온전하게 받지 못한 패킷에 대해서 다른 패킷보다 먼저 다시 보내주고', '온전하게 도착하지 않은 부분에 대해서만 보내주기 때문'일까요?그리고 그렇다면 위처럼 순서를 보장해주고, 상대가 어디까지 받았는지, 어디를 못 받았는지 판단하는 것은 운영체제에서 알아서 처리되는 건가요?만약 상대가 못 받았을 경우 다시 보내줘야 한다면, 커널에서 패킷을 송신한 뒤에도 상대가 온전하게 받았다고 신호하기 전까지는 커널 상의 버퍼에 해당 패킷을 계속 저장해두고 있으려나요? 5. ArraySegment를 사용할 때, Array를 통해 배열의 시작 위치를 넘기고 어떤 위치부터 조회할 지(?) 조회할 위치를 넘기는 부분이 Offset인 것 같은데요.Offset을 0으로 두고 readPos및 writePos나 DataSize, FreeSize 등을 통해 패킷 시작 위치나 범위를 지정해주는 것은 Offset 값을 변경하며 이를 컨트롤 하는 것이 복잡하기 때문인가요? 처음 강의를 수강할 때에 비하면 강의 내용이 점점 머릿속에 그려지고 구조와 흐름이 얼추 잡혀가는 느낌이지만,누군가가 "너 한 번 혼자서 서버 만들어봐!!"라고 한다면 강의를 참고하거나 구글링 없이 혼자 서버 코어 단을 만들 수 있을 거라는 엄두가 나질 않는데요.6. 4년제 학부 졸업생의 수준에서 서버 코드를 보고 이 부분은 왜 이렇게 작성된 것인지, 어떤 흐름으로 코드가 실행되는지 정도만 이해하면 게임 서버 프로그래머로 취업하기엔 충분할까요...?아니면 정말 혼자 서버 코어 부분을 작성할 수 있을 정도가 되어야 하는건가요? 강의 들으며 궁금했던 부분을 싹 모아서 정리해보니 장문의 질문이 되어버렸네요 죄송합니다 ㅠㅠ다시 한 번 좋은 강의 제공해주셔서 정말 감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
LLocalStack 을 main 밖에서 쓰면 에러가 나는 이유??
이런저런 실험 도중에 발견한 에러입니다 CoreGlobal::CoreGlobal() { GThreadManager = new ThreadManager(); GMemory = new Memory(); GSendbufferManger = new SendBufferManager(); GDeadLockprofiler = new DeadLockProfiler(); SocketUtils::Init(); LlockStack.push(1); LlockStack.pop(); // 에러 지점 } main 안에서는 문제 없었는데 코어글로벌 cpp 파일에서저 부분이 문제더라구요 push 까지는 통과되고 size 도 1로 늘어나는것을 확인했는데 pop() 하는 도중 크러시가납니다 혹시 이유를 알고 계신가요??
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
리슨 서버 시 위젯 부착 관련
//CharacterBase.hif (!IsLocallyControlled()) { UE_LOG(LogTemp, Log, TEXT("LocallyControlled")); InfoBar = CreateDefaultSubobject<UWidgetComponent>(TEXT("Widget")); InfoBar->SetupAttachment(GetMesh()); InfoBar->SetRelativeLocation(FVector(0.0f, 0.0f, 210.0f)); static ConstructorHelpers::FClassFinder<UUserWidget> InfoBarWidgetRef(TEXT("/Script/UMGEditor.WidgetBlueprint'/Game/ProjectA/Blueprints/UI/WBP_InfoBar.WBP_InfoBar_C'")); if (InfoBarWidgetRef.Class) { InfoBar->SetWidgetClass(InfoBarWidgetRef.Class); InfoBar->SetWidgetSpace(EWidgetSpace::Screen); InfoBar->SetDrawSize(FVector2D(300.0f, 75.0f)); InfoBar->SetCollisionEnabled(ECollisionEnabled::NoCollision); } }안녕하세요 교수님, 리슨 서버로 동작 시킬 때 제가 만든 InfoBar 를 로컬의 캐릭터에는 부착하지 않고 로컬이 바라보는 프록시들에게만 부착을 하고 싶습니다. 그래서 제 생각에는 로컬로 컨트롤 되고 있다면 위젯을 생성하지 않는 방식으로 해결을 하려 했는데, 그럼에도 InfoBar 가 생성되어 부착됩니다.어떻게 하면 제가 의도한 대로 로컬에서는 프록시의 InfoBar 만 보이게 설계 할 수 있을까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
마이크로소프트 제공 SList 는 use-after-free 에 대하여 안전한가요??
마이크로소프트 제공 SList 를 모방하는 과정에서SList 는 여전히 use-after-free 에 대하여 취약하다고 말씀하셨는데 마이크로소프트에서 제공하는 SList를 사용 할 때도일반적인 상황에서는 안전한 것인지 궁금합니다제 생각에는 수업의 경우 메모리 풀이라는 특수 상황에서는 free가 일어나지 않으니 일단 안전한다고 생각하는데 메모리 풀이라 안전한 것이지? 그렇지 않은 경우는 또 어떨지 궁금합니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
여러 GW를 거칠 때 MAC주소 변경
안녕하세요. 강의 잘 듣고 있습니다.예시처럼 호스트에서 naver까지 여러 GW를 거쳐간다고 할 때, 첫 번째 GW에 도착하면 decapsulation을 하여 목적지(3.3.3.3)를 확인하고 이를 알고있는 다른 GW를 찾아 MAC 주소를 변경 후 다시 encapsulation 한다고 다른 분의 질문에서 봤는데요. 여기서 GW가 어떻게 최종 목적지 IP주소를 가지고 다음 목적지인 GW의 MAC 주소를 얻는 건가요? 처음 호스트에서 출발할 때는 DHCP 서버가 GW 주소를 알려줘 ARP 리퀘스트를 보내 GW MAC주소를 얻는다고 하지만, 다음 GW 주소는 어떻게 알고 있는건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
클라연동 질문드립니다.
안녕하세요 루키스님 강의를 따라하면서 클라를 콘솔이 아니라 winapi를 이용해 연동에 성공했는데요.(싱글톤으로 서버 세션을 만듬)일단 연결이 된걸 확인했으나 클라에서 창을 닫고 나가면 deque헤더에서 액세스위반 크래쉬가 나더라구요.그래서 디버깅을 열심히 해보니 클라가 나갈때 CoreGlobal의 소멸자가 호출되고 그중에 SendBuffer매니저를 지워줄때 문제가 생기더라구요. 그래서 혹시몰라 CoreGlobal 에 delete 하는 부분을 없애봐도 프로그램이 종료 되면SendBufferManager::PushGlobal함수 호출 ->SendBufferManager::Push 함수 호출 되고 나가는 과정에서 Lock이 문제가 발생했습니다..아무리 제가 찾아도 문제를 못찾겠어서 기존에 만들어주신 더미클라이언트에선 콘솔을 닫을때 코어글로벌 소멸자호출을 확인하니까 아예 호출이 안되는걸 확인했고 이 문제를 해결하려고 여러방면으로 시도를 해봤는데 잘 되지않아서 질문드립니다..서버를 열지않은상태에서 클라를 닫을때 크래쉬가 안나는걸 봐선 클라문제는 아닌거같은데 어떻게 해결하는게 좋을까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
쿠키와 https
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]좋은 강의에 항상 감사드립니다. 쿠키의 한계 중에서, 민감한 정보(예를 들어서 클라이언트의 비밀번호)를 쿠키에 포함하게 될 경우, 네트워크를 감청하는 다른 사용자에게 노출될 수 있다고 배웠습니다. 그런데 혹시 https 메시지를 이용하게 되면, https요청과 응답이 모두, 클라이언트와 서버 둘만이 알아볼 수 있도록 암호화 되서 송수신이 될 텐데, 쿠키에 비밀번호를 노출시켰다고 한들 네트워크를 통한 감청은 예방되지 않나요?
-
해결됨CloudNet@와 함께하는 Amazon EKS 기본 강의
Prometheus ALB 443 Listener Issue
EKS hands-on with CloudNet@의 "4장 실습 프로메테우스와 그라파나 구성하기" 에서"1.1. 프로메테우스 스택 설치"의 "프로메테우스 스택 설치" 진행 후"crd, servicemonitors, targetgroupbindings 확인"의"kubectl get targetgroupbindings -n monitoring" 명령어 조회 시,(admin@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get targetgroupbindings -n monitoring No resources found in monitoring namespace AWS Home Page의 EC2 Load balancers에서 Listener 조회 시, 443 Target 확인 되지 않는 현상.상기 Issue의 Solution은 아래와 같습니다. (CloudNet@ Team의 노고에 감사 드립니다.) Prometheus Stack을 배포함과 동시에 ALB는 Listener를 지정 후 Targetgroup 정보를 수신 합니다. 이때, 실습에서 생성한 AWS Certification Manager (略 ACM) 정보를 기반으로 합니다.(AWS Console Home에서 "Certification Manager" 로 검색하여 찾을 수 있습니다.) 만일, 실습 진행 간 배포한 Stack을 삭제 후 재 생성 한 경우, ACM에 대한 기존의 생성 정보를 호출,재차 변수로 반영하는 작업에서 추가로 생성 후 ACM을 변수로 반영하고자 하면,기존의 Issued 된 ACM이 추가 생성에 의한 Pending Validation 상태인 ACM을 기준으로 등록합니다. 또한, 재차 생성된 ACM은 Status가 변경 즉, Issued가 되기까지 일정 시간이 소요 되며,그 전에 Prometheus-stack 배포를 시도 할 경우, ACM 값을 호출하지 못하여 아래와 같이 표시 됩니다. ADDRESS (myeks-ingress-alb-123456789.ap-northeast-2.elb.amazonaws.com) 확인 불가Every 2.0s: kubectl get pod,svc,ingress,pv,pvc -n monitoring NAME CLASS HOSTS ADDRESS PORTS AGE ingress.networking.k8s.io/kube-prometheus-stack-grafana alb grafana.example.net 80 6m57s ingress.networking.k8s.io/kube-prometheus-stack-prometheus alb prometheus.example.net 80 6m57s 따라서 ACM 메뉴에 진입하여 기존의 생성된 ACM을 전부 삭제하고, ACM을 재차 생성하여 변수로 선언,Prometheus-stack을 삭제 후 재 배포시 성공적으로 주소가 할당 되는 것을 확인 할 수 있습니다.재 생성 후 일정 시간 소요 시 Issued를 확인 하고, ACM 선언 및 변수 적용 절차를 재차 수행 합니다.// Prometheus stack & PV with PVC Uninstallation // (admin@myeks:default) [root@myeks-bastion-EC2 ~]# helm uninstall -n monitoring kube-prometheus-stack release "kube-prometheus-stack" uninstalled (admin@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl delete pvc prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0 -n monitoring persistentvolumeclaim "prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0" deleted // ACM Renewing // (admin@myeks:default) [root@myeks-bastion-EC2 ~]# aws acm list-certificates { "CertificateSummaryList": [ { "CertificateArn": "arn:aws:acm:ap-northeast-2:398561966751:certificate/4a83d353-c8f1-4418-a007-3ad49eb5d7fd", "DomainName": "*.example.net", "SubjectAlternativeNameSummaries": [ "*.example.net" ], "HasAdditionalSubjectAlternativeNames": false, "Status": "ISSUED", "Type": "AMAZON_ISSUED", "KeyAlgorithm": "RSA-2048", "KeyUsages": [ "DIGITAL_SIGNATURE", "KEY_ENCIPHERMENT" ], "ExtendedKeyUsages": [ "TLS_WEB_SERVER_AUTHENTICATION", "TLS_WEB_CLIENT_AUTHENTICATION" ], "InUse": false, "RenewalEligibility": "INELIGIBLE", "NotBefore": "2024-05-22T09:00:00+09:00", "NotAfter": "2025-06-21T08:59:59+09:00", "CreatedAt": "2024-05-23T00:10:55.366000+09:00", "IssuedAt": "2024-05-23T00:13:12.752000+09:00" } ] } // ADDRESS VALIDATION // Every 2.0s: kubectl get pod,svc,ingress,pv,pvc -n monitoring NAME CLASS HOSTS ADDRESS PORTS AGE ingress.networking.k8s.io/kube-prometheus-stack-grafana alb grafana.example.net myeks-ingress-al b-123456789.ap-northeast-2.elb.amazonaws.com 80 20m ingress.networking.k8s.io/kube-prometheus-stack-prometheus alb prometheus.example.net myeks-ingress-al b-123456789.ap-northeast-2.elb.amazonaws.com 80 20m
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST 응답 데이터 중 Location에 관한 질문입니다.
[질문 내용]강의 중 POST 요청으로 데이터를 저장 후 새 리소스 경로(강의에서는 /members/100)를 응답 데이터의 Location에 담아서 클라이언트에게 보낸다고 말씀해주셨는데, 그럼 응답 데이터를 받은 클라이언트에서는 Location에 담긴 /members/100이라는 경로로 리다이렉트(GET 요청)하는건가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
단일쓰레드로 어디까지 커버가 될까요?
루키스님 강의 잘 듣고 여러가지 연동을 시도해서 컨텐츠를 만드는 중인데요 지금은 데이터나 오브젝트들이 많지 않아서 별 문제가 없는데 나중에 3d 포폴도 이걸 기반으로 만들고 싶어서 멀티쓰레드를 사용해야할 정도는 어느정도 되야하는지가 궁긍합니다. 그리고 마지막에 aws 에 서버 올리시는 부분을 잠깐 언급해주셨는데 c++서버강의엔 그런부분이 없는것 같아 그부분 강의 예정이 있는지도, 아니면 관련 자료나 공부를 어떻게 해야하는지도 궁급합니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
서버 OnAcceptCompleted, 클라이언트 OnConnectCompleted 함수의 Start()
Lister 클래스Session session = sessionFactory.Invoke(); session.Start(args.AcceptSocket); // ★ Connector 클래스Session session = _sessionFactory.Invoke(); session.Start(args.ConnectSocket); // ★ 1)args.AcceptSocket args.ConnectSocketStart 함수의 매개변수 둘 다 클라이언트 소켓이 맞나요??
-
미해결5G 네트워크 이해하기
수업자료
안녕하세요 수업자료는 어디서 받나요?? outline에 page별로 안내사항이 되어 있는 것을 봤습니다.이 강의자료는 제공되지 않는건가요?