충남대학교 컴퓨터공학과 김상하 교수님의 "데이터 통신" 강의를 필기한 내용입니다.

다소 잘못된 내용과 구어적 표현 이 포함되어 있을 수 있습니다.

용어정리

  • 네트워크 : 유무선의 매체를 통해 서로 연결된 장치들의 모임
  • 프로토콜 : 통신의 원활함을 위해 송, 수신자 간의 약속 - 통신 규약

프로토콜 스택

  • 서로 다른 장치들 간의 원활한 통신을 위해 등장하게 된 모델이다
  • 여러개의 프로토콜이 계층적인 형태로 모여있다
  • 같은 통신을 사용한다면 같은 구조의 계층화된 모델을 사용한다
  • 대표적으로 OSI 7 layer, TCP/IP등의 모델이 존재한다
  • 그니까 이렇게 생각하면 편하네 - 우리가 전달하려고 하는 메세지를 프로토콜이라는 포장지로 여러번 감싸서 안전하고 정확하고 빠르게 원하는 대상에게 전송하게 하는 것

TCP/IP 간략하게

  • 그니까 우리가 누군가에게 이메일로(Application) 뭔가를 보내려고 해
  • 그럼 그게 TCP 프로토콜에 의해 변환이 되어서(Transport)
  • IP를 통해 상대방의 컴퓨터가 어디 있는지 알아내서(Network)
  • 너의 랜카드를 통해 그 데이터가 빠져나가는거제(Data link, Physical)
  • 보다시피 “계층”을 이루고 있다고 할 수 있기 때문에 계층화 모델이라 하는거임

“패키지” 단위로의 데이터 전송

  • TCP/IP에서를 예로 들면 너가 이메일을 보내면 이걸 하나 보내는게 아니고 이걸 여러개로 쪼개서(어떻게 쪼개는지는 제일 효율적으로 전송될 수 있는 크기로 쪼갠다) 하나의 경로뿐 아니라 여러 경로를 사용해서 송신함
  • 수신하는 입장에서는 이 분할된 패키지들을 다시 재조립해서 화면에 띄우게 된다

Encapsulation - 송신자 입장

  • 포장지를 하나하나 싸는 것으로 비유할 수 있을듯
  • 데이터에다가 현재 계층의 프로토콜 제어정보를 헤더에 붙여서 하위 계층으로 넘겨주는 것
  • 프로토콜 제어정보가 뭔지는 아직 잘 모르겠고
  • 그니까 일단 데이터가 계층을 내리갈때 그냥 내리가는게 아니고 추가적인 정보가 헤더에 덧붙여져서 계층을 내리간다는 거네
  • 캡슐화 과정이 매우 중요하댄다

Demultiplex - 수신자 입장

  • 포장지를 하나하나 벗기는 것으로 생각해 볼 수 있음
  • 수신한 놈에서 헤더를 검사해서 상위계층에 넘겨줄때는 헤더를 하나 떼어내고 넘겨주게 된다는 거다
  • 헤더에는 어느 계층에서 이 헤더를 씌웠다는 식별자가 다 들어있어서 어느 계층에서 최종적으로 데이터가 소비되어야 할 지 알아낼 수 있단다
  • 캡슐화의 반대공정인것이야

IPC

  • Inter-Process Communication
  • 기기 간의 통신이 아니라 한 기기 내에서의 프로세스들끼리의 통신을 의미
  • 프로세스들 간의 메모리 공간을 침범하게 되면 예상치 않은 정보 변경이 일어나 오류가 날 수도 있지만 경우에 따라 데이터를 공유해야 할 필요도 있다
  • 또한 이러한 필요성에 따라 공유를 한다 해도 동기화 문제가 생길 수도 있다 - 다른 프로세스한테 정보전달이 제대로 되지 않을 수도 있다는 것 - 약간 깃에서 merge할때 충돌하는 경우랑 비슷한거 아닐까
  • 이렇듯 프로세스들간에 교신을 안전하고 효율적으로 하기 위해 나온 개념이 IPC이다
  • 이 프로세스들간의 통신은 메인 커널에서 메세지를 뿌려주는 message passing과 프로세스들이 물리적 메모리를 공유하는 shared memory방식이 있다

socket

  • IPC에서의 통신의 출입구 역할을 한댄다 - 통신 라인의 양 끝단
  • 약간 ㅈㄴ 뜬구름잡는목소리와 뜬구름잡는 설명방식으로 뜬구름잡는 소리나 해대고 있네
  • 통신에 필요한 리소스를 시스템적으로 할당하는 것?
  • 그냥 뭐 서버 소켓과 클라이언트 소켓이 있댄다