인프런 커뮤니티 질문&답변

빵빵이님의 프로필 이미지
빵빵이

작성한 질문수

외워서 끝내는 네트워크 핵심이론 - 기초

패킷의 생성과 전달

소켓,File 질문있습니다!

해결된 질문

작성

·

333

·

수정됨

0

선생님 안녕하세요!
수업 잘 듣고 있습니다!

질문이 있습니다!

소켓은 커널모드로 진입해 네트워크를 통신하기 위한
추상 인터페이스다, h/w와 소통하기 위해 kernel의 도움을 받아야 하는데 네트워크 통신을 할 때 추상 인터페이스를 부르는 명칭이 소켓인것이고 I/O 장치와 상호작용 할 때는 file이라고 부르는 것이 맞나요?

답변 2

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

아무거나123님, 아니오. Java를 공부하면서 그런 생각을 하게 된 것 같습니다. 추상화라는 말은 OOP만 있는 것이 아니라 보편적으로 사용하는 어휘입니다. 그러므로 추상과 구현으로 나눠 생각하는 것은 적절치 않습니다. 구현은 이미 OS에 되어 있습니다. 단, OS에게 입/출력을 요구할 수 있는 허용된 인터페이스로써 소켓이 존재함을 설명한 것입니다.

API에서 I는 인터페이스 입니다. 그 인터페이스는 상황에 따라 추상화된 결과 일 수 있습니다. 참고하시기 바랍니다. 😄

API의 I가 인터페이스인 점을 상기해 주셔서 이해했습니다. 너무 자바에 매몰되어 생각했습니다. 소켓을 아래와 같이 정의해보려고 합니다.

 

복잡한 네트워크 통신 구현 세부사항을 추상화하여 User mode에서 프로그래머가 쉽게 접근할 수 있는 인터페이스를 소켓이라고 한다. 소켓은 OS 커널에 구현되어 있으며 어플리케이션을 구성한 프로그래밍 언어별로 제공되는 소켓 API를 통해 개발자가 소켓 파일을 직접 send(write)할 수 있다.

 

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

조금 섞인 것 같습니다. '(장치) 파일'은 커널의 구성요소에 대해 사용자 모드 프로세스가 접근 할 수 있도록 제공된 추상화된 인터페이스 입니다. 그리고 커널 구성요소가 프로토콜인 경우 추상화된 인터페이스 파일을 특별히 소켓이라 부릅니다. 이렇게 정리하는 것이 좋겠습니다. 😄

빵빵이님의 프로필 이미지
빵빵이
질문자

답변 감사합니다!!

안녕하세요. 저는 웹서버 개발자인데요. 잘 이해가 안가는 부분이 있습니다.“추상화된” 인터페이스라고 말씀하셨는데, 그러면 어플리케이션이 통신하기 위해서 이 추상화된 인터페이스를 “구현”하여 파일을 쓴다고 이해하면 될까요? 단순히 추상화만 되어있는데 어떻게 통신이 가능하다는 것인지 잘 이해가 안갑니다.

빵빵이님의 프로필 이미지
빵빵이

작성한 질문수

질문하기