본문 바로가기

프로그래밍

(32)
네트워크(5) - 인터넷 전송 프로토콜이 제공하는 서비스(TCP, UDP) 인터넷이 제공하는 애플리케이션 지원 유형을 살펴보자. 인터넷을 포함해서 많은 네트워크는 하나 이상의 트랜스포트 프로토콜을 제공한다. 애플리케이션을 개발할 때는 사용 가능한 트랜스포트 프로토콜 중에서 하나를 선택해야 한다. 인터넷은 애플리케이션에게 2개의 전송 프로토콜을 제공한다. TCP UDP 개발자가 새로운 인터넷 애플리케이션을 만들 때 가장 먼저 결정해야 하는 것 중 하나는 UDP와 TCP 중 어느 것을 사용할 것인가이다. 이 둘이 애플리케이션들에게 제공할 수 있는 서비스는 무엇인가? 가능한 서비스들을 넓은 범위에서 신뢰적 데이터 전송,처리율,시간,보안 이라는 네가지 차원으로 분류할 수 있다. 신뢰적 데이터 전송( data integrity ) 패킷(전송되는 데이터) 들은 네트워크 내에서 손실될 수 ..
네트워크(4) - 프로세스 간 통신(Processes Communicating) 이번 글에서는 프로세스 간에 어떻게 통신을 하는가에 대해 알아보자. 알아보기 전 운영체제에서 배우는 프로그램, 프로세스에 대해 한 번 짚고 넘어가보자. 프로그램이란 우리가 일반적으로 생각하는 프로그램이 맞다. 카카오톡도 프로그램이고 워드 엑셀 역시 프로그램이다. 프로세스란 호스트 내에서 돌아가고 있는 프로그램이다. 같은 호스트 내에서 복수개의 프로세스가 돌아갈 수 있는데, 두 개의 프로세스가 내부적으로 통신이 가능하다. 전에 배웠던 client-server 구조는 server는 데이터를 제공하기 위해, client 는 데이터를 받기 위해 둘의 프로세스가 다르다. P2P 구조는 서버 모듈 클라이언트 모듈 모두 가지고 있다. 다른 호스트들에 있는 프로스세와는 메세지 교환을 통해 통신이 가능한데 소켓(Sock..
네트워크 (3) - client-server, P2P(peer to peer) 저번 우리는 네트워크 구조에 대해 알아보았다. 이번에는 애플리케이션 구조에 대해 알아보자. 애플리케이션 개발자 관점에서 네트워크 구조는 고정되어 있고 해당 애플리케이션에 특정 서비스 집합을 제공한다. 그러나 애플리케이션 구조는 개발자가 설계하며, 이들이 다양한 종단 시스템에서 어떻게 조직 되어야 하는지 알려준다. 개발자는 현재 두 가지 잘 알려진 구조 client-server P2P(peer-to-peer) 구조 중 하나로 작성할 것이다. Client-server 는 항상 켜져 있는 호스트를 Server로 이 서비스는 client의 요청을 받는다. ( 비대칭적 ) 따라서 클라이언트끼리 직접적으로 소통하지 않는다. 그렇기에 반드시 server를 통해 데이터를 주고 받는다. 항시 운영이 되어야 하기 때문에 ..
네트워크(2) - internet protocol layers 글을 시작하기전에 우리들의 컴퓨터를 생각해보자. 만약 일체형 컴퓨터를 사용한다면, 모니터와 본체가 붙어있다. 그렇기에 하나라도 고장나면 전부 가져가야 한다. 일체형이 아니라 분리형 컴퓨터라면, 고장나면 고장난 것만 가져가면 된다. 즉, 각각 모듈별로 관리해주면 되기 때문에 유지보수가 편하다. 이렇기에 구조와 구획화는 중요하다. 네트워크는 어떻게 구획화를 해야할까? 네트워크는 매우 복잡하다. 이런 상황에서 어떻게 구조를 잘 만들까? 네트워크는 layer별로 구분을 해놓아서 각기 다른 기능을 수행해낸다. 네트워크는 전세계적으로 이용하기 때문에 전세계적으로 공통으로 만들어져야 한다. 그래서 reference model이 나오게 되었다. reference model에 들어가는 protocol도 공통되어야 한다...
네트워크(1) - 인터넷은 어떻게 작동하는가(간단한 인터넷의 구성요소) 오늘날의 인터넷은 현재 가장 거대한 공학적 시스템이며 수억 개의 연결 사물들로 구성된다. 그러면 이렇게 많은 구성요소가 있는 인터넷은 어떻게 동작할까? 우리는 이를 위해 네트워크에 대해 배워야한다. 인터넷의 구성요소 앞서 말한것과 같은 많은 연결 장치는 호스트(host) 혹은 종단 시스템(end system) 이라고 부른다. 많은 용어가 있지만 종단 시스템이 다른 종단 시스템으로 보낼 데이터 패키지를 패킷(packet) 이라한다. 패킷 스위치를 통해 패킷을 출력하고 전달한다. 라우터와 링크 계층 스위치가 이에 해당한다. 종단 시스템은 ISP(internet service provider)를 통해 인터넷에 접속한다. 여러 정보 수신을 제어하는 프로토콜에는 TCP(transmission control pro..
운영체제 (2) - 시스템은 어떻게 보호 되는가? (system call) 시스템은 사용자 응용 프로그램이 시스템에 해를 끼치는지 어떻게 알아낼 수 있을까? 내용을 시작하기에 앞서 이 글은 시스템 호출(system call)에 대한 내용을 메인으로 다룰것이다. 내가 시스템콜에 대해 가장 간단히 방법은 다음과 같다. 만약 당신이 간단한 프로그램을 실행할 때 하나의 프로그램 실행에도 많은 내부과정이 필요하다. 하나의 상황을 예시로 들어보자. 당신은 파일의 내용을 복사하는 프로그램을 작성하기를 희망한다. 이 때 필요한 것은 첫번째로 읽는 입력파일 이름, 출력파일 이름. 이를 위해 프로그램은 사용자에게 두 파일의 이름을 요청할 것이다. 이 때 시스템콜이 필요한데, 프롬프트 메시지를 화면에 표시하기 위해 시스템콜이 필요하고 두 파일의 이름에 해당하는 문자열을 키보드로부터 읽기 위해 두번..
운영체제(1) - 시스템은 어떻게 작동하는가(Multicore system, Interrupt) 운영체제 왜 공부하지? 운영체제란 무엇인가? 우리는 우리의 문제를 더욱 쉽게 해결하기 위해 프로그램을 사용한다. 이러한 목적을 위해 하드웨어가 제작되고, 하드웨어만으로는 사용이 어렵기 때문에 응용 프로그램이 개발되었다. 여기에 자원을 제어하고 할당하는 기능을 하나의 소프트웨어로 통합한 것이 운영체제 (operating system) 이다. 라고 정의되어 있지만 우리가 평소에 이미지하고 있는 것과 크게 다르지 않을 것이다. 운영체제를 더욱 일반적으로 정의하자면 컴퓨터에서 항상 실행되는 하나의 프로그램으로 일반적으로 커널(kernel) 이라 불린다. 운영체제를 깊게 알아보기 전에 컴퓨터 시스템 구조에 대해 한번 짚고 가보자. 우리는 크게 입출력 구조, CPU, memory 로 나눌수 있다. Memory 를 ..
[학부수업] 컴퓨터 네트워크(0) 최근 하고 싶은 일과 취업에 대한 고민이 많아졌다. 덕분에 면접과 다양한 캠프들(부스트캠프,우아한캠프 등..) 후기들을 찾아보면서 학부 수업에 그치지 않고 내가 배울 수 있을것들을 찾아보게 되었는데 결국 뿌리가 되는것은 전공 수업 그 중에서도 몇 개의 수업 (컴퓨터 네트워크,알고리즘,운영체제..) 이 더욱 중요하다는 생각으로 내가 공부하는 것들을 블로그에 정리하기로 하였다. 나중에 면접을 준비하거나 관련한 지식을 찾아보아야 할 때 내 기록이 도움이 되었으면 하는 마음에 열심히 공부하고 작성하겠읍니다. 해당 내용은 컴퓨터 네트워킹 하향식 접근 제8판의 내용을 기초로 합니다. 저뿐만 아니라 관련 분야의 어떤 것들을 준비하시는 분들이건 저의 기록들이 도움이 되었으면 합니다.