소켓이 파일이라고 하시는 게 리눅스 한정 개념일까요? 윈도우즈나 맥OS에서도 파일일까요? 이 생각에 착안한 이유는, 리눅스는 자원의 단위가 파일이고, 윈도우즈는 자원의 단위가 핸들이라고 알고 있기 때문입니다. (부르기 나름) 파일에 다가 대고 fopen하는 것, console 에다가 fopen 하는 것, 네트워크 자원에다가 fopen 할 수 있다는 말씀이 좀 이렇게 생각하게 되었습니다. 말씀하신 파일이라는 게 꼭 2차 저장장치에 저장되는 파일이 아니라 리눅스에서 부르는 자원의 단위의 파일이라는 의미로 와 닿았습니다. 그저 특정 개체에 대해 읽고 쓰는 방식으로 소통을 하는 것이지, 그 개체가 2차 저장장치의 파일은 아니라고 생각이 들었습니다. 메모리에 올라간 개체도 파일이라고 생각이 들었기 때문입니다. 파일이라고 한다면 특정 디렉토리에 존재하는 주소로 표현이 가능해야하는데, socket이 붙는 것만으로 디렉토리가 존재하는 파일이 생성되는 건가요?
이 영상은 모두 윈도우 소켓 프로래밍에 관한 것입니다. 그리고 소켓이 파일이라고 설명한 것은 모든 범용 운영체제에 동일하게 적용됩니다. 그리고 윈도우에서 핸들은 void* 입니다. 그 포인터가 가리키는 대상을 제어하기 위한 수단이라는 의미를 담아 핸들이라 부르는 것에 불과합니다. 그리고 파일은 장치파일도 있고 우리가 생각하는 일반 데이터 파일도 있습니다. 그 둘은 반드시 구분해야 합니다. 다만 사용에 있어서 다르지 않다는 것을 아는 것이 중요하겠습니다. 그리고 소켓은 디스크에 존재하는 파일로 저장되지는 않습니다. 참고하시기 바랍니다.
Handle은 대상 오브젝트를 추상화한 개념에 불과합니다. File도 File Handle을 통해 추상화된 객체로 접근할 수 있으니까요. OS에서 디바이스들을 추상화 시켜주지 않는 다면, 우리가 개발할때 타겟 시스템 장치의 특성에 따른 부분까지 고려해 가며 해야 할겁니다. 우리가 통신을 하기 위해서는 NIC의 종류에 상관없이 동일한 코드로 추상화된 객체에 접근하기만 하면 되도록 API 가 제공됩니다. (감사한 일이죠 ^^) OSI 7 Layer 모델의 아래 3단계는 일반 소켓 프로그래밍을 할때, 고려하지 않아도 되는
너무 좋은 퀄리티의 강의 감사합니다. 컴공 학부 마지막 학기에 취업 준비 중 부족함을 느껴 공부 중에 찾아왔는데 추상화된 기술에 대한 본질을 이해하려는 관점이 중요함을 느끼고 갑니다.
좋게 봐주셔서 고맙습니다. 졸업을 앞두고 계시는 군요. 생각이 많아지는 시점이 아닌가 싶습니다. 잘 될 겁니다. :)
감사합니다 - 깔끔한 개념 설명에 깨달음을 얻고 갑니다.
좋은 평가 감사합니다. 무려...'깨달음'까지...과찬이십니다. ^^;;;
오오 기다리고 있었습니닷
보시고 피드백 부탁드려봅니다. 감사합니다. ^^
왜 경력이 쌓이고 이런게 재밋어질까요 ㅋㅋㅋ
좋게 봐주셔서 그런 것 같습니다. 감사합니다. :)
설명이ㅏ 너무 쉽고 이해 잘 되게 ㅛㅓㅎ녕해 주시네요 감사합니다
좋게 봐주셔서 고맙습니다. :)
영상 잘봤습니다 선생님. 혹시 웹소켓의 속도를 초단위 보다 더 빠르게 계선시키고 싶은데, 어떤 방식으로 접근해야 될까요? 아니면 서버랑 통신하는 더 빠른 방식이 있을까요?
음...질문에 오류가 있는 것 같습니다. 웹 소켓 속도(?)라는 것이 불분명하고 초단위까지 느릴 이유가 없기 때문입니다. TCP 세션이 성립하는 속도는 보통 RTT(Round Trip Time)값보다 약간 큰 정도 입니다. 참고하시기 바랍니다.
찐이야😮
소켓이 파일이라고 하시는 게 리눅스 한정 개념일까요? 윈도우즈나 맥OS에서도 파일일까요?
이 생각에 착안한 이유는, 리눅스는 자원의 단위가 파일이고, 윈도우즈는 자원의 단위가 핸들이라고 알고 있기 때문입니다. (부르기 나름)
파일에 다가 대고 fopen하는 것, console 에다가 fopen 하는 것, 네트워크 자원에다가 fopen 할 수 있다는 말씀이 좀 이렇게 생각하게 되었습니다.
말씀하신 파일이라는 게 꼭 2차 저장장치에 저장되는 파일이 아니라 리눅스에서 부르는 자원의 단위의 파일이라는 의미로 와 닿았습니다.
그저 특정 개체에 대해 읽고 쓰는 방식으로 소통을 하는 것이지, 그 개체가 2차 저장장치의 파일은 아니라고 생각이 들었습니다.
메모리에 올라간 개체도 파일이라고 생각이 들었기 때문입니다.
파일이라고 한다면 특정 디렉토리에 존재하는 주소로 표현이 가능해야하는데, socket이 붙는 것만으로 디렉토리가 존재하는 파일이 생성되는 건가요?
이 영상은 모두 윈도우 소켓 프로래밍에 관한 것입니다. 그리고 소켓이 파일이라고 설명한 것은 모든 범용 운영체제에 동일하게 적용됩니다. 그리고 윈도우에서 핸들은 void* 입니다. 그 포인터가 가리키는 대상을 제어하기 위한 수단이라는 의미를 담아 핸들이라 부르는 것에 불과합니다.
그리고 파일은 장치파일도 있고 우리가 생각하는 일반 데이터 파일도 있습니다. 그 둘은 반드시 구분해야 합니다. 다만 사용에 있어서 다르지 않다는 것을 아는 것이 중요하겠습니다. 그리고 소켓은 디스크에 존재하는 파일로 저장되지는 않습니다. 참고하시기 바랍니다.
아...정말 명쾌한 설명 감사드립니다. 지인 분이 링크를 소개해주셔서 보게 되었습니다. 영상 널리 전파하겠습니다. 감사합니다!!
Handle은 대상 오브젝트를 추상화한 개념에 불과합니다. File도 File Handle을 통해 추상화된 객체로 접근할 수 있으니까요.
OS에서 디바이스들을 추상화 시켜주지 않는 다면, 우리가 개발할때 타겟 시스템 장치의 특성에 따른 부분까지 고려해 가며 해야 할겁니다.
우리가 통신을 하기 위해서는 NIC의 종류에 상관없이 동일한 코드로 추상화된 객체에 접근하기만 하면 되도록 API 가 제공됩니다. (감사한 일이죠 ^^)
OSI 7 Layer 모델의 아래 3단계는 일반 소켓 프로그래밍을 할때, 고려하지 않아도 되는
감사합니다
제가 더 감사합니다. ^^
그럼 socket도 open할떄마다 fd를 3부터 새로 할당해주는건가요?
3부터인지는 모르겠으나 파일과 같은 방식으로 처리됩니다. :)
강의랑 상관없는 질문인데
어떻게 배웠던 정보들을 잘 기억하세요?
저같은 경우엔 몇년동안 배웠던 개념도 어느순간 증발한걸 매우 자주 느끼는데
강사님은 영상 찍으실때 즉흥적으로 올리는것도 많으신거같은데
어떻게 그렇게 잘 기억하세요?
아...그런가요? 아마도 저는 강의를 병행해와서 그런 것 같습니다. 개발 + 집필 + 강의를 꽤 오랜 기간 병행하는 삶을 살아왔습니다. 좋게 봐주셔서 고맙습니다. :)
설명에 뇌에 속속 박혀요
좋은 평가 고맙습니다. :)
C언어를 안 배웠는데 2:30 초쯤부터 점점 어려워요
이 강의는 C언어를 '잘'하시는 분들을 위한 고급 주제를 다룹니다. C언어를 안 배웠다면 수강 할 수 없습니다. 참고하시기 바랍니다.