묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
TCP 의도적 장애 테스트 질문
안녕하세요 선생님.질문하기 전 우선 좋은 강의 촬영해주셔서 너무 감사드립니다. 공부에 많은 도움이 되고 있습니다.저는 의도적으로 장애 상항을 만들고 Wireshark로 확인해보며 공부 중인데 이해가 가지 않는 상황이 존재하여 사진과 함께 여쭤봅니다. 우선 간략하게 테스트 환경을 공유드리겠습니다.루프백 통신,Server Port: 7777,Client Port: 65066,Netsh interface tcp set global autotuninglevel=disabled 으로 WindowSize Auto Tuning 비활성화Client는 recv 함수 호출 전 브레이크 포인트 걸고 Server가 132,000 데이터를 send 하는 상황입니다.3-way handshake 상황에서 클라이언트가 Win = 65495로 공유받았고, ①에서 서버는 Len = 65495 만큼 데이터를 송신하고 있습니다. 클라이언트는 ACK로 Win =65495를 보내고 있는데, 클라이언트가 Recv를 하고 있지 않기 때문에 Win = 0으로 와야될 것 같은데… 이 부분이 어떤 것 때문에 이렇게 오는 지 이해가 어려워 여쭤봅니다. 혹시나 os에서 내부 TCP 버퍼 크기를 자동으로 조정했는지 확인해보기 위하여 getsockopt으로 RCV_BUF를 확인해본 결과 65536으로 따로 변경하거나 그런 것은 확인하지 못했습니다.
-
해결됨면접 전에 알고 가면 좋을 것들 - 신입 Java 백엔드 개발자편
put과 delete의 보안이슈
put과 delete두 메소드 자체에는 보안적으로 취약한 점은 없고수정과 삭제라는 기능적인 측면에서 보안적으로 위험할 수 있다고 이해하고 있는데 맞을까요?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
IP 헤더의 플래그 필드
플래그 필드중 MF비트는 더 있는지 없는지를 가리킨다고 했고,단편화된 패킷은 순서대로만 오지는 않는다고 했는데,패킷1,2,3 이 같은 데이터라면 패킷3의 MF비트에 0 이 있을텐데 패킷 1,3,2 순서로 왔다면 수신기기는 패킷3이 마지막 패킷인줄알고 패킷3까지만 받고 패킷2는 받지않을까요 ?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
스타크래프트 LAN
스타크래프트 멀티플레이에서 연결 방법을 선택하는 란에 배틀넷, LAN(UDP) LAN(IPX) , 등등 이렇게 있더라고요 피시방에서 친구들끼리 LAN으로 접속하면 스위치나 허브에 꽂힌 피시방 컴퓨터들이 LAN케이블을 통해 스타크래프트 내의 정보를 주고받는건가요 ?
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
shutdown()을 호출하는 이유
클라이언트에서 showdown()을 호출할때연결 종료 4 way handshake가 발생하는것을와이어샤크를 통해서 확인하였습니다. shutdown()을 호출하지 않고 closesocket()으로도연결 종료 4 way handshake가 발생되는데 왜 closesocket() 전에 showdown()을 호출하는 것인가요?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
캡슐화 역캡슐화하는 시간
네트워크장비(중간노드)가 메시지를 받으면 역캡슐화,캡슐화 과정을 하고 다른 노드로 보내는가요 ?아니면 중간노드는 메시지를 그냥 다른 노드로 넘기나요 ?호스트(끝노드)에서만 그 과정을 거치나요 ?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
그래프
네트워크의 구조는 그래프의 형태를 띄고있다 라고 하셨는데,비유인가요 ? 실제로 기기간(노드)간의 메시지를 주고받을때 그래프 자료구조를 사용하는건가요 ?실제로 제 기기가 네트워크안에 있다면(연결 되었다) 라고 한다면 어딘가의 장비에 코드로써 제 기기(노드 ) 가 기존의 그래프에 추가된건가요 ?
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
프로토콜이 적용된 파일 송신 서버에서 send, recv 질문 있습니다!
안녕하세요 널널한 개발자님! 언제나 강의 잘보고 있습니다.예제 소스 코드 보고 있는데 의문이 생겨서 이렇게 질문드립니다.이전 강의에서 recv와 send는 1:1로 매칭되지 않는다라고 하셨었는데 프로토콜이 적용된 파일 송신 서버 제작 강의 예제를 보면 MYCMD 나 GETFILE 구조체를 recv 함수로 한번씩 읽어오시는것같아서요.혹시 recv로 한번에 읽어오는 데이터의 크기가 GETFILE, MYCMD의 크기보다 작아 한 번 더 읽어야 하는 경우가 발생할 수 있을까요? 해당 코드 구문입니다!
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
"파일 송신 서버 제작" 강의 질문입니다!
안녕하세요!파일 송신 서버 제작 강의 부분중에 궁금한 것이 생겨 질문드립니다. "파일 데이터를 전송할 때 큰 데이터를 한 번에 올리는 것이 더 성능적으로 좋아질 수 있다." 라고 하셨는데, 그 이유가 무엇인지 구체적으로 알고 싶습니다. 제가 생각한 것은시스템 콜 호출 횟수 감소(유저->커널 레벨의 모드 스위치 감소)디스크 읽기 최적화? (한 번에 순차적으로 접근할 수 있는게 많아지는...?)(I/O를 여러 번 하면, 할 때마다 랜덤 엑세스를 해야하니까, 디스크 seek 타임이 많아지는 이유가 맞을까요?) CPU가 접근하는 커널 페이지 버퍼의 캐시 히트율 증가정도인데요. 혹시 다른 이유가 더 있는지 궁금합니다. 감사합니다.
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
[Ethernet 채팅 프로그램 개발] 이런것도 가능할까요?
[강의:Ethernet 채팅 프로그램 개발]안녕하세요. 선생님! 오랜만에 질문드리네요 ㅎㅎ강의 수강중 이렇게하면 해킹할수 있겠다? 라는 생각이들어 질문남깁니다![ 상황 ]특정 게임서버가 있습니다.게임서버에는 정의한 패킷이 1개가 있고 계정 ID를 받으면 관련된 DB 데이터를 변경하는 로직이 작성되어있습니다.여기서1) 게임서버에서 수신된 패킷이 해당 유저가 보낸게 맞는지? 패킷 암호화 처리 없음2) 게임서버에서 수신된 패킷의 계정 ID의 Session 데이터(연결정보)가 있는지? 체크하지 않음라고 했을때Ethernet/IP(게임서버 IP)/TCP(게임서버 Port)/Segment(정의한 패킷)를 수동으로 만들어서 보내면해킹처럼 게임서버에 내가아닌 다른 계정의 ID를 보내 처리하게 할수있겠다. 라고 생각이 들었는데요.Q. 네트워크딴에서 체크섬 말고는 따로 보안처리가 없는것같아 이런 시나리오가 가능한지 궁금합니다. 추가내용) 강의를 이어서 더 보니, 게임서버가 TCP통신을 하고있었다면 Seq까지 맞춰야하네요.(Seq번호가 맞지 않으면 게임서버의 운영체제 단에서 패킷 버려짐로 이해) 이러면 해킹하는게 힘들것같네요 ㅎㅎ
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
ntohs() 와 htons() 함수의 차이
void packet_handler(u_char* param, const struct pcap_pkthdr* header, const u_char* pkt_data) // pcap_loop()가 돌면서 패킷을 감지할때 그 때 읽어들인 감청 데이터는 pkt_data 에 들어간다. { EtherHeader* pEther = (EtherHeader*)pkt_data; // 감청 데이터를 EtherHeader 로 형변환 printf( "SRC: %02X-%02X-%02X-%02X-%02X-%02X -> " "DST: %02X-%02X-%02X-%02X-%02X-%02X, type:%04X\n", pEther->srcMac[0], pEther->srcMac[1], pEther->srcMac[2], pEther->srcMac[3], pEther->srcMac[4], pEther->srcMac[5], pEther->dstMac[0], pEther->dstMac[1], pEther->dstMac[2], pEther->dstMac[3], pEther->dstMac[4], pEther->dstMac[5], //ntohs(pEther->type) pEther->type ); } ntohs(pEther->type) 과 htons(pEther->type)이 기능은 똑같다고 하는데, ntohs() 는 네트워크 오더 -> 호스트 오더 이고, htons() 는 호스트 오더->네트워크 오더 아닌가요?제가 Intel 프로세스 탑재한 PC에서 예제 실행중인데, 위 코드와 같이 실행하면 Ipv4 인 type 값이 0008로 나옵니다. 그래서 htons() 로 감싸서 출력하면 0800 으로 잘되는데 ntohs() 로 감쌌을떄는 왜 0800 이 나오는지 모르겠습니다.ntohs() 면 호스트 오더를 사용하는데 제 pc에서는 그대로 호스트 오더 방식으로 되야 하는거 아닌가요?
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
대표적인 장애 유현 2
안녕하세요 개발자님 수신측 에서 송신측으로 순서 바뀜 및 패킷 유실에 대한 응답을송신측으로 전달 하면, 송신측에서 재전송을 시도 하는데,송신측에서는 수신측으로 데이터를 전송 할때, 재전송 요청에대해 미리 대비해서 수신측으로 전송 되기전의 패킷을TCP Buffer 에 쌓아 놓고, 전송을 하며,정상적인 응답이 와야 TCP Buffer 에서 비우는 작업을 하는 것인가여?TCP Buffer 에 전송전에 데이터를 쌓아 놓는 것은 맞는 걸까여?수신측에 재전송 요청에 대한 데이터 조회는 TCP Buffer 에서 찾는것은 맞는 걸까여?
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
대표적인 TCP 장애 유현
안녕하세요 개발자님 강의 너무 잘 들고 있습니다. 자세한 답변 부탁드립니다.와이어 샤크를 톨해 대표적인 TCP 장애 유형 을 다 캡처하는 작업 까지 진행 했습니다. 여기서 의문인 것은, Packet Loss, TCP Out of order, Retransmission , Dup ACK 를 통해세그먼트된 데이터의 유실 이나 순서를 OS가 최대한 보장 하기 위한 노력이다라고 생각하고, (의문점) 첫번째, 세그먼트 조각 모음 하는 장소그 다음 전송된 세그먼트들을 조각 모음 하는 장소가 TCP Buffer(Window Size) 이며, 여기서 유실된 세그먼트 및 순서 및 중복을 검증 하고, 그 응답(대표적인 TCP 장애유형)을 송신측으로 전송 한다. ( O , X ) 2. (의문점) 두번째, Socket 으로 전송 시점TCP Buffe r를 통해 완성된 데이터(세그먼트의 조각이 다도착해서 순서를 마춘 상태, 중복은 버리고) 가 잘 만들어 졌다고 가정한 상태에서, 완성된 데이터를 Socket 에 Copy 하는지 ? , 아니면 TCP buffer 에 세그먼트가 도착 하자마자(세그먼트 조각 모음 하지 않고), 즉시 Socket에 Copy 가 이루어 지는지가 궁금 합니다. !!!!!세그먼트 조각 모음을 하지 않으면, 대표적인 TCP 장애 유형을 검증 하는 것이 힘들거 같고, 방식이 궁금 하여 문의 드립니다.
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
VMware Ethernet1이 없는 경우
Vmware 윈도우11이 ms사에서 제공하지 않아서따로 윈도우11 이미지를 받아서 VMware player에서 받아서 완전 쌩 윈도우11을 다운받앗는데cmd 창에서 ipconfig를 쳐보니까 Ehternet0 밖에 안뜹니다.
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
socker buffer 에 관하여 문의 드립니다.
안녕하세요 개발자님 오래전 부터 유트브로 보다가, 인프런 할인 할때 한번에 여러개(많이) 수강 하여 듣고 있습니다. TCP 통신 관련 프로세스를 개발 하고 싶어서 문의 드립니다.유트브 이해하면 인생이 바뀌는 TCP 송/수신 원리설명에서 2개의 buffer 가 소개 되었는데요, TCP 와 socker buffer에 대해 문의 드립니다.1.TCP 에 Window Size(buffer) 를 리눅스 에서 실시간으로 조회 할수 있나요? (전은 못찾았습니다)2. socket buffer 을 리눅스 환경에서 실시간으로 조회 가능 한가요? (이것도 찾지 못했습니다.) 3.process 에서 socket에 buffer을 퍼 올려라 하는 말씀과 window size 가 mss 보다 작아지면서 생기는 wait 문제를 해결 하려면 process 부터 확인 하라고 하셧는데, 이 문제는 process 에서 code로 socker 연결 이후 process 내부에 변수로 buffer(사용자 정의)을 선언 하고, socker.recv() 함수를 통해 변수로 선안한 buffer 에 다 적재 하면 process 단에서 TCP 에 쌓이는 문제를 해결 할 수 있다고 생각 해도 되는 걸까요?
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
Windows 11 가상머신 다운로드 이슈 3
https://www.inflearn.com/community/questions/1431457/windows-11-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EC%9D%B4%EC%8A%88-2위 링크를 참고해서 VMware 가상머신을 다운받고 zip 폴더를 여는데 손상된 파일이라고 뜹니다.확인을 누르니까 압축해제는 동작하길래 압축해제를 눌러봤는데 압축해제를 하는 도중에 아래와 같이 뜹니다.강사님과 동일한 환경에서 학습하고 싶은데 어떻게 해야하나요 ??
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
이벤트 기반 파일 입출력과 callback 기반 파일 입출력이 네트워크에도 쓰이는 기법인가요?
안녕하세요.이벤트 기반 파일 입출력과 callback 기반 파일 입출력에 대해 궁금한 점이 있어 질문 드립니다.IOCP를 설명하시기 전 단계에서 이벤트 기반 파일 입출력과 callback 기반 파일 입출력에 대해 설명을 해주셨는데, 이 두 기법은 네트워크에서도 쓰이는 기법인지 아니면 IOCP를 설명하기 위한 베이스 기법으로서 설명을 해주신 건지 궁금합니다
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
개발환경 질문이 있습니다.
장애발생 관련해서 PC 2대가 있는게 좋다고 하셨는데 혹시 가상머신으로는 괜찮을까요
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
TCP/IP vs UDP , 멀티 스레드에서의 병목 현상에 대한 질문이 있습니다!
안녕하세요! 항상 좋은 강의 감사합니다.강의를 듣다가 궁금한 점이 있어서 질문을 드립니다!Q1.TCP/IP 의 경우 서버 입장에서 사용자가 연결되어 있다는 착각에 빠지지 말라고 알려주셨습니다. 하트비트를 어차피 보내줄 것이라면 UDP 로 설계를 해도 상관없는 건가요?연결을 신뢰할 수 없음에도 TCP/IP를 사용하는 이유가 궁금합니다.Q2.멀티 스레드 환경에서 GQCS를 할 경우, 스레드들이 공유하는 큐에 락을 걸어서 적용해봤습니다. 하지만 이 경우 큐에 접근할 때 병목 현상이 우려됩니다. 해당 세션이 특정 스레드에서만 처리되도록 하여 락을 없애는 것과 락을 걸고 여러 스레드에서 접근할 수 있도록 하는 것 중 어느 것을 선호하시나요? Q3. 어쩌면 Q2와 거의 같은 질문일 수도 있겠습니다. 멀티-스레드 환경에서 락 에 대한 대안이 있나요?
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
Windows 11 가상머신 다운로드 이슈 2
Windows 11 가상머신 다운로드가 안되는 부분에 대해서,커뮤니티에서 댓글 주신 부분 확인해보았으나, 항목이 삭제 또는 완료 되었다고 나옵니다..ㅠㅠhttps://www.inflearn.com/questions/1412974MS사 내부 문제라 제가 대응하는 것이 불가능합니다. 해서 이 강의를 촬영할 당시 사용했던 VM을 OneDrive에 올려두었습니다. 24년 4월 VM입니다. 따라서 이미 라이선스는 만료된 상황입니다. 하지만 일단 사용은 가능할 것입니다. 감사합니다. 😄 WinDev2404Eval.VMWare.zip