Scribbling

운영체제 - 12 본문

Computer Science/Computer Knowledge

운영체제 - 12

focalpoint 2021. 11. 3. 11:03

 

1. 네트워크와 인터넷

초기의 컴퓨터 네트워크는 한 건물 안에 있는 컴퓨터를 연결하는 수준이었다. 그리고 이러한 의미에서 이를 LAN(Local Area Network)라고 불렀다. 개인 PC의 메인보드에는 랜카드가 달려 있는데, 이는 몇 킬로미터 내의 네트워크를 연결가능한 카드라는 의미이다.

여러 컴퓨터를 연결하여 LAN을 구성하는 방법은 많은데, 이를 토폴로지(Topology)라고 하며 스타형, 링형, 버스형 등이 있다.

제록스사는 버스형에 CSMA/CD(Carrier Sense Multiple Access/Collison Dectect) 프로토콜을 사용하는 LAN을 이더넷(ethernet)이라고 이름 붙였다. 이더넷은 버스에 연결만 하면 LAN에 기기를 추가할 수 있으며, 개별 기기의 고장이 네트워크에 영향을 주지 않기 때문에 구축이 용이하고 유지/보수가 쉽다. 따라서 이더넷이 많이 보급되어 현재까지도 사용되고 있다.

1960년대 미국 국방성은 서로 호환되지 않는 LAN을 묶어서 하나의 네트워크로 만들기 위한 연구를 진행하여 '아르파넷'을 개발하였다. 아래 그림과 같이 아르파넷은 여러 종류의 LAN을 선으로 연결하여 하나의 네트워크로 만든 것이다.그리고 LAN이 연결된 후에는 LAN 사이에 데이터 전송을 위한 프로토콜을 설계하였는데, 이것이 바로 IP(Internet Protocol)이다.

그러나 당시의 IP는 목적지까지 데이터를 보내는 일은 훌륭히 수행하였으나 데이터가 원래대로 전달되지 않거나 없어지곤 하였다. 이를 보완하기 위해 TCP(Transmission Control Protocol)이 개발되었는데, 이는 데이터 전송시 오류를 바로잡는 프로토콜이며 TCP는 IP 위에서 작동하도록 설계었다. 이것이 오늘날의 TCP/IP 프로토콜이며, 인터넷이다.

최초의 웹 브라우저는 "모자이크"이다. S전자 사내 게시판의 이름은 여기서 빌린듯 하다.

 

2. 분산시스템

과거에는 복잡한 계산이나 방대한 데이터를 처리하기 위해 메인프레임이라는 값비싼 대형 컴퓨터를 사용하였다. 개인용 컴퓨터의 수가 크게 늘면서 이들을 묶어 대형 컴퓨터 같은 능력을 가진 시스템을 만들 수 있게 되었는데 이를 분산시스템이라고 한다. 

클라이언트/서버 시스템은 분산시스템의 대안이다. 클라이언트/서버 시스템은 작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버의 이중 구조로 되어 있다.

웹 시스템에서 클라이언트가 서버에 작업을 요청하고 그 결과를 받는 과정은 익히 알듯이 아래와 같다.

- 클라이언트가 웹 브라우저에 서버 주소를 입력

- 웹 브라우저는 HTTP를 이용하여 서버에 있는 HTML을 Request

- 서버는 클라이언트의 요청을 처리한 후 결과를 클라이언트에 전달

- 결과가 클라이언트에 도착하면 브라우저가 그 내용을 출력.

서버는 멈추지 않고 계속 작동하여 클라이언트의 요청을 처리한다. 이와 같이 멈추지 않고 계속 작동하는 프로그램을 데몬(demon)이라고 하며, 웹 시스템에서 사용하는 데몬은 HTTP 데몬 혹은 웹 데몬이라고 한다.

초기의 HTML 화면은 고정된 페이지로 구성되었다. 웹 화면에 동적인 데이터를 표시하는 것이 불가능하였는데, 동적인 데이터를 HTML에 삽임하려면 프로세스에 질문을 하고 그 결과값을 HTML형태로 웹 데몬에 전달하는 프로세스가 필요하였다. 이를 위해 개발된 것이 CGI(Common Gateway Interface)이다. 웹 시스템이 발전하면서 데이터베이스와 웹 서버의 연결 작업에 CGI를 사용하기 시작하였다.

또한 미들웨어(middleware)라는 개념이 등장하였다. 미들웨어는 양쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어로, 서로 다른 서버와 서로 다른 데이터베이스를 묶어 표준화된 인터페이스를 통로 일관된 작업이 이루어지도록 돕는다.

 

'Computer Science > Computer Knowledge' 카테고리의 다른 글

[System Design] Scaling Web Apps  (0) 2023.04.27
Docker Basics  (0) 2022.10.05
운영체제 - 11  (0) 2021.11.02
운영체제 - 10  (0) 2021.10.31
운영체제 - 9  (0) 2021.10.22