묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결기출로 대비하는 개발자 전공면접 [CS 완전정복]
Transport 계층의 process-to-process 통신은 network, data link, physical 단계를 거치지 않는 건가요?
"전송계층은 두 응용 계층 사이에서의 process-to-process 통신을 제공한다. 전송계층은 응용계층으로부터 메시지를 받아 전송계칭 패킷으로 캡슐화하여 전송한다" 라고 하셨는데, 제가 헷갈리는 부분이... 원래 TCP/IP 모듈을 보면 응용계층에서 데이터를 캡슐화하면서 Physcial layer 물리계층에 도달하면 0과 1의 신호가 돼서 다른 컴퓨터로 전선으로 전송이돼서 데이터를 받은 컴퓨터에서 다시 decapsulation을 거치면서 원본 데이터를 응용계층에 전달하는 것으로 알고 있는데요 전송 계층에서는 3way handshaking을 통해 두 컴퓨터의 transport 계층 사이에 논리적인 연결을 구축해서 데이터를 주고받는 것이라면... 아래의 network, data, physical layer은 거치지 않고 곧바로 주고받는 것인가요??? 그럼 어떤 상황에서 전송계층을 통해 곧바로 주고받고 어떤 상황에서 physical layer까지 도달해서 전달하는지 궁금합니다
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Receive 에 관해 질문 드립니다.
안녕하세요. 정말 신입 서버의 교과서 같은 강의라서 잘 보고 있다가 문득 궁금한 점이 생겨 질문 드리게 되었습니다. 제가 이해하기로는 TCP 는 Stream 방식이라서 100 byte 의 데이터를 send 하는 경우, 한 번에 받는다는 보장이 없어 20, 30, 50 이렇게 끊어서 받는 경우가 충분히 있을 것 같은데.. 현재 강의해서 제작된 RecvBuffer 를 사용함과는 무관하게 해당 현상을 해소하는 부분이 아직 안 보이는 것 같은데 이 부분은 따로 처리를 해야되는 부분인가요? 추후에 OnRecevie 함수 내부에서 처리를 하게끔 만드는 것인지, 아니면 해당 현상에 관련된 작업은 굳이 안해도 되는 것인지 궁금하여 질문드려봅니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
8분쯤
1) ETag사용시 클라이언트가 캐시 메커니즘을 모른다고 하셨는데 그러면 Last-Modified사용시에는 클라이언트가 캐시 메커니즘을 알고있는건가요? 2) 혹시나 아는거라면 캐시 메커니즘을 안다고 하는게 정확히 무슨뜻인가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
캐시 무효화 관련하여 질문이 있습니다.
안녕하세요.좋은 강의 잘 듣고 있습니다. 강의 중에 이해가 안가는 것이 있어서 질문드리고자 합니다. 캐시무효화 강의 중에 완벽한 캐시 무효화를 위해서는 Cache-Control: no-cache, no-store, must-revalidate와 같이 세가지 컨트롤 옵션을 모두 사용해주어야 한다고 하셨는데, 제 생각에는 no-store만 사용하여도 애초에 클라이언트가 캐시를 사용하지 않기 때문에 캐시를 무효화시킬 수 있을 것 같은데요. no-cache와 must-revalidate를 사용하는 것은 클라이언트가 캐시를 사용하지 않아도, 프록시 캐시가 작용할 수 있기 때문일까요?그리고, no-cache와 must-revalidate의 차이점은 이해가 가지만, 둘 다를 사용해야할 이유는 잘 모르겠습니다. 제 생각엔 서버가 origin server와의 통신이 안되는 상황에서 에러가 발생하기를 바란다면 must-revalidate를, 그렇지 않다면 no-cache를 사용하면 될 것 같은데요. 둘 다를 사용하면 오히려 클라이언트에게 혼동의 여지가 있지 않을까요?번거로우시겠지만 답변부탁드립니다. (_ _)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
여기 에서 이후에서 궁금 한것이 많아서 질문 드려요
1. 이동 등등 까지 해서 너무 좋은거같아요 이 이후에는 패킷 추가 하고 하는 방식으로 무기 선택 공격 피격 같은건서버에서 players list 에서 좌표 가지고 와서 피격 처리후 클라로 보내주는건가요? 아니면 클라에서 나 맞았어 라고 서버로 보내서 서버에선 Broadcast만 해주는건가요 ? 2. 또 강의 중에 들었던 프로토콜 버퍼 나 플랫 버퍼 같은 라이브러리를 이용해서 만들수도 있다고 하셧는데 지금 코드에서 수정 해서 만들어 봐도 될까요? 3. 지금은 서버 이긴한데 자체 컴퓨터 안에서만 돌아가는거 같아요. 노트북이나 쓰고있는 pc ip를 그냥 넣어서 다른 pc에서 접속으로 해도 될까요 수정이 많이 필요한가요?? 따로 강의는 없는거같아서 혼자 해보려고 해요.
-
해결됨네트워크, 그림으로 이해하자(2022ver.)
LAN과 사설 네트워크 관련
안녕하세요 좋은 강의를 해주셔서 감사합니다 강의를 들으면서 궁금한 점들이 생겼는데 1. 사설 네트워크와 LAN, 공용 네트워크와 WAN은 서로 비슷한 개념인가요? 분류 기준이 확실히 다른 것 같긴 하지만 사설 네트워크의 사설 IP가 NAT을 통해 라우터가 할당받은 공용 IP로 전환되고 인터넷에 접속 LAN과 인터넷 공유기(라우터 기능 중 NAT 기능이 특화된 기기)를 연결해 ISP의 서비스를 통해 인터넷 접속 이 2개가 굉장히 비슷하게 생각되어서요... 2. 공용(인터넷) 네트워크의 구성요소는 인터넷 + 라우터로 이루어져있는 것이 맞을까요? 3. 사소한 것이긴 하지만 16페이지에 LAN은 소속 기기들을 모두 포함하는 그림으로 되어있는 반면, WAN은 소속 LAN들을 포함하지는 않고 중심에서 연결되는 그림으로 되어있는데 차이점이 있는 것인가요? 4. 16페이지에서 공유기를 통해 NAT 기능이 되어서 공유 IP로 변환이 된 것 같은데 왜 공유기 그림이 아닌 WAN 그림에 ISP 항목이 들어가 있는지도 궁금합니다...
-
해결됨[D.P.2(DappProject2)] 디앱 프로젝트2(Klaytn 네트워크를 활용한 NFT 생성 및 판매)
리믹스가 실행되지 않습니다
Cannot connect to the remixd daemon. Please make sure you have the remixd running in the background 라는 문구와 함께 웹에서 리믹스가 실행되지 않습니다. 인강과 다른점은 npm을 사용하지 않고 yarn을 사용하여 remix를 설치하고 remixd -s . --remix-ide https://ide.klaytn.com/ 명령어를 실행하였을때 발생하는 오류입니다. 터미널에는 remix가 성공적으로 실행되었고 몇시몇분몇초에 홈페이지에서 연결이 되었다는 문구가 뜨지만 웹에서는 연결이 안되네요... 무엇이 문제일까요 웹브라우저 chrome과 safari 2개를 사용해 보았지만 똑같은 현상이고 dapp프로젝트 1 인강을 들을때와 동일한 개인 작업 환경임에도 불구하고 실행이 되질않습니다 도와주세요 ㅜㅜ
-
해결됨네트워크, 그림으로 이해하자(2022ver.)
사설, 공인 IP의 클래스별 차이
사설 IP, 공인 IP의 A,B,C 클래스로 나누는 이유 또는 목적과 관련해서 강의 후반부에서 혹시 다루시나요? 강의 커리큘럼에 포함되지 않는다면 혹시 추천해 주실만한 자료가 있을까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
로그인 로그아웃에서 쿠키, 세션
항상 좋은 수업을 해주시는 영한님과 좋은 답변을 달아주시는 서포터님들에게 감사의 말씀을 전합니다. 쿠키, 세션에 관해 궁금증이 생겨 다른 분들의 질문을 읽어보고 검색도 해봤는데, 제가 이해한게 맞는지와 궁금한 점이 있어서 질문을 남기게 되었습니다!! 로그인 로직에 대해 제가 제대로 이해한게 맞나요?? 1. 로그인 1) (최초 로그인) 브라우저에서 id, password를 담아 서버에 로그인을 요청한다. 2) 서버는 id, password를 검증하여 해당 사용자에 대한 sessionId를 생성하고 서버에 저장하고 Set-Cookie:sessionId(쿠키) 로 로그인 성공 응답을 보낸다. 3) 브라우저는 브라우저의 쿠키 저장소에 sessionId(쿠키)를 저장한다. 4) 이후 매핑된 쿠키가 있는 URL로 서버에 요청을 보낼 때, 브라우저가 자동으로 쿠키 저장소에서 꺼낸 쿠키를 Cookie:sessionId(쿠키)를 함께 보낸다. 5) 서버는 sessionId의 유효성 검사를 통해 클라이언트를 식별하여 로그인 상태를 유지한다. 2. 로그아웃 사용자가 로그아웃을 하면, 브라우저의 쿠키와 서버의 세션이 모두 삭제된다고 알고 있습니다. https://www.inflearn.com/questions/495180 F12 > Application > Cookies를 살펴보니 위 글의 답변처럼 브라우저는 각 사이트에서 생성한 쿠키를 URL과 매핑하여 관리하고 있다는 것을 알게되었습니다. (실제로 google 로그인을 하면 Cookie에 SSID가 생성되었다가 로그아웃하면 자동으로 사라지는 것을 확인할 수 있었습니다.) 1) 사용자1 구글 로그인->로그아웃->사용자2 구글 로그인 을 했다고 가정합니다. 어떠한 URL(google.com)에 매핑된 쿠키 정보에 다른 유저의 SSID가 동시에 존재할 수 는 없는게 맞나요?? "위 상황에서는 같은 URL로 로그인 요청이 두번 일어났지만 사용자1은 로그아웃을 하면서 쿠키 저장소에 사용자 1의 SSID는 삭제되고 사용자 2의 SSID가 새로 저장되었기 때문에 현재 브라우저의 쿠키 저장소에 google.com과 매핑된 쿠키는 사용자2의 ssid이다" 이 해석이 맞나요?? 2) 그렇다면, 사용자가 로그아웃 요청을 서버에 보내게 되면 서버단에서 세션을 삭제하는 코드를 작성하고 프론트단에서 브라우저의 쿠키를 삭제하는 코드를 작성하는 건가요???
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
AAA인증 관련 질문입니다.
안녕하세요. 강의 잘 듣고 있습니다. AAA인증 단계 교육 듣고 있는데요. 강의와 함께 실습을 따라해보던 중 PC쪽에서는 서버까지 핑이 잘 나가는데 반대로 서버쪽에서는 PC쪽으로 핑이 안나가는데요. 서버/라우터1/라우터2 쪽에서 AP까지의 핑이 막힙니다. 이게 정상인지 궁금하구요.. 만약 그렇다면 그 이유가 궁급합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
_sendQueue 질문입니다.
강의 마지막에 와서 뒤늦게 질문하는 느낌이 적지 않게 있는데, 재수강하면서도 여전히 긴가민가한 느낌이 있어서 질문드립니다. #_sendQueue에는 버퍼가 언제 쌓이는가. 쓰레드 A가 제일 처음으로 Send 함수를 호출했다. _sendQueue에 버퍼를 집어넣는다. _pendingList.Count ==0 이라 RegisterSend가 호출된다. 이후 RegisterSend 안에 있는 SendAsync 함수로 pendingList를 송신한다. 그런데 SendAsync 함수가 true 떠서, 즉 송신을 실패했다면? 쓰레드 A는 Lock을 풀고 사라지고, 이어서 다른 쓰레드 B가 Send를 호출했을 때 PendingList의 Count는 0이 아니므로, _ sendqueue에 버퍼만 집어넣고 쓰레드 B는 사라진다. 그 이후에 실패로 끝났던 SendAsync 함수가 콜백으로 OnSendCompleted 함수를 호출하면, _sendQueue에 쌓인 버퍼가 한꺼번에 송신된다. 이런 흐름이라고 이해하면 될까요? 만약 이게 맞다면 SendQueue는 SendAsync 가 실패로 끝났을 때를 위한 안전 장치라고 생각해도 될까요? 마침 질문글 답변 중에 이런 부분이 있기는데 한데 확신이 없네요. 멀티쓰레드보다는 비동기 네트워크 쪽과 관련이 있는데,SendAsync를 한다고 무조건 상대방이 받아준다는 보장이 없습니다.로컬 환경에서야 pending이 거~~의 대부분 false로 뜨고 바로 완료 되겠지만저 지구 반대편에 있는 사람이 접속했다면 이런저런 이유로SendAsync가 바로 완료되지 않고 pending = true로 설정될 확률도 높습니다.물론 말씀하신대로 Latency 뿐 아니라 Recv할게 너무 많아서 상대쪽에서 처리를 못해서 그럴 수도 있구요.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
애플리케이션을 포트 번호로 구분
안녕하세요? 음악도 들으면서 게임도 하는 경우를 예시로 들으시면서 하나의 IP에 있는 애플리케이션들을 포트 번호로 구분한다고 하셨는데요 제가 스프링부트로 서버 애플리케이션을 개발해서 구동할 때는 8080 포트로 지정할 수도 있고 8081 포트로 지정할 수도 있고리액트로 웹 사이트를 개발할 때도 3000번 포트로 지정할 수도 있고 4000번 포트로 지정할 수 있는데요 그냥 자바나 파이썬이나 C++로 프로그램을 짜도 이런 프로그램에도 포트번호가 있나요? (그리고 통신 기능이 없는 프로그램에도 포트 번호가 있나요?) 만약 있다면 다른 애플리케이션이 해당 애플리케이션의 포트 번호를 모르는데 어떻게 통신을 하나요? (포트번호를 명시적으로 지정한 적이 없는데 있다면)
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
API URL 설계
안녕하세요. API URI 설계에 대해서 궁금한점이 있습니다. 멤버 도메인과 주문 도메인이 있을 때 (JPA강의 예) 만약 해당 멤버의 주문을 검색하고자 하여 요청을 할 때 API URI는 어떻게 해야할까요? 1번. GET /members/{id}/orders 2번. GET /orders 이 둘중에서 어떤 URI로 설계해야 할지 궁금합니다. 인터넷 서칭 결과 관련있는 리소스는 1번처럼 사용한다고 나오는데 jwt를 사용할 경우 2번이 더 적합한게 아닌가라는 생각이 듭니다. 어떤 기준을 적용하여 1번과 2번 중 어떤 API URI 설계를 사용해야할 까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
멱등, 고려하지 않는다는 것의 의미가 헷갈립니다.
사용자1이 GET요청을 하고 사용자 2에 의해 리소스가 변경되면 다시 사용자 1이 GET요청을 했을때 결과가 다르니까 멱등이 아닌걸로 이해하면 될까요? 아니면 중간에 POST가 없었다면 GET요청 후 재요청했을때 값이 같을거니까 멱등하다라고 이해하면 되나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
재귀적 락 허용
재귀적 락을 허용 하지 않았을때 ReaderWriterLock은 Write할때 Read가 같이 일어나면 Write하기 전에 있던 데이터와, Write한 후의 데이터가 공존해서 Read해가기 때문에, ReaderWriterLock을 사용 하는거 같은데(Read만 해갈때는 문제 없어서 Read는 공용으로 가능) 어떤 경우에 재귀적 락을 허용하는지 잘 모르겠습니다. 재귀적 락을 허용했을때는 한 쓰레드가 여러개의 데이터를 write,read할때 사용 되는건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
lock 질문입니다
제가 혼자 만들어보면서 느꼈던 점은, "session에서 lock을 걸지 않고 recvbuffer의 writesegment를 가져오거나 DataSegment를 읽어올 때 lock을 걸면 최소한의 범위로 할 수 있을 것 같다" 입니다. 강사님께선 Session의 Send, RegisterRecv, OnRecvCompleted에 하나의 _lock 오브젝트로 전부 잠구셨는데 이렇게 되면 예를 들어 OnRecvCompleted를 호출해서 _lock 범위 내에서 처리하는 동안 Send를 호출하면 Send는 OcRecvCompleted가 끝날 때 까지 대기해야하는 상황이 발생하지않나라는 걱정이 조금 됩니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
강의에서 Non으로 설명하신 이유가 따로 있을까요 ?
김영한님께서도 항상 Non으로 이해하면 헷갈린다고 말씀하셨듯이.. Non으로 굳이 설명 하신 이유가 있을까요 ? If-match , If-Modified-Since 를 사용하는게 좀 더 직관적이고 이해하기 쉬운 것 아닌가요 ?? 추가로 쿠키와 캐시의 차이가 무엇인지도 궁금합니다
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTML form으로는 데이터 수정 못하는건가요 ?>
GET과 POST밖에 못 쓴다고 알려주시는데 PUT이나 DELETE를 못쓰면 기존의 데이터를 수정할 수 없는 것 아닌가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
궁금한 점이 있습니다.
강의 초반부에서 Session::Send()를 수정해주셨는데 { WRITE_LOCK; _sendQueue.push(sendBuffer); } if(_sendRegistered.exchange(true) == false) RegisterSend(); 이렇게 작성하면 안되는 것일까요? 별도로 스택 변수를 사용해야 되는 이유가 있는지 궁금합니다. 멀티스레드 개념이 잘 안잡혀서 번거롭게 사소한 것까지 여쭤봐서 죄송합니다..
-
해결됨네트워크, 그림으로 이해하자(2022ver.)
안나오는 동영상이 있어요..
ICMP 랑, 전송 계층 개요 동영상이 인코딩 중이라며 나오질 않습니다 확인 부탁드릴게요 ㅠㅠ