소개
널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다. 반갑습니다. ^^
강의
로드맵
전체 2수강평
- 외워서 끝내는 SSL과 최소한의 암호기술
- 외워서 끝내는 네트워크 핵심이론 - 기초
- 외워서 끝내는 네트워크 핵심이론 - 응용
- 외워서 끝내는 네트워크 핵심이론 - 기초
- 외워서 끝내는 네트워크 핵심이론 - 기초
게시글
질문&답변
대표적인 장애 유현 2
만일 소켓이 입/출력 버퍼를 사용하도록 설정했다면 맞는 말입니다. 송신과정에서도 버퍼링을 일단 합니다. 그리고 상대방이 잘 받았다는 ACK를 보내주기 전까지 전송이 완료된 것이 아니라 판단합니다. 문제는 '얼마나 오래' 입니다. ACK를 기다리는 시간이나 재전송 요구 가능성을 고려해 송신할 데이터를 버리지 않을 시간 등이 중요한 변수가 됩니다. 이 때문에 TCP는 내부적으로 여러 타이머들을 운영합니다. 이는 표준과 무관하지만 성능과 직결되므로 매우 중요합니다. 더 자세한 정보는 'TCP 혼잡제어'에 대해 알아보시기 바랍니다. 감사합니다. 😄
- 0
- 2
- 20
질문&답변
memcpy 내부 구현은 어떻게 아신건가요?
좋은 세상입니다. 인프런 AI 답변을 참고하시기 바랍니다.거기에 조금만 더 제 생각을 말씀드리면...리눅스 같은 오픈소스 시스템을 보면 C 라이브러리 코드를 보는 것은 어렵지 않습니다. 이를 통해 반복문임을 알 수 있습니다. 그러나 이에 관해 더 생각해볼 문제는 "CPU 구조가 달라질 경우 메모리 복사에 관한 코드가 어떻게 최적화될 수 있는 것인가?" 입니다. 우리가 작성하는 프로그램들이 하는 일 중 메모리 복사는 빈번한 일입니다. 이에 대한 최적화는 시스템 전반의 성능과 직결됩니다.CPU의 ESI, EDI 레지스터에 대해서 한 번 알아보시는 것을 권합니다. 😄
- 0
- 2
- 21
질문&답변
대표적인 TCP 장애 유현
TCP 버퍼에 쌓이는 것은 OS 수준에서 수신이 완료된 데이터 입니다. 그러므로 세그먼트 중복이나 유실을 확인하는 위치는 이 TCP 버퍼라 할 수는 없겠습니다. 다만 성능을 생각했을 때 굳이 다른 버퍼에서 조립할 이유는 없겠습니다. 이러한 디테일은 TCP 표준이 정의하는 것이 아니므로 구현하는 쪽에서 알아서 할 일입니다. 그러므로 맞다고도 틀렸다고도 할 수 ㅇ벗습니다.이 역시 반은 맞고 반은 틀립니다. 일반적인 경우라면 OS수준에서 받은 데이터들을 소켓 입력 버퍼로 복사할 것입니다. 그러나 Windows OS환경의 IOCP같은 구조에서는 불필요한 메모리 복사를 줄이도록 하기 위해 응용 프로그램의 데이터 수신 버퍼를 OS가 직접 활용합니다. 쉽게 말해 소켓 입력 버퍼가 없을 수도 있습니다. 즉, OS에서 바로 응용 프로그램으로 넘어갑니다.여기에 한 술 더 떠서 NIC에서 바로 복사하는 구조도 있습니다. 소위 Zero-copy 기술입니다. 내용이 너무 길어지므로 관심이 있다면 한 번 찾아보시기 바랍니다. TCP라는 규약을 코드로 구체화 하는 것에 관해서는 표준이라 할 수 있는 것이 없습니다. 기본 규칙만 맞으면 될 뿐입니다. 참고하시기 바랍니다. 😄
- 0
- 2
- 23
질문&답변
파일 시스템 관련 질문입니다.
FAT 혹은 적어도 FAT 역할을 해주는 요소가 모든 파일 시스템마다 있습니다. 다만 구체적인 형식은 차이가 있습니다. 인프런 AI 답변을 참고해주시기 바랍니다. 0번 트랙, 0번 섹터는 있다고 할 수 있지만 이것이 항상 MBR이 되지는 않습니다. 이 역시 인프런 AI 답변을 참고하시기 바랍니다.감사합니다. 😄
- 0
- 2
- 17
질문&답변
[필수연습문제] 합격, 불합격 여부 판단하기 질문있습니다.
우선 아주 좋은 질문이라는 점 말씀드립니다. 😄 C언어에서 문자열 상수는 읽기 전용 정적 메모리 공간에 저장된 char[] 입니다. 상수화 된 것이므로 const char[]로 봐야 하겠습니다. 그리고 문자열 값 자체는 .exe 파일을 빌드할 때 .exe 파일(PE format)에 담기며 실행 시 읽기 전용 정적 메모리 공간에 로드됩니다. const char[]이므로 0번 요소의 메모리 주소로 식별합니다. 이 때문에 %s 형식 문자로 출력한 것입니다. 참고하시기 바랍니다. 😄
- 0
- 2
- 24
질문&답변
metaspace 관련 문의드립니다.
생각하시는 것처럼 Metaspace는 Heap 영역은 아닙니다. 다만, 개념적으로 묶어서 설명하는 것이 바람직하다 판단했습니다. 슬라이드 제목에 '힙 영역'이라는 표현이 있어서 그렇게 보신 것 같습니다. 생각하시는 것처럼 메타스페이스는 네티브 메모리를 사용합니다. 이에 대해서는 25:30부터 설명하고 있습니다.그리고 알려주신 옵션은 -XX:MaxMetaspaceSize로 변경된 것이 맞습니다. 잘못된 내용입니다. 우선 자료를 수정해 바로 잡도록 하겠습니다. 제보 고맙습니다. 😄
- 0
- 2
- 37
질문&답변
토글메뉴(강사도 삽질) 10:30 질문 / pch.h 전역변수 선언 에러
좋은 세상입니다. 인프런 AI 답변을 참고하시면 되겠습니다. 😄
- 0
- 2
- 30
질문&답변
강의명 오타
제보 감사합니다. 바로 수정조치 하였습니다. 😄
- 0
- 2
- 26
질문&답변
순수 가상 클래스 선언과 일반 인트 변수의 선언과 다른가요?
C++에서 함수는 0이 될 수 없습니다. 무엇보다 인스턴스 선언 시 사용되는 '='은 할당 연산자로 볼 수 없습니다. 그러므로 문법적인 측면에서 이해하는 것이 좋겠습니다. 서양의 언어는 명사로 부정합니다. 즉, 'Noting이 있다'라고 합니다. 그런 관점에서 '= 0'은 초깃값 기술이 아니라 함수 정의가 없다는 것에 대한 명시적 표현으로 이해 할 수 있겠습니다. 그리고 int형은 형식(Type)은 맞지만 Class가 되지는 않습니다. Instance라는 표현은 개념적 어휘로 여러 목적으로 사용됩니다. 프로그래밍 언어에서는 Instance는 형식에 대한 실체 정도로 생각해볼 수 있습니다.즉 int a = 0;의 의미는int 형식에 대한 Instance인 a의 초깃값이 0 이라는 의미가 되겠습니다. 선언과 동시에 값이 정의되는 경우가 되겠습니다. 0에 대해 int 0이라는 의미 외에 포인터 관점에서 null로 구분하기도 합니다. 이는 때로 지나친 자유로 보고 문법적으로 통제해야 할 대상으로 봅니다. 해서 Java에서는 0과 null은 다른 것으로 취급합니다. 값이 같다해서 형식도 일치하는 것으로 볼 수는 없기 때문입니다. 거기에 개념적으로만 보면 void의 의미를 가질 수도 있습니다. 말이 길어졌네요. 개념 정리에 도움이 되기를 바랍니다. 참고하시기 바랍니다. 😄
- 0
- 2
- 22
질문&답변
SSL 인증서를 확인한 후 과정이 궁금합니다!
네, 이후 통신은 대칭키(다른 말로 세션 키)를 사용합니다. 서버가 데이터를 보내줄 때도 마찬가지 입니다. 참고하시기 바랍니다. 😄
- 0
- 2
- 28