묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨인프라공방 - 그럴듯한 서비스 만들기
네트워크 TIME_WAIT에 대한 질문이 있습니다!
안녕하세요 강의 정말 잘 듣고 있습니다! 18:10 에서 TCP 연결 해제를 위해 클라이언트의 마지막 ACK가 유실되면 클라이언트가 서버로부터 SYN패킷을 보내 재연결을 시도한다고 말씀해주셨습니다그런데 https://birdie-hyun.tistory.com/3 이 블로그에서는 ACK가 유실되면 서버가 클라이언트로부터 일정 횟수만큼 FIN 요청을 보낼 것이고, 클라이언트는 시간이 지나고 연결이 끊어졌기 때문에 FIN에 대한 ACK를 보낼 수 없어 네트워크 트래픽으로 이어진다고 나와있습니다 어떤 내용이 사실인지 궁금해서 질문 남겨봅니다감사합니다..!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RegisterRecv()가 멀티스레드 환경에서 안전하다는 게 이해가 가지 않습니다.
안녕하세요 선생님. 선생님 강의 덕분에 요즘 서버 개발이 너무 재밌습니다. 감사합니다. 다름이 아니라 이해가 안가는 부분이 있어서 질문드립니다.1:20 초에 RegisterRecv()는 멀티스레드 환경에서 안전하다고 하셨는데 이 부분이 이해가 가지 않습니다.AcceptEx()를 걸고 나서 만약 클라이언트가 5개 붙으면 ProcessAccept()는 5번 호출될 것이고, 호출될 때마다 ProcessConnect()를 내부에서 호출하여 WSARecv()는 연결된 클라이언트마다 1번씩 호출하게 되는 것으로 코드를 이해했습니다. 그렇다면 클라이언트가 5명 붙는다면 WSARecv()는 5번 호출될텐데, 각 클라이언트가 동시에 send한다면 서버는 GetQueuedCompletionStatus()를 통과하여 동시다발적으로 ProcessRecv()를 호출할텐데 이 때 멀티스레드 critical section 문제가 발생할 것 같은데 제가 잘못 이해한 부분이 있을까요?혹시 client 별로 한 개 씩 RegisterRecv()를 등록해 놨으므로 각 client들은 각자 등록한 WSARecv()에만 연결되는 것이라서 멀티스레드 문제가 안 생긴다는 뜻일까요?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
와이어샤크
http 프로토콜의 패킷같은 경우http,tcp ipv4 , eth , rip 등 다양한 프로토콜을 사용하고 있을텐데,이 특정 패킷은 http,tcp,ipv4로 필터링 하면 다 검색이 되는건가요 ?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
OnRep_Owner() 함수를 통한 오너값 동기화
안녕하세요 선생님 질문사항이 있어 글 남깁니다! 3강 커넥션과 오너십 강의 영상 41:25 쯤 서버와 클라이언트의 오너값이 동기화가 된다고 하셨는데 그럼 클라이언트에 존재하는 Player와 서버에 존재하는 Player 둘 다 같은 PlayerController가 빙의된 상태라는 걸까요?아니면 클라이언트가 접속 요청할 때 Login 과정에서 복제된 PlayerController를 빙의하는 걸까요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
VPN Client 문의드립니다.
선생님, 강의 잘 듣고 있습니다.VPN G to E 의 경우, VPN Client 프로그램이 필수인 것 같은데요. VPN 연결하였을 때, Client 가 향하는 SG 는 VPN Client 프로그램에 설정이 되어 있는 것일까요?중국에서 접속해도 부산에 있는 SG 로 연결되는 것으로 예시를 들어주셨는데 서울에 있는 SG 로 연결될 수도 있다면 이것은 client 에 설정을 강제 설정을 하는 것인지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
SocketException: Connection reset 에러가 뜨지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java.net.SocketException: Connection reset네트워크 예외4- 강제종료 강의 중 위 에러가 뜨질 않습니다. 혹시나 서버에서 close() 호출 후 FIN packet을 보내는 것이 오래걸리나 싶어 Thread.sleep()도 3초에서 5초 가량으로 늘려보기도 했는데, "read = -1" 이라고 콘솔에 뜹니다. 반면, "java.net.SocketException: Broken pipe" 에러는 잘 뜹니다. 무슨 문제인지 잘 모르겠습니다.
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
HTTP 메시지
HTTP 메시지는 패킷의 어느부분에 들어가는건가요 ?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
네임 서버
ip를 자동으로 할당받는 경우isp가 ip를 할당해주고 dns도 할당해주나요?그럼 kt를 이용하는 경우 도메인 네임 resolve 하는경우 kt의 dns를 이용하고있는건가요 ? 그리고 kt의 dns가 모든 도메인네임에 해당하는 ip주소를 가지고 있을순 없으니 , 루트 네임서버, TLD 네임서버 , 최종 네임 서버는 따로있는건가요 ?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
재귀적 락 허용 질문있습니다.
재귀적 락 허용을 하고 WriteLock을 잡은상태에서 ReadLock을 잡을수 있으면 한 쓰레드가 WriteLock을 수정을 하고있는데 다른 쓰레드가 ReadLock을 잡아서 읽어오면 최신상태가 아닌 값을 읽어오지 않나요 ?? 만약 그렇다면 왜 그렇게 하나요 ??
-
미해결누구나 시작할 수 있는 네트워크 Step 3 (네트워크 만들기)
Error while creating link: Could not find NPF id for interface VMnet0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 라우터에 vm을 연결하려고 하니 위와같은 메시지가 뜨네요
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
L3Switch & Router
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 잘 듣고있습니다.MAC주소로 Switching하면 L2Switch, IP주소로 Swithching하면 L3Switch(==Router)라고 이해를 하고있었는데요조금 찾아보니 Router == L3Switch가 아니라 별도로 L3Switch라는 것이 존재한다는걸 알게되었습니다.L3switch의 경우 InterVLAN 및 LAN상에서의 Switching에 특화되어있다고하고, Router의 경우 WAN환경 및 고급네트워크 기능 (NAT, VPN, ...) 등에 특화되어있다고 하는 글을 보았는데요또 어떠한 글은 이제 그 둘의 유의미한 차이는 없다라고도 하는걸 보았습니다.어떤 글이 맞을까요?? (널널한 개발자님이 따로 설명을 해주시지 않는 것으로보아 후자가 맞아보이긴합니다만...)가격대, 그리고 주요 목적에 따라 어떤 장비를 사용해야 할지가 결정되는걸까요??감사합니다!!
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
RESTful API에 대해 질문 드립니다
CRUD의 각 함수를 URI로 기술하고 리퀘스트를 통해 함수를 호출한다고 설명해 주셨는데,예를 들어 사용자가 Read 함수의 URI를 리퀘스트에 담아 서버에 보내면 서버는 Read 함수를 호출해주게 되는 건가요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
IOException 예외 처리 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요,IOException 예외 처리 관련해서 질문드립니다. 영상과 교안을 보다보니 어떤 메소드에서는 IOException을 던지고, 어떤 메소드에서는 try-catch문을 이용해서 처리하는데, 기준이 무엇인지 궁금합니다. 예외는 항상 처리해야하는 것이 아닌가? 라고 생각하고 있었는데 코드를 보니 또 그런건 아닌 것 같아서요. 감사합니다!
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
안녕하세요 aws 사용 안해도 되나요 ?
virtual box 로 리눅스 띄워서 그걸로 강의 진행 따라가도 전혀 문제가 없나요 ?aws 만의 특별한 무언가를 하시는 것이 있나요 ?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
채팅 클라이언트 문의
안녕하세요. 채팅 클라이언트 실습전에 먼저 구현을 해보았는데요.클라이언트 메인에서 스레드를 스타트 하면 그 즉시 소켓이 닫히면서 프로그램이 종료되는 오류를 겪었습니다.이는 클라이언트 메인에서 sender 스레드를 join하면서 해결하긴 했는데요.영한님의 예제에서는 start() 만 하여도 프로그램이 종료되지 않는데, 왜 저의 코드는 종료될까.... try with resources 가 문제인가 싶다가도 그건 아닐거 같은 모호한 상황에 놓여서....제가 볼 땐 도무지 보이지 않아서, 코드 리뷰와 원인 파악을 부탁드리려고 질문을 남깁니다. MessageHandler.javapackage com.hoonjin.study.java.ionetwork.network.chat.client; import lombok.RequiredArgsConstructor; import java.io.DataInputStream; import java.io.IOException; import java.net.Socket; import static com.hoonjin.study.java.util.MyLogger.log; @RequiredArgsConstructor public class MessageHandler implements Runnable { private final Socket socket; @Override public void run() { try (DataInputStream dis = new DataInputStream(socket.getInputStream())) { while (true) { String msg = dis.readUTF(); log(msg); } } catch (IOException e) { e.printStackTrace(); } } } MessageSender.javapackage com.hoonjin.study.java.ionetwork.network.chat.client; import com.hoonjin.study.java.ionetwork.network.chat.Command; import lombok.RequiredArgsConstructor; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.Arrays; import java.util.Scanner; import static com.hoonjin.study.java.util.MyLogger.log; @RequiredArgsConstructor public class MessageSender implements Runnable { private static final String DELIMITER = "\\|"; private final Socket socket; private boolean joined = false; @Override public void run() { Scanner scanner = new Scanner(System.in); try (DataOutputStream dos = new DataOutputStream(socket.getOutputStream())) { while (true) { log("input message with cmd: "); String msg = scanner.nextLine(); if (msg.isEmpty()) { continue; } String[] split = msg.split(DELIMITER); String cmd = split[0]; if (Arrays.stream(Command.values()).noneMatch(c -> c.value().equals(cmd))) { log("wrong command"); continue; } if (cmd.equals(Command.EXIT.value())) { dos.writeUTF(msg); joined = false; break; } else if (cmd.equals(Command.JOIN.value())) { joined = true; } if (joined) { dos.writeUTF(msg); } } } catch (IOException e) { e.printStackTrace(); } } } ChatClient.javapackage com.hoonjin.study.java.ionetwork.network.chat.client; import java.io.IOException; import java.net.Socket; public class ChatClient { private static final String SERVER = "localhost"; private static final int PORT = 23456; public static void main(String[] args) throws IOException, InterruptedException { try (Socket socket = new Socket(SERVER, PORT)) { Thread messageHandler = new Thread(new MessageHandler(socket)); Thread messageSender = new Thread(new MessageSender(socket)); messageHandler.start(); messageSender.start(); messageSender.join(); // 이 부분이 없으면 시작하자마자 즉시 종료됨 } catch (IOException e) { e.printStackTrace(); } } } Command.javapackage com.hoonjin.study.java.ionetwork.network.chat; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public enum Command { JOIN("/join"), MESSAGE("/message"), CHANGE("/change"), USERS("/users"), EXIT("/exit") ; private final String value; public String value() { return value; } } 이상입니다.확인해주시면 감사하겠습니다.새해복 많이 받으세요!
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
강의 연장부탁드립니다
안녕하세요~~AWS Certified Solutions Architect - Associate직장 업무로 강의를 듣지 못하였습니다.ㅠㅜ 지금은 국내 클라우드 회사를 다니고 있어서, 외국계로 이직할때 다시 들으려고 하는데 좀 장기간으로 연장 가능할까요? 연장 부탁 드립니다감사합니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
스위치에 대하여
강의 중 스위치에 관해 궁금해서 글을 남깁니다.여기서 나오는 스위치가 L1,L2,L3 ~ 이 스위치를 말씀하신 걸까요 ? 그리고 스위치를 네트워크 그 자체를 이루는 호스트라고 이 표현이 정확하게 이해가 가지않습니다
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
IP 헤더의 플래그 필드
플래그 필드중 MF비트는 더 있는지 없는지를 가리킨다고 했고,단편화된 패킷은 순서대로만 오지는 않는다고 했는데,패킷1,2,3 이 같은 데이터라면 패킷3의 MF비트에 0 이 있을텐데 패킷 1,3,2 순서로 왔다면 수신기기는 패킷3이 마지막 패킷인줄알고 패킷3까지만 받고 패킷2는 받지않을까요 ?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
스타크래프트 LAN
스타크래프트 멀티플레이에서 연결 방법을 선택하는 란에 배틀넷, LAN(UDP) LAN(IPX) , 등등 이렇게 있더라고요 피시방에서 친구들끼리 LAN으로 접속하면 스위치나 허브에 꽂힌 피시방 컴퓨터들이 LAN케이블을 통해 스타크래프트 내의 정보를 주고받는건가요 ?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
강의 연장 부탁 드립니다.
안녕하세요~~AWS Certified Solutions Architect - Associate직장 업무로 강의를 듣지 못하였습니다.연장 부탁 드리겠습니다.