[네트워크] Windows 소켓 프로그래밍

bien·2024년 4월 5일
0

네트워크

목록 보기
3/3

소켓의 본질에 대한 이해

  • 소켓(Socket)은 OS 커널에 구현되어 있는 프로토콜 요소에 대한 추상화된 인터페이스
    • 소켓의 본질은 파일이다. 파일이란 저장가능한 Data 파일인 동시에, 운영체제 커널 영역에 구현되어 있는 요소들에 대한 추상화된 인터페이스이다. 이때 만약 그 요소가 프로토콜 스택 중 하나라면, 이것을 소켓이라고 부른다.
    • 블루투스 장치에 대한 파일은 블루투스 소켓, IRDA(적외선 통신 포트)에 대한 파일이라면 그것은 IRDA 소켓이라고 부른다. 이처럼 소켓이란 용어는 다양하게 사용되고 있다.
  • 장치 파일의 일종으로 이해할 수 있음
    • 일반적으로 우리는 콘솔등에 출력되는 파일을 작성할 수 있다. 이때, 출력되는 곳이 콘솔이 아니라 TCP라는 네트워크인 경우라고 이해할 수 있다.
  • 일반 파일에 대한 개념이 대부분 적용됨
  • 따라서, 소켓 프로그래밍이란 TCP라는 대상을 추상화시킨 파일에 대한 입출력 방법론을 배우는 것이다.
    • usermode에서 행위의 주체인 process가 이 파일을 Open, Close, Create, Delete등을 수행한다. 이때 Read와 Write라는 개념은 Receive와 send로 바뀌게 된다.

  • File이라는 개념을 다룰 때 Stream이란 개념을 함께 참고하면 좋다.
    • 통신에서 데이터가 교환되는 논리적 단위로, L4 단계에서 segment, L3에서 Packet이 있다.
    • Steram이란 이 segment와 packet과 같은 (데이터를 의미하는) 작은 퍼즐 조각 하나들이 모여있는 것을 의미한다.
    • Stream은 기본적으로 조립이되어 연속되어서 한 줄로 이어진것을 의미하고, segment란 이 조각난 퍼즐 한 조각을 말한다.
      • 이 segment 조각들을 인터넷이라는 네트워크에서 유통가능한 형태로 만들기 위해서 택배형태로 배송하는데, 이 형태를 packet이라고 한다.

TCP (연결) 상태 다이어그램과 전이

  • TCP는 연결을 한다. 그래서 Connect oriented protocl이라고 부른다.
  • TCP
    • '안정성'이라는 개념이 거론.
    • host a와 b가 통신을 수행할때, 인터넷을 통해 전해지는 작은 조각하나를 segment라고 할때, 이것은 packet이라는 박스에 담아서 보내준다. 데이터가 1234이렇게 전해질때, 수신측에서 3번이 오지않고 바로 4번이 오는 경우, TCP라는 프로토콜은 운영체제 수준에서 커널에 구현되어있는데, 내가 프로그램을 따로 작성하지 않아도 커널 수준에서 3번 재전송을 요청한다.
    • 따라서 송신측에서 3번을 재전송하도록 하는 '안정성'개념이 구현되어 있다.
  • (반대 개념) UDP
    • 이 프로토콜에는 연결이라는 개념이 존재하지 않는다.
    • OS수준에서의 재전송과 같은 개념이 전혀 구현되어 있지 않다. 만약 이같은 메커니즘을 원하는 경우 직접 구현해야 한다.

Reference

profile
Good Luck!

0개의 댓글