묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결이해하면 인생이 바뀌는 네트워크 프로그래밍
안녕하세요 선생님~~ 질문이 있습니다~~
다름 아니라 제가 인터넷을 찾아보다가 확장자를 .c 즉 c언어로 할 경우외부 include 디렉터리와 외부 라이브러리 디렉터리를저희가 수업에서 진행을 했던 그대로설정을 하면LoadNpcapDlls() 해당 함수를 사용을 하지 않아도프로그램이 문제 없이 작동을 합니다 혹시 위에 외부 include와 라이브러리 디렉터리를올바르게 등록을 하면LoadNpcapDlls()함수 없이 코드를 작성해도 될까요??
-
미해결C# TCP/IP 소켓 프로그래밍
프로젝트가 더 이상 지원되지 않는 .NET 6.0을 대상으로 할 때
안녕하세요-섹션5C# TCP/IP 소켓 프로그래밍 로그인 부분입니다.자료 다운 후 실행 시 아래와 같은 에러가 발생합니다이 때. 프로젝트 우측 클릭 -> 7 & 8 &9버전등으로 빌드 -> 재실행하였으나 동일한데요. 어떤 방향으로 해결하면 좋을까요?
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
프로토콜 헤더 암기
안녕하세요 선생님~~강의 너무 잘 보고있습니다ㅎㅎ근데 프로토콜 헤더는 꼭 전부 외워서 작업을 해야하나요?? 그리고 선생님은 그걸 안보고 프로그래밍을 하실 수 있나요? 조금 개인적인 질문이라 실례가 될수 있는데요알려주시면 감사드리겠습니다ㅎㅎ 감사합니다.
-
미해결C# TCP/IP 소켓 프로그래밍
Tap강의에서 6분9초에 ReceiveAsync에 매개변수 e가 필요하다는 에러
안녕하세요Tap강의에서 6분 9초에 31번째 줄 내용이 궁금합니다. 저는 ReceiveAsync메서드에는 2개 인수를 쓰는 오버로드가 없다고 떠서, 어떻게 수정하면되는지 궁금합니다. -에러나는 내용ReceiveAsync메서드에는 2개 인수를 쓰는 오버로드가 없다 -제가 적은 코드 int n1 = await clientSocket.ReceiveAsync(buffer,SocketFlags.None); --전체 코드 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;using System.Net.Sockets;using System.Threading;namespace Server{ class Program { static async Task Main(string[] args) { Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.20.97"), 20000); serverSocket.Bind(endPoint); serverSocket.Listen(1000); //Tap( 작업기반 비동기 패턴) 작업짜기 while(true) { //서버 소켓에 어웨이트 소켓을 써라, 이 함수는 반환값이 <task>socket임 Socket clientSocket = await serverSocket.AcceptAsync(); // 제네릭한 값을 갖는 Task를 await하게하면 제네릭을 반환값으로 가질 수 있음 //스레드 풀에 일감을 던짐 , 즉 Readasync하라는거임 ThreadPool.QueueUserWorkItem(ReadAsync, clientSocket); } } /// <summary> /// 스레드풀에 들어갈 함수 , 클라이언트 소켓이 센더로 들어감 /// </summary> /// <param name="sender"></param> private static async void ReadAsync(object sender) { //클라이언트 소켓이 센더로 들어감 Socket clientSocket = (Socket)sender; //리시브 함수 루프 돌리기 while(true) { byte[] buffer = new byte[256]; int n1 = await clientSocket.ReceiveAsync(buffer,SocketFlags.None); //만약 0바이트면 종료된거니까 자원 해제하고 return으로 함수 종료 if (n1<1) { Console.WriteLine("Client disconnect"); clientSocket.Dispose(); return; } Console.WriteLine(Encoding.UTF8.GetString(buffer)); } } }}
-
미해결C# TCP/IP 소켓 프로그래밍
EAP강의에서 어떻게 여러개 클라이언트를 띄우는지 궁금합니다
제목과 내용이 같습니다.코드를 따라하며 진행중인데, 시연해주실때마다 클라이언트를 여러개 키는 모습을 보여주셨는데, 어떻게 하셨는지 궁금합니다.
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
ipv6 패킷관찰
ipv6-fragmentation.pcapng 파일에서1,2 번 패킷들은 ip단편화가 일어나지않앗지만 2개의 패킷으로 전송된 이유가 뭔가요 ?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
와이어샤크
http 프로토콜의 패킷같은 경우http,tcp ipv4 , eth , rip 등 다양한 프로토콜을 사용하고 있을텐데,이 특정 패킷은 http,tcp,ipv4로 필터링 하면 다 검색이 되는건가요 ?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
HTTP 메시지
HTTP 메시지는 패킷의 어느부분에 들어가는건가요 ?
-
미해결개발자를 위한 컴퓨터공학 2: 혼자 공부하는 네트워크
네임 서버
ip를 자동으로 할당받는 경우isp가 ip를 할당해주고 dns도 할당해주나요?그럼 kt를 이용하는 경우 도메인 네임 resolve 하는경우 kt의 dns를 이용하고있는건가요 ? 그리고 kt의 dns가 모든 도메인네임에 해당하는 ip주소를 가지고 있을순 없으니 , 루트 네임서버, TLD 네임서버 , 최종 네임 서버는 따로있는건가요 ?
-
해결됨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에서는 그대로 호스트 오더 방식으로 되야 하는거 아닌가요?
주간 인기글
순위 정보를
불러오고 있어요