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

dankim님의 프로필 이미지
dankim

작성한 질문수

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

패킷의 생성과 전달

[패킷의 생성과 전달 , 9분 30 초 질문] 소켓은 파일에서 질문입니다.

해결된 질문

작성

·

393

0

안녕하세요.
이게 살짝 강의에 내용을 벗어날수도 있는 질문인데요.

소켓 통신시에 그 운영체제가 버퍼(파일) 자원을 어떻게 할당하는지에 대해 좀 더 알고 싶어서요.

검색해보니까 약간 겉핡기같은 내용이 많이 나와서 그런데, 혹시 관련해서 설명해주시거나 참고할만한 링크하나만 추천해주실 수 있나요 ?

그리고 유튜브도 제가 가끔 보는데, 소켓 통신에 대해 말씀하실때 파일, 버퍼, 스트림 이 세 단어를 뭔가 번갈아가면서 쓰셨는거 같은데 각 단어의 차이를 한번 말씀해주시면 감사하겠습니다.

수고하세요 :)

답변 1

3

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

소켓의 본질은 File입니다. 그리고 모든 File I/O는 Buffered I/O와 Non-buffered I/O로 나눌 수 있습니다. Buffered I/O는 말 그대로 버퍼를 활용하므로 읽기/쓰기 정보가 버퍼에 담긴 후 처리됩니다. 이렇게 할 경우 입/출력 지연이나 외부 요인에 따른 변화에 좀더 유연하게 대응할 수 있습니다. 반면에 '버퍼복사'로 인한 지연도 일부 발생합니다. 이 버퍼의 크기는 운영체제의 구현형태나 설정에 따라 달라질 수 있습니다. 소켓도 마찬가지 입니다. 따라서 '자원을 어떻게 할당 하는 가'라는 질문은 모호한 측면이 있습니다. 어떻게 보면 설정의 문제일 수 있기 때문입니다. 인터넷에서 IOCP에 대해서 검색해보면 좋은 자료를 많이 찾을 수 있습니다. IOCP가 어떻게 성능을 높이는지 생각해보면 원하는 답을 찾을 수 있을 것으로 생각합니다.

그리고 File은 말 그대로 File 입니다. 제가 버퍼를 함께 언급하는 이유는 앞서 말한 Buffered I/O 때문입니다. 그리고 Stream이라는 표현은 논리적으로 파일에 저장되는 데이터가 직렬로 연속된 1차원적 비트 스트림 형태이기 때문입니다. 참고하시기 바랍니다. 감사합니다.

dankim님의 프로필 이미지
dankim

작성한 질문수

질문하기