TCP와 UDP 모두 네트워크 에서 사용되는 전송 방법입니다.
 
두 프로토콜 모두 OSI 7계층 중에 4계층에 속하며,
 
TCP( Trasmission Control Protocol ) 는 신뢰성을 보장 하는 프로토콜로서, Seq No.와 Ack No.를 이용하여 중간 유실이나 흐름 장애시 재전송을 하는 프로토콜 입니다. 패킷을 순서를 확인하여 재조립 하여 사용자에게 보여주며, 중간 유실이 된 번호를 확인시 해당 번호를 재 전송 해달라는 응답 메시지를 보냅니다.
 
 
UDP( User Datagram Protocl )는 TCP와 마찬가지로 data의 전송을 위한 프로토콜 이지만.. 신뢰성을 보장 하지는 않습니다. TCP와 다른 점은 UDP는 중간에 패킷이 유실이나 변조가 되어도 재전송을 하지 않습니다.
일방적으로 보내는 것으로 생각 하시면 됩니다. 예를 들면... 웹 사이트에서 실시간 TV시청의 경우가 UDP를 많이 사용 합니다. 물론 상대방의 응답을 기다리지 않으므로 그만큼 속도는 더 빠르겠죠.

--------------------------------------------------------------------------------

TCP/UDP는 데이터를 전달하는 프로토콜로서 TCP는 연결지향성 프로토콜이라고 하고 UDP는 비연결지향성 프로토콜이라고 합니다. 
예를 들면, TCP는 전화와 같은 서비스로 데이터를 주고받기위해서는 서로간에 통신채널을 먼저 연결해야 하는 것이고 UDP는 편지와 같은 우편서비스로 쓰여진 목적지 주소를 적어 보내면 알아서 목적지로 전달되는 것입니다. 
TCP가 전화와 같기 때문에 전화받는 사람을 확인하여 데이터의 전달이 정확히 되었는지를 보장받을 수 있지만 UDP의 경우는 그냥 보낼 주소를 적어서 보내기 때문에 잘 도착했는 지 확인이 불가능합니다. 
그렇지만 UDP는 통신 시 호 설정과 같은 사전 과정이 없기 때문에 통신 시 부수적인 오버헤드가 없는 것이 장점입니다. 

TCP의 경우에는 통신 채널 형성과정이 있기 때문에 통신 연결요청하는 사람(Client)과 요청에 응답하는 사람(Server)가 명확히 구분되어 누가 서비스를 요청하는 지가 구분이 될 수 있으나 UDP는 그러기가 어렵습니다. 

'참고자료' 카테고리의 다른 글

OSI 7계층  (0) 2010.08.17
세션아이디  (0) 2010.08.15
HTTP 상태 코드 목록  (0) 2010.08.15
GNU 정의  (0) 2010.08.05
리눅스 mdsn  (0) 2010.07.05

'참고자료' 카테고리의 다른 글

TCP / UDP  (0) 2010.12.02
세션아이디  (0) 2010.08.15
HTTP 상태 코드 목록  (0) 2010.08.15
GNU 정의  (0) 2010.08.05
리눅스 mdsn  (0) 2010.07.05

 컴퓨터 과학, 세션 식별자는, 세션 ID 또는 세션 토큰 이상 (종종 통신 네트워크는 사용되는 데이터 조각입니다 HTTP를 )식별하는 세션을 ,메시지 교환과 관련된 일련의. 세션 식별자는 HTTP가 필요한 경우에 어디에 통신으로 국적을 상실 등의 프로토콜을 사용하는 인프라가. 예를 들어, 사이트를 판매자 구매자가 방문하는 페이지의 가상 쇼핑에서 기사의 번호를 알고 싶어하는 수집 카트 및 확인 사이트에 갈 후 마무리 쇼핑을합니다. 이것은 일반적으로 서버에 그들을 포함하여 지속하는 웹페이지는 여러 통신을 요청에 의해 클라이언트로 다시 보냈습니다. 이러한 상황에서, 그것은 세션의 구매자의 상태의 현재를 추적는 필수적으로 유지 카트, 그리고 ID가 목표를 하나 그 달성 방법.

세션 ID는 일반적으로 방문자에게 사이트에 대한 첫 방문에 부여됩니다. 그것은 사용자가 그 세션은 일반적으로 수명이 짧은 (그들은 몇 분 또는 시간이 소요될 수 없으면 미리 설정된 시간이 지나면 만료 안에있는 ID를 다른)는 무엇이며 무효 특정 목표 이후가 될 수 있습니다 (예를 들어, 찾았습니다, 일단 구매자가있다 그의 명령을 완료, 그는 동일한 세션을 사용할 수 없습니다 더 많은 항목을 추가하려면) ID입니다.

웹사이트로 세션 ID를 가지고에 로그인하는 사용자를 식별하는 데 자주 사용되는, 그들은 공격자에 사용할 수있을하여 세션을 공중 납치 및 권한을 얻을 가능성. 세션 ID는 종종 긴 임의로 생성의 수단 중 하나를하여 유효한 확률을의 취득 감소 문자열 짐승 - 강제로 검색. 대부분의 서버는 ID를 세션을 얻은 공격자는이 검증을 수행하는 추가의 경우에는 클라이언트입니다. 세션을 잠금의 클라이언트 ID가에 대한 IP 주소 가 간단하고 효과적인 주소 같은 조치로 오랜에서 서버는 공격자가로에 연결할 수 없습니다.

세션 토큰을 해시 생성에 의해 형태로 대개는, 고유 식별자 해쉬 함수 생성되며에서 보낸 서버 에 클라이언트 세션을 상호 작용을 파악 현재. 클라이언트는 일반적으로 편의점과 같은 토큰을 보냅니다 의 HTTP 쿠키 및 / 또는 쿼리는 POST 또는 타 매개 변수를 전송합니다. 그 이유는 토큰을 세션 사용 (즉 클라이언트가 식별자를 처리했습니다에만 이내에있는 작은 조각의 데이터 달리 아무 따라서 선물 무의미 보안 위험을) - (서버의 모든 세션 데이터가 저장된 데이터베이스 로,클라이언트 식별자 그)에 연결된 않는 액세스를 직접하지 않았습니다.

'참고자료' 카테고리의 다른 글

TCP / UDP  (0) 2010.12.02
OSI 7계층  (0) 2010.08.17
HTTP 상태 코드 목록  (0) 2010.08.15
GNU 정의  (0) 2010.08.05
리눅스 mdsn  (0) 2010.07.05

요청이 접수, 지속적인 과정입니다.[2]

상태 코드의이 클래스는 임시 응답을 구성, 단지 헤더의 상태 라인과 옵션을 나타내는 라인 비어 있습니다 종료합니다. 코드 이후 상태 1xx 어떤 1.0 않았어요 정의, 서버는 안된다 조건하에 실험을 제외하고 클라이언트에게 1.0 1xx 응답을 보내.

100 계속
이것은 보낸 즉 헤더를 요청받지 서버가되어야하고 필요 시체가 요청에 대한 어떤의 경우 시신을 (클라이언트가 있어야 진행 요청 보낼 예를 들어, 의 POST 요청). 헤더 경우 요청 부적 절한 신체가 기반 거부 대형 보낼 그것을 갔다가 이미이 요청이 서버에 비효율적이다. 보내야합니다, 클라이언트가 혼자 할 기반으로 허용 될 수 요청이 서버에 체크를하는 경우에 요청 헤더의 기대 : 100 - 계속 요청을 초기에 같이 헤더[2] 체크가있는 경우 100 계속 상태 코드가되기 전에 응답 접수에 (계속거나받을 417 기대에 실패 하고 계속하지 않음).[2]
101 프로토콜 전환
이건 정말 의미 할 것이다 그것이 승인하는 서버 requester 가진 요구 및 서버 프로토콜을 전환합니다.[를2]
102 처리 (WebDAV를) (2518은 RFC)
작업을로 WebDAV를 파일과 관련된 요청에 포함될 많은 요청을 하위, 그것은 요청을 받아 수 있습니다 완료 시간이 오래. 이 코드는 아직 나타냅니다받은 서버가 처리하고 요청을하지만, 가능한 응답이있다.[3]에게 손실이 요청했던 않도록 클라이언트를 가정에서 타이밍과 아웃.

[이편집]2xx 성공

상태 코드의이 클래스는, 이해 허용하고 성공적으로 처리 받았습니다 작업을 클라이언트에 의해 요청을 나타냅니다.

200 확인
HTTP 요청 성공적인 표준 대응합니다. 실제 응답 방법을 요청합니다 의존에 사용됩니다. 에서 GET 요청을, 응답이 요청한 리소스가 포함된 것입니다에 엔티티를 해당됩니다. 행동의 결과에서는 것입니다 응답은 POST 요청을 포함하거나 포함하는 엔티티를 설명하는.[를2]
201 생성됨
요청이 충족되어 새로운 자원 결과에 만들어지지.[2]
202 허용됨
요청이 있지만, 처리되었습니다 허용에 대한 처리가 완료되지 않았습니다. 로 자리를 잡아 내야만 실제로있을 처리하면 될 사유로 인해 허용에 따라 행동 요청이있을 수도 또는 결국 수 없습니다.[2]
203 신뢰할 정보 (는 HTTP/1.1 이후)
서버가 요청을 성공적으로하지만, 다른 처리 소스로부터 발생할 수 있습니다 돌아가는 정보를. [2]
204 콘텐츠 없음
서버가 성공적으로하지만, 요청을 처리 콘텐츠를 어떤 반환됩니다 없습니다.[2]
205 콘텐츠 재설정
서버가 성공적으로하지만, 요청을 처리 콘텐츠를 어떤 반환됩니다 없습니다. 204 응답과 달리이 응답보기를 필요로 그 문서를 다시 설정 requester.[를2]
206 일부 콘텐츠
서버가 클라이언트로 전송 헤더가 제공하는 범위에서만 부분의에 의한 자원입니다. 범위 헤더 같은 도구를 사용하여 wget 스트림 동시가 방해 재개 수 있도록의 여러 다운로드 다운로드로, 또는 분할합니다.[2]
207 다중 상태 (WebDAV를) (4918은 RFC)
시체가 다음 메시지는 XML을 메시지와 만들어진 하부에 따라 얼마나 많은 요청, 코드 응답 수가 포함된 숫자를 별도의. [ 4]

[이편집]3xx 리디렉션을

클라이언트가 요청을해야 받아 완료하기 위해 추가 조치를.[2]

상태 코드의이 클래스는 요청을 나타냅니다 앞으로의 이행 명령이 동작이 필요하기 위해 취해졌 사용자 에이전트에 의해. 작업이 필요한 있습니다 머리 또는 GET 두 번째 요청에 사용되는 방법은 경우 사용자 에이전트 상호 작용하지 않고 전용하고 사용자에 의해 수행하면 아웃. 사용자 에이전트는 하지 말아야 자동으로 리디렉션 번 이상 요청이 다섯 이후로 이러한 리디렉션에 따르면 일반적으로 무한 루프.

300 여러 선택
클라이언트가 있습니다 다음을 나타냅니다 여러 옵션에 대해 해당 리소스. 그것은, 예를 들면, 비디오에 대한 옵션을 다른 형식 사용하는 현재의 수도와 다른 파일 목록을 확장하거나,단어의 의미 모호성 해소.[를2]
301 영구 이동
이것은 모든 미래의 요청이로 이동해야하는 주어진 URI를.[2]
302 찾을 수 없음
이 코드는 가장 인기있는 리디렉션[국가인용 필요]를,뿐만 아니라 표준을 어기 예제 연습 산업.[2] 1.0 사양은 RFC (1945 년)라는 문구가 필요한 설명 원본 클라이언트를 위해 수행하는 임시 리디렉션 (는 "이사 일시적으로 "),[5] 하지만 많이 사용되는 브라우저의 다른보기 303의 기능을 구현 302을합니다. 따라서,이 행위는 HTTP/1.1 추가 상태 코드 303과 307 사이의 두들에게로 구별. 응용 프로그램 및 상태 코드가 302 프레임 워크를 아직 사용으로 303 만약 있던 웹의 그러나 대다수는[6].
303 기타 참조 (는 HTTP/1.1 이후)
요청에 대한 응답이 다른 아래에서 찾을 수 있습니다 URI는 방법을 사용하여 얻게. 언제 올려에 대한 응답으로받은 그것은 메시지가 GET 별도의 그럴만도 가정으로 리디렉션해야 될 발행 및 데이터 취득이 서버가.[2]
수정되지 않음 304
나타냅니다 리소스가 요청된 이후 마지막으로 수정되었습니다 없습니다.[를2]을 일반적으로 HTTP 클라이언트가 어떤 비교에 대해 제공하는 헤더를 같이하지 않는다면 시간을 제공 - modified 헤더 이후. 서버 활용 저장이 대역폭과 서버 및 재처리에 모두 고객이 될 수로에만해야 데이터가 헤더 전송하여 처리 -하고 다시 비교 및 접수에 페이지 전체의 다음 클라이언트 전송과 서버의 다시 사용하는 더 많은 대역폭을 .
305를 사용하여 프록시 (는 HTTP/1.1 이후)
클라이언트 (예 : 다수의 HTTP 모질라[7] 와 인터넷 익스플로러)의 보안 않는 이유에 대해 주로 답변을하지 제대로 처리와 코드,이 상태.[2]
306 전환 프록시
아니이 더 이상 사용.[2]
307 임시 리디렉션 (는 HTTP/1.1 이후)
상황에서이, 요청이 있지만, URI를 반복해야 될 또 다른 미래를 요청 URI를 수있는 원본 여전히 사용.[2]을 303와는 대조적으로, 요청 메서드가 요청을 원래의 재발행해야 할 때 않다 변경되었습니다. 예를 들어, POST 요청은 요청을 게시할 수의 또 다른 사용되어야 반복.

[이편집]4xx 클라이언트 오류

의 상태 코드 클래스는 4xx 벗어난 것이며 만들어진 것입니다 경우를 위해있는 것 같아 클라이언트가. 요청에 머리를 제외하고 응답을 때, 서버는  조건 상황, 영구 임시이며 여부 또는 포함 엔티티를 포함하는 오류 설명을의. 이러한 상태 코드는 요청을 어떤 방법입니다 적용합니다. 사용자 에이전트가  사용자에게 표시되는 엔티티를 어떤 포함되어 있습니다. 이들은 코드가 들어있다 일반적으로 가장 일반적인 오류가 발생하는 동안 온라인으로.

400 잘못된 요청
요청이 구문이 잘못으로 인해 실현될 수 없습니다.[2]
401 비인증
마찬가지로 403 금지됨지만, 특별히 위해서 사용하는 경우는 인증이 가능한 또는 실패했습니다 아직 제공되지되었습니다.[2] 응답은 리소스를 요청해야합니다 등에서 WWW - 인증 헤더의 필드에 적용할 수있는 도전. 보기 기본 액세스 인증 및 다이제스트 액세스 인증.
402 지불 필요
사용하는 미래의 소유입니다.[2] 원래 의도는 중 몇몇이 양식의 일부로 사용 일 수도 코드는 디지털 현금 또는 micropayment의 음모,하지만 그런 일은하지 않은, 그리고이 코드는 일반적으로 사용됩니다 없습니다. 사용의 예제로서,하지만, Apple의 MobileMe 정보 서비스 : ( "httpStatusCode 생성하는 402 오류 402"로그에 Mac OS X에서 콘솔) 체납하면 MobileMe 계정 정보입니다.
403 금지됨
요청했지만 법적인 요청, 서버는 그것에 응답할 거부하고 있습니다.[2] 달리 401 무단 응답, 인증 차이가 안납니다.[를2]
404 찾을 수 없음
요청한 리소스가 있지만 발견하지 못했습니다 미래 수도 있습니다에 다시 사용할 수.[2] 클라이언트에 의해 후속 요청을 허용하고 있습니다.
405 허용되지 않는 방법
요청이 리소스 그 중 만든하여 리소스를 사용하여 지원되지 않는 메서드를 요청;[2] 예를 들어, 리소스 전용 - 읽기 사용에 관한 때 GET 투입 사용하거나 데이터에 대한 양식을 필요로 할 제시를 통해 게시할 수 있습니다.
406 허용되지 않음
요청한 리소스가 요청하지 콘텐츠를 생성하는 유일한 능력에 따라 허용 전송 헤더를 적용합니다.[를2]
407 프록시 인증 필요[2]
408 요청 시간 초과
서버가 요청을 기다리는 시간이 초과되었습니다 아웃.[2]는 사양의 HTTP 따르면 W3 : "클라이언트가 기다릴 준비를 서버가되었습니다 않았어요 생산 요청을 시간 내에. 고객은 5 시간 이후에 수정없이 반복 요청을. "
409 충돌
나타냅니다 요청이이 같은, 때문에 처리할 수없는 충돌에서 요청 갈등을 수정.[2]
410 사라짐
나타냅니다 그 리소스를 요청하고 더 이상 사용할 수 다시 사용할 수 없습니다.[2] 이것은 제거 의도되었습니다 그럴만도 사용한 리소스가하면되지만, 그럴 필요는 없습니다 그리고이 코드로 돌아갑니다 404 찾을 대신 교부받을 수 있습니다 . 그러나되는 코드와 같은 페이지 상태에도 불구하고 가장 일반적인 404 찾을 수 없습니다410 가버 을 포함하여, 서버를 사용하여 몇 가지 아직도 지오시티. 코드를 수신 상태시 410, 클라이언트는 미래의 리소스를 다시해야되지 않도록 요청. 클라이언트와 같은 검색 엔진이 색인에서 자신의 리소스를해야 제거할 수 있습니다.
411 길이 필요
요청이 리소스 요청에 의해 요구되는 콘텐츠, 한 자사의 길이를 지정할 수 없습니다. [2]
412 사전 조건 실패
서버가 요청에 투입하지 않는 만족 중 하나를 requester는 그 전제 조건.[2]
413 요청 속성이 너무 큼
요청 과정에보다 큰 서버의 의지 또는 수있다.[를2]
414 - 요청 URI가 너무 긴
URI는 제공하는 과정은 서버에 대한 오래도.[를2]
415 지원되지 않는 미디어 유형
요청 엔터티가있다 미디어 유형을 서버 또는 리소스가 지원하지 않습니다. [2]대로 에 대한 예제는 클라이언트 이미지를 업로드 이미지 / XML을는 SVG +,하지만 서버가 형식을 필요로 서로 다른 이미지를 사용합니다.
416 처리할 않음 범위 요청
클라이언트는하지만,이 부분에 대한 요청이 파일 서버가 그 부분을 공급할 수 없습니다.[2]를 예를 들어, 파일이있는 경우의 끝 너머 클라이언트가 파일을 부분 요청합니다.
417 예상 실패
서버 필드 헤더를 - 기대 요청할 수있는 충족 요건을 수 없습니다.[2]
418 나는 주전자예요
이 코드는 전통 중 하나 정의된 는 IETF 만우절 '농담, 안에 는 RFC 2324하이퍼 텍스트 커피 주전자 제어 프로토콜및 서버의 HTTP 실제에 의해 구현되어야하는 것입니다 않을 것으로 예상.
422 Unprocessable 법인 (WebDAV와) (4918은 RFC)
잘 구성된 요청했지만 없습니다 오류가 의미 론적로 인해 다음을 수 있습니다.[4]
423 옥내 (WebDAV와) (4918은 RFC)
액세스되고있다 리소스가 고정되었습니다 [4]
424 실패 종속성 (WebDAV와) (4918은 RFC)
요청은 예 (요청 이전에 실패로 인해 실패 PROPPATCH).[4]
425 순서없는 컬렉션 (3648은 RFC)
의 초안에 정의된 "WebDAV를 고급 컬렉션 프로토콜",[는8] 아니지만 웹 "에있는"분산 제작 프로토콜 및 버전 관리 (WebDAV와) 리라고 명령 모음.[9]
426 업그레 이드 (필수는 RFC 2817)
클라이언트가 같은해야 스위치에 다른 프로토콜 TLS/1.0.[10]
449가와 다시 시도
MS의 확장. 요청이 적절한 조치를하고 이후에해야 될 시도.[11]
450 자녀 보호 Windows에 의해 차단된
MS의 확장. 이 오류는 웹페이지 주어집니다 부여하면 Windows 설정된 컨트롤은 부모에 대한 액세스를 차단하고 있습니다.[12]

[이편집]5xx 서버 오류

서버가 요청을 유효한 분명히 실패로 실현.[2]

대응 상태 코드는 "5 시작과 함께 자리"요청을 사례를 나타냅니다에 어떤 수행하는 서버가있다는 인식하고있어서의 능력이 다르게입니다 오류 또는. 요청에 머리를 제외하고 응답을 때, 서버가 있어야 포함 상황의 설명을 엔티티를 포함하는 오류 및 상태 표시 여부를 상설 그것은 임시 또는. 마찬가지로, 사용자 에이전트가  모든 디스플레이는 사용자에게 포함된 엔터티를.이러한 응답 코드는 모든 방법을 요청하는 해당합니다.

500 내부 서버 오류
보다 구체적인 메시지는 적합도 일반적인 오류 메시지가 주어진 경우.[2]
501 구현되지 않음
서버는 두 방법을 요청하지 않습니다 인식, 또는 요청이 부족하다 성취 능력을합니다.[2]
502 불량 게이트웨이
서버가 프록시 또는 게이트웨이되었습니다 행동으로와 업스트림 서버에서 응답을 받았습니다 잘못되었습니다.[2]
503 서비스를 사용할
서버가.는 현재 사용할 수 없습니다 (때문인데, 그것은 과부하 또는 유지 보수)[를2]을 일반적으로, 이것은 일시적인 상태입니다.
504 게이트웨이 시간 초과
서버 및 프록시 게이트웨이되었다 연기로 또는 서버 상류에서 적시에 응답을 안받을 수 있습니다.[2]
505 HTTP 버전이 지원되지 않음
서버가 요청에 지원하지 않습니다 사용된 버전을 HTTP 프로토콜.[2]
506 변종 또한 (협상은 RFC 2295)
투명 콘텐츠 협상 요청, 결과적으로 순환 참조.[이13]
507 부족 스토리지 (WebDAV와) (4918은 RFC)[4]
509 대역폭 한도 초과 (아파치 뷔 템 베르크 / 한정 확장)
이 상태 코드는, 많은 서버에서 사용하는 반면, 어떤 RFC는 지정되지 않습니다.
510 (확장 않음은 RFC 2774)
요청에 더 확장이 그것을 이행하기위한 필요한 서버.[14]

'참고자료' 카테고리의 다른 글

OSI 7계층  (0) 2010.08.17
세션아이디  (0) 2010.08.15
GNU 정의  (0) 2010.08.05
리눅스 mdsn  (0) 2010.07.05
OpenGL과 Direct3D  (0) 2009.10.11

GNU는 GNU is Not Unix라는 의미의 재귀적 약어이다. 

GNU 프로젝트는 GNU 시스템이라고 불리우는 유닉스 형태의 자유소프트웨어 운영체제를 만들 목적으로 1984년에 시작되었다. 

GNU는 1990년대초까지 새로운 운영체제를 만들고 있었고, 이 운영체제를 뒷받침할만한 소프트웨어들을 만들어내고 있었다. C 컴파일러, 어셈블러와 디버그, 고스트 스크립트와 본쉘 등... 이러한 프로그램들을 만들어내는것이 GNU 프로젝트가 아니라 GNU 프로젝트(유닉스 형태의 자유소프트웨어 운영체제를 만드째?를 완성하기위해서 이러한 프로그램들이 필요했기때문에 만들어진 것이다. 

이 과정에서 리누스 토발즈에 의해 Linux Kernel이 완성되었고, Linux Kernel이 GNU 프로젝트에 합류함으로써 하나의 완성된 운영체제를 구성하게 된 것이다.

GNU 프로젝트는 소프트웨어의 상업화에 반대해 프로그램을 자유롭게 사용하도록 하자는 운동으로 리눅스는 바로 그 대표적인 성과물.

그가 학생이었던 70년대까지만 해도 모든 연구자들은 자신이 개발한 소프트웨어를 공유했으며 컴퓨터회사들 역시 자체 개발한 소프트웨어를 배포했고 프로그래머들은 아무런 제약없이 정보를 나눠 가졌다. 그러나 80년대 들어서면서 소프트웨어에 대한 소유와 독점을 보호하는 법률로 인해 이런 분위기는 사라졌고 특히 마이크로소프트 등 기업에 의한 소프트웨어 독점은 정도를 더해갔다. 

스톨먼은 바로 이러한 소프트웨어 상업화에 반대하고 소프트웨어 개발 초기의 상호협력적인 문화로 돌아갈 것을 주장하며 84년 유닉스의 공짜 버전인 GNU를 만들어 배포했다. 85년에는 FSF를 조직, 「소프트웨어는 공유돼야 하며 프로그래머는 소프트웨어로 돈을 벌어서는 안된다」는 내용의 GNU 선언문을 제정하기도 했다. 이후 이 선언문이 전 세계 리눅서들과 해커들의 열렬한 지지를 얻으면서 스톨먼은 리눅서들의 정신적 지주 역할을 하게 됐다. 

또한, 스톨먼은 GNU 정신의 효율적인 계승을 위해 카피레프트 운동도 주창했다. 소프트웨어는 사회의 공적인 재산이므로 공공의 이익을 위해 쓰여져야 하고 이를 위해 프로그램의 소스코드에 누구든 자유롭게 접근하고 공유할 수 있도록 하자는 것이 카피레프트의 정신. 이 운동은 사용자들의 기금을 받아 소프트웨어를 생산하는 방식을 통해 생산자와 사용자간의 연대를 모색하고 있다. 한편 FSF는 1년에 두 번 GNU 게시판을 통해 프로그램의 개발 현황과 GNU 프로젝트 참여자 및 FSF에 기금을 낸 단체를 밝히고 있으며 지적소유권에 반대하는 내용의 온라인북도 발간하고 있다.

출처 : 네이버 지식인

GNU 프로젝트 (GNU project, 그누 프로젝트)는 리처드 스톨만이 완전한 공개 운영 체제인 GNU 시스템을 만들기 위한 목적으로 시작했다. 이 프로젝트는 1983년 9월 27일 유즈넷 net.unix-wizard 그룹을 통해 일반에 알려졌다. 스톨만은 첫 선언문에 이은 "GNU 선언문"을 비롯한 여러 글들을 통해서, "초기 전산 공동체에 지배적이었던, 협동 정신을 되돌리자"라고 주장했다.

GNU는 "GNU는 유닉스가 아니다."란 의미를 갖는 영어 문장 "GNU's Not UNIX"의 약자로, 원래의 문장 안에 자신이 이미 들어 있는 재귀 약자이다. 스톨만은 GNU를 그누로 읽자고 제안한다. 유닉스는 이미 널리 쓰이던 독점 소프트웨어운영 체제로, 유닉스의 아키텍처는 기술적으로 믿을만 한 것으로 증명되어 있어, GNU 시스템은 유닉스와 호환될 수 있도록 만들어졌다. 유닉스 아키텍처는 개별적인 요소들이 따로 따로 작성되는 것을 허용한다. 또, 이미 공개되어 있던 조판 소프트웨어 텍(TeX)이나, X 윈도우도 쓸 수 있는 장점이 있었다.

GNU 프로젝트는 누구나 자유롭게 "실행, 복사, 수정, 배포"할 수 있고, 누구도 그런 권리를 제한하면 안 된다는 사용 허가권(License) 아래 소프트웨어를 배포한다. 카피레프트로 불리는 이런 생각은 GPL(GNU 일반 공중 사용 허가서)에 나타나 있다.

1985년에 스톨만은 GNU 프로젝트를 철학적, 법률적, 금융적으로 지원하기 위해 자선단체인 자유 소프트웨어 재단(FSF, Free Software Foundation)을 세웠다. 이 재단은 GNU를 개발할 프로그래머들도 고용했다. 그러나, 프로젝트의 대부분은 자원 봉사자들이 개발했으며, 앞으로도 그럴 것이다. GNU가 눈길을 끎에 따라, 이를 주목한 회사들은 GNU 소프트웨어의 개발이나 판매 및 기술 지원을 돕기 시작했다. 이 가운데 가장 두드러지고 성공적인 것은 (현재는 레드햇의 일부인) Cygnus Solutions이다.

1990년까지, GNU 시스템엔 확장 가능한 문서 편집기(이맥스), 뛰어난 최적화 컴파일러(GCC), 그리고 표준 유닉스 배포판의 핵심 라이브러리와 유틸리티가 있었다. 하지만, 여기엔 주요 구성요소인 커널이 빠져 있었다.

GNU 선언문에서, 스톨만은 "기본적인 커널은 있지만 유닉스를 흉내내려면 아직 더 많은 기능이 필요하다"라고 했다. 여기서 그가 지칭한 것은 MIT에서 개발하여 자유롭게 배포했고, 유닉스 7번째 판과 호환되는 TRIX라는 원격 작업 호출 커널(remote procedure call kernel)이었다. 1986년 12월, 이 커널을 고치는 작업이 시작됐다. 하지만, 개발자들은 결국 TRIX를 기반으로 새 커널을 만드는 것은 어렵다는 결론을 내렸다. 주된 이유는 TRIX는 "애매하고(잘 안 쓰이고?) 비싼 68000 box"에서만 동작했고, 따라서 그 상자에서 쓰이기 전에 다른 구조로 옮겨야(ported) 했기 때문이다. 1988년 즈음에, 카네기멜론 대학교에서 개발되던 Mach 통신-전송 커널(Mach message-passing kernel)을 그 대체품으로 고려했지만, 이것은 처음에 이것을 개발한 사람들이 AT&T 소유의 코드를 지우면서 지연되었다. 처음엔, 이 커널은 Alix라고 불렸지만, 나중에 개발자 Michael Bushnell는 HURD라는 이름을 선호하여, Alix란 이름은 하부 구조로 옮겨지고 마침내 완전히 떨어졌다. 결국은, HURD의 개발은 기술적이고 개인적인 충돌로 지지부진해 지고 말았다.

1991년에 리누스 토르발스는 유닉스 호환의 리눅스 커널을 작성하여 GPL 라이선스 아래에 배포했다. 다른 여러 프로그래머들은 인터넷을 통해 리눅스를 더욱 발전시켰다. 1992년 리눅스는 GNU 시스템과 통합되었고, 이로서 완전한 공개 운영 체제가 탄생되었다. GNU 시스템들 가운데 가장 흔한 것이, "GNU/Linux" 또는 "Linux 배포판"이라고 불리는 바로 이 시스템이다. (2003년 기준으로, 허드(HURD)는 여전히 개발 중이며, 리눅스를 대신하여 허드를 사용한 GNU 시스템을 비공식 실험판으로 사용할 수 있다.)

또한, 비공개 유닉스 시스템에도 GNU의 구성 요소들이 오리지널 유닉스 프로그램을 대신하여 들어 있는 경우도 많다. 이는 GNU 프로젝트를 통해 쓰여진 프로그램들이 질적으로 우수하다는 사실을 증명하는 것이다. 종종, 이런 구성요소들은 "GNU 툴"로 불리기도 한다. 다수의 GNU 프로그램은 마이크로소프트 윈도나 맥 오에스 텐 등으로 포팅되기도 했다.


출처 : 위키백과


'참고자료' 카테고리의 다른 글

OSI 7계층  (0) 2010.08.17
세션아이디  (0) 2010.08.15
HTTP 상태 코드 목록  (0) 2010.08.15
리눅스 mdsn  (0) 2010.07.05
OpenGL과 Direct3D  (0) 2009.10.11


OpenGL

OpenGL은 Windows NT 기반 하에서 그래픽 카드를 직접 제어하는 표준 인터페이스를 의미한다. 미국
실리콘그래픽스(Silicon Graphics)사의 기술을 발전시켜 업계의 표준이 된 그래픽에 관한 기술이다.
다양한 워크스테이션을 지원하고 특수한 하드웨어를 사용하면 매우 빠른 속도를 보여 기계구조,건축분야의 CAD 및 애니메이션, 모의실험에 널리 채용되고 있다. 80년대 실리콘그래픽스 자사의
이리스 웍스테이션에 사용되던 이리스 GL(IRIS GL)이 명성을 얻게 되자 이를 다른 회사의 제품에도
적용시키기 위해서 1992년 개발한 것이다.

윈도우 98/95에서의 Direct-X보다 훨씬 포괄적인 개념을 담고 있으며, 3D지원에 있어서도 향상된
알고리즘을 제공하므로, 향후 Direct-X를 대체할 것이라는 평가를 받고 있다. 현재로서는 OpenGL에
대한 그래픽 카드 제조업체의 지원은 상당히 미약한 수준으로서 OpenGL을 지원하는 제품들은 거의
프로토 타입의 시제품 수준에 그치고 있는 형편이다. 최근 윈도우 98/95에서 OpenGL을 사용하려는
노력이 이루어지고 있으며, AGP 버스의 보급과 함께 기대되는 기술이다.

SGI, MS, IBM, HP, 인텔, 컴팩 등이 참여하고 있는 OpenGL ARB(Architecture Review Board)에서
주기적으로 표준을 개정하고 있다. 1999년 OpenGL은 1.2까지 개정되어 있다. 사용되는 운영체제로는
유닉스, 윈도우 9x, 윈도우 NT, 맥 OS, 리눅스, OS/2 등이다.그래픽 어플리케이션 용도에 맞게 특화된
OpenGL의 상위 라이브러리가 있는데, 다음과 같다.

① Open Inventor: 3D 그래픽 어플리케이션을 위한 객체 지향형 도구로서, 3D 데이터 교환을 위한
형식을 지원한다.
② IRIS Performer: 실시간 비주얼 시뮬레이션을 위한 그래픽 라이브러리로서 SGI 시스템에서
React와 함께 사용된다.
③ OpenGL Optimizer 는 CAD처럼 대규모의 데이터를 처리하여 영상으로 보여줄 때 사용되는 도구와 기능을 제공한다.
④ OpenGL Volumizer는 병원의 MRI 및 CT 영상과 같이 체적에 대한 큰 영상을 처리할 때 사용되는 기능과 도구들의 집합이다.

Direct3D

마이크로소프트사가 만든 게임 전용 API로, 가장 보편적으로 많은 게임업체에서 이를 지원하고 있다. Direct3D는 Direct-X 컴포넌트 중 하나로 다양한 3D 효과를 게임에서 구현하는 역할을 한다.

Direct3D의 주요 장점은 속도이다. Direct3D의 전체 API와 그 드라이버들은 인텔
MMX 아키텍쳐, 인텔 스트리밍 단일 명령 다중 데이터(Intel Streaming Single-Instruction
Multiple-Data, SIMD) 확장(SSE) 과 AMD 3DNow 아키텍쳐를 지원하는 등 상당히
최적화되어 있다. 뿐만 아니라, DirectX는 이제 마이크로소프트 Windows에 기본적으로 포함되어 있어 별도 설치가 필요 없을 뿐 아니라, 각 그래픽 카드 제조사들이 우선적으로 지원하고 있다.

 

 

▶ DirectX 란?
다이렉트X는 기존의 그래픽카드만을 위한 규격인 DCI(Display Control Interface)의 단점을 보완하여, 그래픽카드/사운드카드/입출력장치 등의 주요 주변기기를 응용 프로그램이 직접 제어할 수 있게 인텔과 마이크로소프트가 제정한 종합 가속표준입니다. 윈도우가 대부분의 컴퓨터에서 사용되면서 게임도 윈도우용으로 제작되고 있습니다. 하지만, 초기에 제작된 대부분의 게임은 윈도우3.1에서 사용된 WinG라는 게임 라이브러리를 사용하여 제작되었습니다. 그런데 WinG라는 것으로는 화려하고 박진감 넘치는 게임을 제작하기에는 한계가 있습니다. 즉, 대부분의게임에서 많이 필요로 하는 빠른 화면 전개가 불가능하다는 단점이 있습니다. 도스용 게임의 경우 게임 자체가 시스템의 하드웨어를 제어하기 때문에 좀더 빠르고 박진감있게 제작할 수 있었지만, 윈도우에서는 윈도우가 자체적으로 시스템을 관리하므로 응용 소프트웨어의 하드웨어 접근을 불허하기 때문입니다.
따라서 하드웨어를 직접 제어할 수 없는 WinG로는 도스용 게임만큼의 제작이 불가능하다는 한계가 있습니다. 마이크로소프트사는 게임이 컴퓨터에서 차지하는 비중이 매우 크다는 것을 잘 알고 있기 때문에, 윈도우 사용자를 늘리기 위해 정책적으로 윈도우에서 직접적으로 하드웨어를 제어할 수 있게 해주는 라이브러리를 만들려고 노력했습니다. 그러한 노력 끝에 탄생한 것이 바로 다이렉트X 1.0입니다. 다이렉트X는 사용자들의 시스템이 발전함에 따라 계속 버전 업이 이루지고 있습니다.


▶ DirectX 규격
다이렉트X는 마이크로소프트가 윈도우상에서 멀티미디어 환경을 구현하기 위해서 제안한 소프트웨어 처리 규격이며, 프로그래머와 사용자가 응용 프로그램을 작동시키기 위한 API(Application Programmer Interface)규격입니다. 하드웨어적인 처리 규정은 주변장치 제조업체에게 맡깁니다.

1) DirectDraw

다이렉트 드로우는 2D(평면 그래픽)를 담당하는 라이브러리로 선/점/면과 같은 도형의 표현은 물론, 더블 버퍼링, 컬러마스킹 & 컬러필터링, 스프라이트, 늘리기, 윈도우 등에 대한 각종 고급함수에 대한 통일된 규격입니다. 주로 2D로 제작된 게임에 사용됩니다. 다이렉트 드로우는 비디오 카드의 메모리를 직접 조작하거나 하드에어적인 비트블릿(Bitblit)을 수행하고 오버레이와 페이지 플리핑 같은 기능을 프로그램이 직접 실행할 수 있게 해 줍니다. 결과적으로 더 나은 성능의 그래픽 가속 기능을 얻을 수 있습니다. 쉽게 말해서 게임이나 고속으로 하드웨어를 제어하기 위한 개발툴 또는 라이브러리라고 생각하면 된다.

2) Direct3D

다이렉트 3D는 3차원 그래픽에 사용되는 라이브러리로 렌더링/쉐이딩/텍스처링/3차원 변환/필터링 등에 관한 각종 규격을 담고 있습니다. 3D 그래픽 카드는 다이렉트 3D를 직접 지원하여 더 빠르고 멋진 그래픽을 보여줍니다. 특히 전용 그래픽 3D 하드에어가 없어도 소프트웨어적으로 3D을 강화시켜 줍니다. 물론 3D 그래픽 하드웨어가 있으면 최적의 기능을 발휘할 수 있습니다.

3) DirectVideo

인텔의 AVI 파일 포맷을 기반으로 하는 동영상 처리에 관한 통합규격입니다. AVI 이외에도 MPEG 동영상 포맷을 윈도우에서 처리하기 위한 규격도 포함하고 있습니다.

4) DirectSound

다이렉트 사운드는 사운드 부분을 담당하는 라이브러리로 사운드카드의 직접 제어를 위한 규격입니다. 웨이브 테이블 미디와 9채널의 wave 믹서로 구성되어 있으며, CD 수준의 음질인 44.1KHz까지 지원합니다. 기존의 윈도우에서는 wave 방식으로는 한 번에 한 개의 소리밖에 출력할 수 없지만, 웨이브 테이블 미디와 wave방식의 음성을 동시에 출력할 수 있습니다. 다이렉트 사운드는 사운드 카드의 버퍼와 직접 데이터를 주고 받음으로써 사운드 카드의 사운드 채널을 직접 제어합니다. 따라서, 고음질이면서도 지연이 거의 없는 사운드와 믹싱 기능을 제공하며 윈도우용 게임에서 현실감 있는 사운드를 재생해 냅니다.

5) DirectInput

입출력 장치의 제어를 위한 규격으로, 주로 조이스틱/게임패드에 대한 입력 규격입니다. 상대포인터/절대포인터/상대변위포인터 등에 대한 통합규격입니다. 느린 속도로 작동하는 입출력 장치들을 안정적으로 사용하기 위해 개발되었습니다. 2차원 입력장치인 마우스는 물론 각종 3차원 입력장치에 대한 응용도 가능하도록 되어 있습니다.

6) DirectPlay

다이렉트 플레이는 네트웨크에서 여러 사용자가 동시에 게임을 할 수 있도록 만들어진 것입니다. 다이렉트 플레이 객체와 다이렉트 플레이 서버로 구성됩니다. 다이렉트 플레이 객체의 통신 대상은 게임이고, 다이렉트 플레이 서버가 모뎀이나 랜의 네트워크 연결을 담당합니다. 다이렉트 플레이는 단일 인터페이스를 제공함으로써 네트워크 게임 제작사가 네트워크 관련 부분을 개발할 필요가 없도록 만들었습니다.

'참고자료' 카테고리의 다른 글

OSI 7계층  (0) 2010.08.17
세션아이디  (0) 2010.08.15
HTTP 상태 코드 목록  (0) 2010.08.15
GNU 정의  (0) 2010.08.05
리눅스 mdsn  (0) 2010.07.05

+ Recent posts