본문 바로가기

컴퓨터 공학 자료(학부)/Network

초소형 웹브라우저 만들기


저번 과제인 초소형 웹서버 만들기와 더불어
이번과제는 초소형 웹브라우저이다
과제가 아니라 텀 하나하나를 하는 기분이다;

당연히 http 프로토콜과 통신 이해를 바탕으로 만드는데
이번에는 저번보다 몇배의 노력을 했음에도 만족할만한 결과물이 나오지 않았다
왜냐하면 http 관련 라이브러리를 사용하지 말라는 제약사항이 있었기때문이다

덕분에 일일히 모두 원리를 이해하고 구현해야했다
html 태그 파서도 구현해야했고
이미지와 텍스트를 화면에 display 하는것도 구현해야 했는데
여기에 대부분의 시간을 소모했다.
네이버를 제대로 띄우는건..단기간에 불가능했지만
어느정도 띄우긴 띄운다.

ui를 위해 mfc대신에 생소한 qt를 써봤는데, 잘 사용하면 "꽤 괜찮은 도구라는 생각이 든다.
다만 좀 무거운 감이 없잔아 있다는게 단점이고
qt가 안깔린 곳에서 qt로 만든 어플리 케이션을 실행하려면 별도의 처리가 필요하다.


과제의 핵심은 다음과 같다.

 

    웹 브라우저를 직접 구현하기 위해 우선 기존 웹 http 프로토콜 규약 내에서 작동하는 웹 클라이언트(브라우저)와 웹 서버의 구동방식을 이해하고 이와 유사하게 연결동작 하도록 구현한다.

 

    http 라이브러리를 사용할 수 없으므로 기존에 존재하는 함수가 어떤 식으로 프로토콜을 전송하고 전송 받는지, 어떠한 형식으로 에러 메시지를 전송하고 time out되는지, 구현을 통해 http 프로토콜에 대한 이해를 확실히 하고 이를 직접 구현해본다.

 

    Html 문서를 웹 브라우저 내에서 보여주기 위해서는 html 태그가 어떠한 계층구조를 가지고 어떤 속성을 가지고 있는지 모두 이해해야 하고 태그를 중심으로 html 문서를 파싱 하는 파서(’parser)를 직접 구현하여 본 과제에서 만들 웹 브라우저에 내장한다.

 

    저번 과제에서 만들었던 웹 서버와 연계동작이 되야 하기 때문에 직접 http 규약 내에서 파일을 바이트 단위로 전송 및 수신 하는 동작을 이해하고 이를 구현한다.


 




우수한 사항

과제의 우수성은 상용 브라우저와는 달리 html 문서를 읽어서 세가지 섹션으로 나누어서

Display 한다는 것이다. 사용자는 브라우저를 통해 html, 문서의 내부 구조 뿐만 아니라 html,

계층 구조까지 파악할 있다.  

부족한 사항

이번에는 저번과제의 배에 달하는 많은 시간과 노력에도 불구하고 결과물이 처음 목표했던 수준에 미치지 못했다.  시간에 쫓겨 기능 구현에만 급급해 예외처리를 제대로 하지 못해 기본적으로 브라우저가 필요로 하는 안정성이 떨어져서 중간 중간에 어플리케이션이 다운되는 현상이 종종 발생한다.  또한 URL 함수를 쓰지 않고 직접 구현하다 보니 indirect접속이 되는 사이트와 되는 사이트 문제를 제대로 해결하지 못해 몇몇 사이트 접속에 장애가 발생한다.(ex: google.com, daum.net)  또한 파서 부분에서html 규격만 분석, 구현 하는 데에만 성공해서 html 아니라php 페이지는 제대로 파싱 해서 이미지를 보여줄 수가 없는 단점도 존재한다.(물론 php 자체는 수신이 가능하며 html view에서 있다)