다음 이전 차례

4. 리눅스 네트워킹에 대한 일반적인 내용

4.1 리눅스 네트워킹 커널 개발의 간략한 역사

기존의 것들 만큼 좋은 성능을 지닌 tcp/ip 프로토콜 스택을 새로운 커널에서 개발 하는 것은 쉽지 않은 일이었다. U.S.L의 판례로 인해 제한적인 저작권으로 기존의 것이 제한을 받는지가 불확실했고 기존의 것보다 더 좋고 완전히 다르게 만들려는 열정이 있을 당시에 기존의 것을 포팅하지 않으려는 결정이 내려졌다.

커널 네트웍의 개발을 주도한 초기 자원자는 Ross Biro <biro@yggdrasil.com> 였다. Ross는 WD-8003 네트웍 인터페이스 카드용 드라이버 위에서 간단하고 불완전하지만 매우 유용한 루틴들을 구현하였다. 이것은 많은 사람들로 하여금 그 소프트웨어를 가지고 실험해 보도록 하기엔 충분했고 몇몇 사람들은 머신을 인터넷에 연결시키기 위해 이 설정을 사용하기도 하였다. 리눅스 개발 공동체 안에서 네트워킹 지원에 대한 압력이 발생하였고 결국 Ross에 대한 일부 부당한 압력과 그의 개인적인 책임들이 그가 이룩한 성과보다 우세해져서 그는 개발 리더 자리에서 물러나게 되었다. 그런 논쟁만을 좋아하는 환경에서 프로젝트가 시작되도록 하고 어떤 유용한 것을 만들어 내는 책임을 받아들인 Ross의 노력은 이후의 작업에 촉매 역할을 하였고 결국 지금의 성공에 근본적인 요소가 되었다.

Orest Zborowski <obz@Kodak.com> 은 최초로 리눅스 커널용 BSD 소켓 프로그래밍 인터페이스를 만들었다. 이것은 수많은 기존의 네트웍 프로그램들이 큰 수정 없이 리눅스로 포팅될 수 있도록 해줬다는 데에서 매우 큰 진전이었다.

이즈음 Laurence Culhane <loz@holmes.demon.co.uk> 은 SLIP 프로토콜을 지원하는 리눅스용 드라이버를 처음 개발하였다. 이것은 이더넷 네트워킹을 할 수 없었던 많은 사람들에게 새로운 네트워킹 소프트웨어를 실험할 수 있게 해주었다. 또한 어떤 사람들은 이 드라이버를 이용하여 인터넷 접속을 하는데 사용하기도 하였다. 이것은 많은 사람들에게 리눅스 네트워킹 지원이 완성되었을 때 실현될 가능성들을 맛보게 하였고 기존의 네트워킹 소프트웨어를 적극적으로 사용하고 실험하는 사용자 수를 늘어나게 했다.

네트워킹 지원을 만드는 일에 적극적으로 참여해 온 사람중 하나가 Fred van Kempen <waltje@uwalt.nl.mugnet.org> 이었다. Ross가 개발 리더 자리에서 물러난 후 얼마동안 Fred는 그의 시간과 노력을 들였고 기본적으로 반대하는 사람이 없는 역할을 받아들였다.Fred는 리눅스 네트워킹 소프트웨어를 이끌 방향에 대한 야심찬 계획을 가지고 있었고 그렇게 일을 진행하였다. Fred는 NET-2 커널 코드라 불리는 (Ross의 것을 NET이라 부른다) 일련의 네트워킹 코드를 만들었고 많은 사람들이 유용하게 이용 할 수 있었다. Fred는 다이나믹 디바이스 인터페이스, 아마추어 라디오 AX.25 프로토콜 지원, 더욱 모듈화된 네트워킹 구현 같은 많은 혁신적인 것들을 개발 계획에 집어넣었다. Fred의 NET-2 코드는 열광적인 수많은 사람들에 의해 사용되었고 그 소프트웨어가 돌아간다는 말이 퍼지면서 그 숫자는 더욱 늘어났다. 이 당시 네트워킹 소프트웨어는 표준 커널 코드의 수많은 패치에 불과했으며 보통의 릴리즈에는 포함되지 않았었다. NET-FAQ와 이어 나온 NET-2-HOWTO는 그 모든 것을 작동하도록 하기 위한 매우 복잡한 작업들에 대해 설명하고 있었다. Fred의 초점은 표준 네트워킹 구현에 대한 기술 혁신에 있었으며 이는 시간이 걸리는 작업이었다. 사용자들은 믿을만하게 동작하고 80%의 사용자를 만족시킬 수 있는 것을 조급해 했고 Ross에게처럼 개발 리더로서의 Fred에 대한 압력이 생겨났다.

Alan Cox <iialan@www.uk.linux.org> 는 이러한 상황을 해결하기 위한 해결책을 제시했다. 그는 Fred의 NET-2 코드를 가져다 디버깅하고 안정적으로 만들어서 조급한 사용자들을 만족시키는 동시에 Fred에 대한 압력을 덜어줘서 그에게 자신의 일을 계속할 수 있도록 해 주려 하였다. `Net-2D(debugged)'라 불리는 리눅스 네트워킹 코드의 첫번째 버전의 성공과 함께 이 일을 시작하였다. 그 코드는 많은 대표적인 환경 하에서 안정적으로 작동하였고 사용자들은 만족하였다. 확실히 Alan은 그 프로젝트에 공헌할만한 아이디어와 기술을 가지고 있었고 NET-2 코드가 나아갈 방향에 대한 많은 논의들이 계속해서 발생하였다. 그 중 리눅스 네트워킹 사회속에 서로 다른 두 파가 생겨났는데 한 쪽은 `우선 동작하도록 만든 후에 향상시키자'라는 철학을 가지고 있었고 다른 한 쪽은 `처음부터 잘 만들자'라는 철학을 가지고 있었다. 결국 Linus가 중재를 하였고 Alan의 개발 노력에 대한 지지를 표명하면서 표준 커널 소스 배포본에 Alan의 코드를 포함시켰다. 이것은 Fred를 난처한 입장에 놓이게 하였다. 개발이 계속되었음에도 그의 코드를 사용하고 시험해 볼 사용자층이 부족하였고 이는 개발의 진행을 더디고 어렵게 만들었다. 결국 Fred는 잠시 개발을 계속하다 중단했으며 Alan이 리눅스 네트워킹 커널 개발 노력의 새 리더가 되었다.

곧 Donald Becker <becker@cesdis.gsfc.nasa.gov> 가 네트워킹의 로우 레벨 분야에서의 그의 재능을 들어내었고 막대한 양의 이더넷 드라이버들을 만들어서 현재 커널에 포함된 거의 모든 드라이버들이 Donald에 의한 것일 정도이다. 많은 중요한 공헌을 한 다른 사람들이 있었지만 Donald의 업적은 그 양이 매우 방대하여 특별한 언급의 가치가 있다.

Alan은 `TODO' 리스트에 언급되지 않은 일들을 진행해 나가는 동시에 NET-2-Debugged 코드를 개량하는 일을 계속하였다. 리눅스 커널 1.3.* 소스가 모습을 들어낼 때 즈음에 커널 네트워킹 코드는 현재 버전의 기초가 되는 NET-3로 바뀌어 있었다. Alan은 네트워킹 코드의 많은 다른 방향에서 작업을 해 나갔고 리눅스 네트워킹 사회의 많은 다른 재능있는 사람들과 함께 코드를 모든 방향에서 향상시켜 갔다. Alan은 동적 네트워킹 장치를 만들었고 최초로 표준 AX.25와 IPX를 구현하였다. Alan은 그 코드를 계속해서 고치고 천천히 개조하면서 현재의 모습으로 발전시켜왔다.

PPP의 지원은 Michael Callahan <callahan@maths.ox.ac.uk> 과 Al Longyear <longyear@netcom.com> 에 의해 추가되었는데 이는 네트워킹을 위해 리눅스를 사용하는 사람들의 수를 증가시키는대 매우 결정적인 것이었다.

Jonathon Naylor <jsn@cs.nott.ac.uk> 는 Alan의 AX.25 코드를 개량하고 NetRom 과 Rose 프로토콜을 추가함으로써 많은 공헌을 해왔다. AX.25/NetRom/Rose의 지원은, 리눅스 외의 어떤 다른 운영체제도 이 프로토콜들에 대한 표준적인 지원을 하지 못하고 있다는 이유 때문에 그 자체만으로도 매우 중요하다.

물론 리눅스 네트워킹 소프트웨어의 개발에 중요한 공헌을 한 수많은 다른 사람들이 있어왔다. 이들 중 일부는 특정 기술에 관한 내용에서 나올 것이고 다른 사람들도 모듈이나 드라이버, 버그 수정, 제안, 테스트 리포팅 그리고 정신적 지원 등에 공헌하였다. 어느 경우에나 모두가 일정한 역할을 하였고 그들이 할 수 있는 것을 제공하였다. 리눅스 커널 네트워킹 코드는 무정부주의적인 리눅스 스타일로부터 나올 수 있는 결과의 훌륭한 한 예이며 만약 이가 아직 놀랍지 않다면 곧 충분히 놀랍게 될 것이다. 개발은 아직도 끝나지 않았다.

4.2 리눅스 네트워킹 관련 자료들.

리눅스 네트워킹에 관한 좋은 정보들을 찾을 수 있는 곳이 많이 있다.

많은 컨설턴트들이 있으며 그 목록은 LinuxPorts Consultants Database에서 찾을 수 있다.

리눅스 커널 네트워킹 코드의 현 관리자인 Alan Cox는 리눅스 네트워킹의 지금 혹은 새롭게 개발되는 것들 중 주요한 것을 담고 있는 웹 페이지를 www.uk.linux.org에서 운영하고 있다.

다른 좋은 것은 Olaf Kirch가 쓴 Network Administrator's Guide.란 책이다. 이는 Linux Documentation Project 의 결과물이며 Network Administrators Guide HTML version에서 언제라도 읽을 수 있고 metalab.unc.edu LDP ftp archive에서 다양한 양식의 것을 구할 수 있다. Olaf의 책은 매우 포괄적이며 리눅스 하에서의 네트워킹 구성에 대한 수준 높은 개관을 제공해 준다.

리눅스 뉴스 계층에는 네트워킹 관련 뉴스그룹도 있다.: comp.os.linux.networking

리눅스 네트워킹과 관련된 질문을 할 수 있는 메일링 리스트도 있다. 이에 가입하기 위해서는 다음과 같이 메일을 보내야 한다.

To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:

subscribe linux-net

많은 IRC 네트워크 상에서는 리눅스 네트워킹 관련 질문을 할 수 있는 #linux 채널이 열린다.

어떤 문제를 보고할 때에는 가능한한 그 문제에 대해 자세히 기술하는 것을 상기하라. 특히, 커널이나 pppd 혹은 dip 등의 툴의 버전 같은 사용하는 소프트웨어의 버전과 겪고 있는 문제의 정확한 특성을 명시해야 한다. 이는 실행한 명령문과 나타난 에러메시지를 정확히 기술함을 의미한다.

4.3 리눅스에 국한되지 않은 네트워크 정보를 얻을 수 있는 곳.

만약 tcp/ip 네트워킹에 대한 일반적이고 기본적인 학습 정보를 원한다면 다음 문서들을 볼 것을 추천한다.

tcp/ip introduction

this document comes as both a text version and a postscript version.

tcp/ip administration

this document comes as both a text version and a postscript version.

만약 tcp/ip 네트워킹에 대한 보다 자세한 정보를 원한다면 다음을 강력히 추천한다:

Internetworking with TCP/IP, Volume 1: principles, protocols and architecture, by Douglas E. Comer, ISBN 0-13-227836-7, Prentice Hall publications, Third Edition, 1995.

만약 유닉스 같은 환경에서 네트워킹 어플리케이션을 만드는 법을 배우고 싶다면 다음을 강력히 추천한다.:

Unix Network Programming, by W. Richard Stevens, ISBN 0-13-949876-1, Prentice Hall publications, 1990.

이 책의 두번째 판을 서점에서 찾을 수 있으며 세 권으로 이루어져 있다. 더 자세히 알고 싶으면 Prenice-Hall의 웹 사이트를 방문해 보라.

또한 comp.protocols.tcp-ip 뉴스그룹을 이용할 수도 있다.

인터넷과 tcp/ip 프로토콜과 관련된 특정 기술 정보의 중요한 소스는 RFC들이다. RFC는 `Request For Comment'의 줄임말이며 인터넷 프로토콜 표준을 문서화하고 제안하는 표준적인 방법이다. 많은 RFC 저장소가 있으며 대부분은 ftp 사이트이고 일부는 특정 키워드로 RFC 데이타베이스를 검색할 수 있도록 검색 엔진이 달린 웹 억세스도 제공한다.

RFC의 소스중 하나는 Nexor RFC database이다.


다음 이전 차례