교재 : 컴퓨터 과학 총론 (13th Edition)
(배운 내용을 책으로 복습하며 작성한 글입니다. )
1. 네트워크 기초
- 네트워크 (network) : 컴퓨터 간에 데이터를 전송할 수 있도록 컴퓨터 시스템들을 연결하는 것
- 응용을 지원하기 위해 필요한 하부 소프트웨어는 간단한 유틸리티 패키지에서 복잡한 네트워크 차원의 인프라를 제공하는 네트워크 소프트웨어 시스템으로 발전하였다.
1) 네트워크의 분류
- 네트워크의 크기(통신 간의 거리)
(1) 개인 통신망 (Personal Area Network ; PAN) : 수 미터 이내의 짧은 거리의 통신
(2) 근거리 통신망 (Local Area Network ; LAN) : 하나의 건물이나 건물 군 안의 컴퓨터들로 이루어짐
(3) 광역도시 통신망 (Metropolitan Aread Network ; MAN) : 지역 공동체 정도의 지역에 걸친 중간 크기의 네트워크
(4) 원거리 통신망 (Wide Area Network ; WAN) : 이웃도시나 지구의 반대편 등에 있는 컴퓨터들과 같이 보다 먼 거리의 컴퓨터
- 네트워크 내부운영의 기초
(1) 개방형(open) 네트워크 : 네트워크의 내부 운영이 공적 영역에 있는 설계에 기초 ex) 인터넷
(2) 폐쇄형(closed) / 사적 소유(proprietary) 네트워크 : 네트워크의 내부 운영이 개인이나 기업이 소유하고 통제하는 기술에 기초
- 네트워크 토폴로지(topology / 컴퓨터들이 연결되는 패턴)에 기초
(1) 버스(bus) 토폴로지 : 컴퓨터들을 버스라고 불리는 공통 통신회선에 연결
- 이더넷(Ethernet) : 1990년대에 많이 보급된 표준으로 구현된 버스 토폴로지
- 최근의 고속 이더넷은 물리적으로 는 스타 토폴로지로 연결되지만 논리적으로 버스 토폴로지처럼 동작한다.
- 버스 네트워크가 허브(hub)라는 장치를 가운데 두고 각각의 컴퓨터를 허브에 링크로 연결하여 구축할 수 있다.
(2) 스타(star) 토폴로지 : 컴퓨터들을 중심점 역할을 하는 한 컴퓨터에 연결
1970년대로 거슬러 올라가며, 다수의 사용자에 서비스를 제공하는 대형 중앙 컴퓨터 패러다임에서 진화하였다.
스타 방식 구성은 주변의 통신을 조정하는 구심점의 역할을 AP(access point)라 불리는 중앙 장치와 무선 방송 방식을 이용하는 이용하는 무선 네트워크에서 많이 사용한다.
2) 프로토콜
- 프로토콜 (protocol) : 네트워크가 신뢰성 있게 기능하기 위해 확립한 활동을 수행하기 위한 규칙
- 프토토콜 표준의 개발은 네트워크 기술의 발전에 필수불가결한 과정이다.
- 이더넷 표준에 기초한 버스 네트워크에서는 메시지를 송신할 권리가 CSMA/CD(Carrier Sense, Multiple Access with Collision Detection) 라는 프로토콜에 의해 제어된다.
- 각각의 메시지를 버스 상의 모든 컴퓨터에 방송되도록 한다.
- 각 컴퓨터는 모든 메시지를 감시하지만 자신을 목적지 주소로 하는 메시지만 취한다.
- 메세지를 송신하기 위해 컴퓨터는 버스가 조용해질 때까지 기다렸다가 메시지를 송신하는데, 송신 중에도 계속 버스를 감시한다.
- 다른 컴퓨터도 송신을 시작한다면 두 컴퓨터 모두 충돌을 탐지하게 되어 잠시 동안 송신을 멈추는데, 멈추는 기간은 컴퓨터마다 난수를 사용하여 각기 다르게 정한다.
- 모든 컴퓨터들이 중앙의 AP를 통해 통신하는 무선 스타 네트워크에는 맞지 않는다. (무선 네트워크상에서 컴퓨터는 자신의 송신 행위가 다른 컴퓨터의 송신 행위와 충돌하는지 여부를 탐지할 수 없기 때문이다.)
- 중앙의 AP를 통해서는 통신이 가능한 여러 컴퓨터가 방해물이나 거리 때문에 직접 상대의 신호를 들을 수 없는 환경도 CSMA/CD를 사용할 수 없다. (은폐 단말기(hidden terminal) 문제)
- 무선 네트워크는 충돌을 탐지하는 정책 대신 충돌을 피하는 정책을 채택하고 있다. (충돌 회피 프로토콜들은 충돌을 피하도록 설계되어 있지만 충돌을 완전히 제어하지는 못한다.)
- 충돌 회피를 위한 가장 보편적인 방식 : 송신 기회를 기다리고 있는 컴퓨터에 우선권을 주는 방안을 이용하는 것
- 이더넷의 CSMA/CD와 비슷하다. (다만 처음 메세지를 송신하고자 하는 장치는 통시 채널이 쉬고 있음을 확인했다고 해서 곧바로 송신을 시작하지 않는다.)
- 각 장치가 다른 신호를 들을 수 있어야 하기 때문에 은폐 단말기 문제를 해결하지는 못한다.
- 위 문제를 해결하기 위해 어떤 WiFi 네트워크애에서는 각 장치가 AP에 짧은 요청 메시지를 보낸 다음 전체 메시지를 송신하기 전에 그 요청에 대해 AP로부터 승인 메시지를 기다리도록 요구한다.
- 네트워크상의 모든 장치들은 진행되는 전송 자체를 들을 수는 없지만, AP로부터의 승인 신호를 들을 수 있으며 특정 시간에 AP가 바쁜지 여부를 파악할 수 있다.
3) 네트워크의 결합
- 리피터(repeater) : 두 개의 버스 사이에서 신호의 의미에는 상관하지 않고 신호를 전달하기만 한다. (신호 증폭 기능)
- 브리지(bridge) : 두 개의 버스를 연결하지만, 각 메시지의 목적지 주소를 봐서 브리지 반대편의 컴퓨터로 향하는 메시지만 연결을 건너가게 한다. 따라서 통신을 방해하지 않고 두 컴퓨터는 메시지 교환이 가능하다.
- 스위치(switch) : 여러 연결점을 갖는 브리지
- 리피터, 브리지, 스위치 등을 이용하여 네트워크를 연결하면 하나의 더 큰 네트워크가 만들어진다.
- 연결되는 네트워크들이 호환되지 않는 특성을 가지고 있을 수 있다.
- 인터네트워크 (internet) : 네트워크들이 네트워크의 네트워크를 구축하는 방식으로 연결된다.
- 인터네트워크를 구축하기 위해 두 개의 네트워크를 연결할 때 라우터(router)라는 장치를 사용한다.
- 라우터는 메시지 전달에 사용되는 특별한 용도의 컴퓨터이다.
- 라우터가 각 네트워크의 고유한 내부적 특성을 유지시켜주면서 네트워크 사이를 연결한다.
- 먼 곳의 네트워크상의 컴퓨터에 메시지를 전송하고자 하는 컴퓨터는 목적지의 인터네트워크 주소를 메시지에 덧붙인 다음 그 메시지를 자체 라우터에 보내면, 라우터는 그 메시지를 적절한 방향으로 전달한다.
- 메세지 전달을 위해 라우터는 메시지들을 목적지 주소에 따라 전달할 방향에 관한 정보를 담고 있는 전달 테이블(forwarding table)을 유지한다.
- 게이트웨이(gateway) : 네트워크가 인터네트워크에 연결되는 지점
4) 프로세스 통신 방법
- 프로세스 간 통신 (interprocess communication) : 다양한 프로세스들이 함께 동작을 조정하거나 지정된 작업을 수행하기 위해 하는통신
① 클라이언트/서버 모델 : 프로세스들이 수행하는 역할을 클라이언트와 서버로 규정한다.
- 클라이언트(client)는 다른 프로세스에게 무엇인가를 요청하며, 서버(server)는 클라이언트의 요청을 들어준다.
② P2P (peer-to-peer) 모델 : 서로 서비스를 주고받는 프로세스들이 관여되어 있다.
- 통신하는 두 프로세스는 필요할 때만 일시적으로 실행된다.
- 서비스를 하나의 서버에 집중시키는 대신 여러 개체에 분담시킨다는 점이며, 중앙 운영 거점이 없어짐으로 인해 효율적인 시스템이 되었다.
5) 분산 시스템
-분산 시스템 (distributed system) : 여러 컴퓨터에서 실행되는 프로세스들로 이루어진다.
; 초창기 분산 시스템은 각기 독립적으로 개발되었다.
- 클러스터 컴퓨팅 (cluster computing) : 훨씬 큰 컴퓨터에서 수행되어야 할 계산이나 서비스를 제공하기 위해 많은 대수의 독립적인 컴퓨터들이 긴밀하게 협력한다.
- 고가의 슈퍼컴퓨터보다 적은 비용을 들이면서 신뢰성은 높이고, 유지보수 비용은 줄일 수 있다.
- 고가용성(high-availability)을 제공한다 ; 클러스터 멤버 중 일부에 장애가 발생하더라도 다른 멤버들이 요청을 처리할 수 있다.
- 부하균형(load-balancing)을 제공한다 ; 일이 너무 많은 멤버들에서 너무 적은 멤버들 쪽으로 부하를 이동시킬 수 있다.
- 그리드 컴퓨팅 (grid computing) : 클러스터 방식에 비해 연결관계는 다소 느슨하지만 큰 작업을 위해 협력한다.
- 그리드에 참여하는 컴퓨터들 사이에 데이터와 알고리즘의 분배를 용이하게 하기 위한 특화된 소프트웨어를 이용할 수 있다.
- 자발적인 분산형 그리드 컴퓨팅은 엄청나게 복잡한 수학 및 과학 문제들에 수백만 대의 가정용 PC들을 동원할 수 있게 되었다.
- 클라우드 컴퓨팅 (Cloud computing) : 네트워크상의 공유 컴퓨터들로 이루어진 거대한 집단에서 필요에 따라 클라이언트가 사용할 수 있도록 할당하는 방식
- 네트워크상의 공유 컴퓨터들로 이루어진 거대한 집단에서 필요에 따라 클라이언트가 사용할 수 있도록 할당하는 방식이 사용된다.
- 인터넷은 개체들이 자신의 데이터와 계산을 클라우드(Cloud)에 위탁할 수 있게 하는데, 이때 클라우드는 이미 네트워크상에서 제공되어 있는 방대한 컴퓨터 자원을 가리킨다.
- 신뢰성이나 규모 확장성에 대한 상당한 수준의 보장을 제공하지만, 우리가 사용하는 컴퓨터를 누가 소유하고 운영하는지 알 수 없는 세상에서 사생활 침해나 보안에 관한 우려도 제기된다.
2. 인터넷
1) 인터넷의 구조
- 인터넷 : 서로 연결된 네트워크들의 모임
- 네트워크들은 인터넷 서비스 사업자(Internet Service Provider ; ISP) 로 불리는 기관들에 의해 구축되고 유지된다.
- ISP가 운영하는 네트워크 체계는 이들이 전체 인터넷 구조에서 수행하는 역할에 따라 계층구조로 분류될 수 있다.
(계층-1 ISP, 계층-2 ISP, 접속 ISP, 단말시스템)
- 계층-1 ISP : 계층 구조의 최상위, 고속 고용량의 국제 WAN으로 구성
- 계층-2 ISP : 지역적이고 서비스 용량이 떨어짐
- 계층-1 ISP, 계층-2 ISP는 기본적으로 인터넷의 통신 인프라를 제공하는 라우터들로 이루어지는 네트워크이며, 통신회사들이 운영한다. 라우터들 사이에는 수많은 경로가 존재하기 때문에 인터넷 핵심부에 중복성(redundancy)을 제공하는데, 계층 1 라우터에 장애가 생겨도 네트워크 전체 또는 대부분은 여전히 연결 상태를 유지할 수 있다.
- 접속 ISP(access ISP) 또는 계층-3 ISP : 핵심부에 대한 접속을 제공하는 중재자, 독립적인 인터네트워크
- 단말 시스템(end system) 또는 호스트(host) : 개별 사용자들이 접속 ISP에 연결하는 장치
- 단말 시스템을 더 큰 네트워크에 연결하는 기술이 다양하게 존재한다.
① WiFi 기술에 기초한 무선 접속
- AP를 접속 ISP에연결시키고 AP의 방송 범위 안의 단말 시스템들에 해당 ISP를 통한 인터넷 접속을 제공하는 것
- 핫스팟 (hotspot) : AP(그룹)의 접속 서비스가 공개적으로 제공되거나 무료로 제공될 때 이러한 서비스 범위에 포함되는 지역
② 전화회선이나 케이블/위성 시스템 이용
- 단말 시스템을 직접 연결시켜주는 데 이용될 수도 있고, 여러 시스템이 연결되는 고객 라우터를 연결시켜주는 데 이용될 수 있다.
- 단-대-단(end-to-end) 구조 : 단말장치에 대한 가정을 최소화한다.
; 수많은 종류의 장치나 기술들 사이에 통신을 제공할 수 있는 인터넷을 설계하기 위해 채택된 구조로, 인터넷은 새로운 종류의 네트워크나 장치가 보급됨에 따라 신속하게 이들을 지원할 수 있도록 진화해왔다.
- 최종 마일 문제 (last mile problem) : 구식 아날로그 링크들로 인해 발생하는 이슈들
; 인터넷상의 어떤 단말 시스템에서 발생하는 정보가 전달될 때 대부분은 고속 디지털 연결 상에서 이루어지지만, "최종 마일" 구간에 위치하는 느린 구식 아날로그 전화선에서 많은 소요시간을 소유할 수 있다.
2) 인터넷 주소
- IP 주소 (IP address) : 인터넷에서 사용되는 주소 체계
- 원래 각 IP주소는 32비트의 패턴이었지만 더 큰 주소 집합을 제공하기 위해 128비트로 전환하기 위한 절차가 진행 중이다.
- 연속된 번호의 IP 주소 블록을 ISP에 제공하는 것은 ICANN이라는 비영리법인이며, 고유한 IP 주소가 계층구조를 형성하며 배정된다.
- IP주소는 점찍는 10진 표기법(dotted decimal notation)으로 표시되는데, 각 바이트는 10진법 정수로 표시되며 각 바이트 사이에 점을 찍어 구분한다.
- 도메인 (domain)
- 비트 패턴 형식 또는 점찍는 10진 표기법으로 표시된 주소는 사람이 사용하기에는 적합하지 않다.
- 인터넷에서는 기억하기 쉬운 이름으로 컴퓨터를 식별하는 또 다른 주소 체계를 사용한다.
- 도메인은 단위 기구가 운영하는 인터넷 "영역"으로 간주될 수 있다.
- 도메인에는 기억하기 쉬운 도메인 이름(domain name)이 지정되는데, 인터넷상의 도메인 이름은 각기 다르게 정해진다.
- 최상위 도메인 (top-level domain ; TLD) ex) com, gov, org, 각 국가를 나타내는 두 글자 TLD(au, ca 등), biz, museum
- 계층 구조를 갖는 도메인 이름은 왼쪽으로 확장되며 점에 의해 구분된다.
- 경우에 따라 도메인 안의 이름들을 조직화하기 위해 여러 번 확장되는데, 이를 부도메인(subdomain)이라 부른다.
- 네임 서버(name server)
- 기억하기 쉬운 기호식 주소를 IP주소로 변환할 때 도움을 주는 서버들
- 네임 서버들은 DNS(domain Name System)라 불리는 인터넷 차원의 디렉터리 시스템을 구성하며, 주소 변환을 위해 DNS를 사용하는 절차를 DNS 조회(DNS lookup)라 부른다.
- 지역 DNS 서버느 대개 접속 ISP에 의해 제공된다.
- 컴퓨터에 기호식 도메인 이름을 사용하여 접근할 수 있기 위해서는 그 이름이 DNS 내부의 네임 서버에 포함되어 있어야 한다.
3) 인터넷 응용 프로그램
- NNTP (Network News Transfer Protocol) : 뉴스 응용 프로그램이 서버에 접근하기 위해 사용함.
- FTP (File Transfer Protocol) : 네트워크를 통해 파일 목록을 받아오고 파일을 복사하는 응용프로그램이 구현함.
- 텔넷 (Telnet) : 먼 거리의 컴퓨터에 접근하기 위한 응용 프로그램이 사용하는 프로토콜. 후에는 SSH(Secure Shell) 프로토콜을 사용하기도 함.
- HTTP (Hypertext Transfer Protocol) : 웹서버와 웹브라우저의 기능이 점차 강화되면서 전통적인 네트워크 응용 프로그램들을 HTTP를 이용하는 웹페이지들을 통해 처리할 수 있게 되었다.
- SMTP(Simple Mail Transfer Protocol) : 네트워크상의 한 호스트에서 다른 호스트에게 이메일 메세지를 전송할 때 두 호스트가 대화하는 방식을 규정한다.
- MIME(Multipurpose Internet Mail Extensions) : SMTP는 원래 ASCII 형식의 텍스트 메시지 전송용으로 설계되었기 때문에, 비 ASCII 데이터를 SMTP에 맞는 형식으로 변환시키기 위한 프로토콜
- POP3(Post Office Protocol version 3) : 사용자가 메시지를 자신의 컴퓨터로 받아올 수 있으며, 자신의 컴퓨터에서 메시지를 읽고, 저장하고, 편집하거나 다른 작업을 할 수 있도록 하는 프로토콜
- IMAP : 사용자가 메일 서버 컴퓨터에서 메시지 및 관련 정보를 저장하거나 처리할 수 있게 하는 프로토콜
- VoIP (Voice over Internet Protocol) : 전통적인 전화시스템과 비슷한 음성통화의 제공에 인터넷 인프라를 이용한다.
; P2P 모델을 통해 음성 데이터를 전송하는 서로 다른 컴퓨터 상의 두 프로세스로 이루어진다.
○ VoIP 시스템의 4가지 유형
① VoIP 소프트웨어 전화 : 둘 이상의 PC들이 스피커와 마이크 외의 다른 특별한 하드웨어 없이도 통화할 수 있게 해주는 P2P 소프트웨어
② 아날로그 전화 어댑터들로 이루어짐 : 사용자들은 접속 ISP가 제공하는 전화 서비스에 일반 전화기를 연결한다.
③ 임베디드 VoIP 전화기 형태 : 일반 전화기와 동일한 모양이지만 TCP/IP 네트워크에 직접 연결된다.
④ 무선 VoIP 기술 : 최근의 스마트폰이 사용하는 기술
- 인터넷 멀티미디어 *스트리밍
* 스트리밍 (streaming) : 인터넷 상에서 오디오나 비디오를 실시간으로 전송한다.
① N-유니캐스트 : 하나의 송신자가 다수의 수신자에게 메시지를 전송한다.
- 서버가 고객들 각각에게 실시간으로 개별 메시지를 송신해야 하고, 이 메시지들은 서버의 이웃들을 거쳐 전달된다.
- 파일 공유 시스템에서 상요되는 방식으로 P2P 모델을 이용해서 분배 문제를 데이터의 출발지가 아니라 개체들에게 떠넘길 수 있다.
② 멀티캐스트(multicast)
- 분배 문제를 인터넷 라우터들에게 떠넘긴다.
- 인터넷 라우터의 기능이 원래의 기본 기능보다 확장되어야 한다.
- 응용 영역의 대부분이 사요자가 자신이 원할 때 아무때나 매체를 이용할 수 있는 주문형 스트리밍(on-demand streaming)이다.
③ 콘텐츠 전송 네트워크 (Contents Delivery Network) : 대규 스트리밍 서비스에서 이용한다.
- ①, ②번기술은주문형 스트리밍에 도움이 되지 않는다.
- 각기 다른 스트림을 이용하는 사용자들에게 동시에 제공할 수 있도록 다수의 서버에 콘텐츠를 복제하는 일이 반드시 필요하다.
- 각자 자신의 주변 네트워크 안의 사용자들에게 콘텐츠 사본을 스트리밍하는 서버들의 그룹을 의미한다.
④ 애니캐스트 (anycast) : 사용자가 지정된 서버 그룹에서 가장 가까운 서버에 자동적으로 접속할 수 있게 해주며 CDN의 실용성을 지원한다.
3. 월드와이드웹
- 월드와이드웹(World Wide Web)은 하이퍼텍스트(hypertext)라 불리는 링크 연결 문서 개념을 인터네트워크 기술에 결합시켜 최초의 WWW 소프트웨어를 구현한 팀 버너스리의 연구에 그 기원을 두고 있다.
- 초기의 프로토타입은 멀티미디어 데이터를 지원하지 않았지만, 오늘날 월드와이드웹의 핵심 요소들을 포함하였다.
- 다른 문서와의 하이퍼링크(hyperlink)를 포함하기 위한 하이퍼텍스트 문서 형식, 네트워크상에서 하이퍼텍스트를 전송하기 위한 프로토콜, 요청에 따라 하이퍼텍스트 페이지를 제공하는 서버 프로세스 등이 포함된다.
1) 웹의 구현
- 인터넷에서 하이퍼텍스트에 접근할 때 사용되는 소프트웨어 패키지는 브라우저(browser)와 웹서버(web server)라는 두 범주로 나눌 수 있다.
- 브라우저는 사용자 컴퓨터에 설치되어 있으며, 사용자가 요청하는 자료를 얻어 와서 사용자에게 체계화된 방식으로 보여준다.
- 웹서버는 접근 대상인 하이퍼텍스트 문서들을 갖고 있는 컴퓨터에 설치된다. 서버의 역할은 클라이언트의 요청에 따라 자신의 컴퓨터에 있는 문서들에게 접근할 수 있게 하는 것이다.
- HTTP (Hypertext Transfer Protocol) : 브라우저와 웹서버 사이에서 하이퍼텍스트 문서를 전송할 때 사용되는 프로토콜
- 웹상의 문서를 받아오기 위해, 각 문서에는 URL(Uniforn Resource Locator)이라 불리는 고유한 주소가 지정된다.
2) HTML(Hypertext Markup Language) : 하이퍼텍스트 마크업 언어
- 전통적인 하이퍼텍스트 문서는 ASCII나 유니코드와 같은 코드 체계를 이용하여 텍스트를 인코딩하고 있으므로 텍스트 파일과 비슷하다.
- 텍스트 파일과 다른 점은 하이퍼텍스트 문서가 태그(tag)라 불리는 특별한 기호들을 포함한다는 것이며, 태그는 문서를 컴퓨터 화면에서 어떤 모습으로 표시할지, (이미지 등의) 어떤 멀티미디어 자원이 문서에 수반되어 있는지, 문서 안에 어떤 항목들이 다른 문서와 연결되어 있는지 등을 나타낸다.
- 웹페이지 작성자가 해당 페이지를 사용자 화면에 표시하기 위해 필요로 하는 정보 또는 현재 페이지가 참조하는 관련 문서들을 찾기 위해 필요한 정보를 기술하기 위해 사용한다.
3) XML(eXtensible Markup Language)
- 데이터를 텍스트 파일로 표현하기 위한 표기 체계의 설계에 사용되는 표준화된 스타일
- XML 표준을 따라 수식, 멀티미디어 콘텐츠, 음악 등을 표현하기 위한 다양한 마크업 언어들이 개발되어 왔다.
- HTML 또한 XML 표준에 기초하여 웹페이지 표현을 위해 개발된 마크업언어이다.
(HTML의 시초버전은 XML 표준이 완성되기 전에 개발되었기 때문에, HTML의 일부 기능은 XML을 엄격하게 따르지 않는다. XHTML은 XML을 엄격히 준수하는 HTML 방계 언어이다. )
4) 클라이언트 측 활동과 서버 측 활동
- 클라이언트 측 활동 : 브라우저 등의 클라이언트에서 수행되는 웹페이지가 필요로 하는 활동
- 자바스크립트(JavaScript) 언어로 작성된 프로그램을 넣어 클라이언트 측 활동을 제어할 수 있다.
- 먼저 웹페이지를 브라우저에게 전송한 다음 HTML 소스 문서 안에서 요청하는 대로 자바(Java) 언어로 작성된 애플릿(applet)이라는 추가 프로그램을 전송하는 방식으로 클라이언트 측 활동을 제어할 수 있다.
- 플래시(Flash) 시스템을 이용하여 다양한 클라이언트 측 멀티미디어 콘텐츠를 구현할 수 있다.
- 서버 측 활동 : 웹서버 등 서버에서 수행되는 웹페이지가 필요로 하는 활동
- CGI (Common Gateway Interface) : 서버 측 활동을 제어하기 위한 초창기 수단
- CGI의 변형으로 클라이언트의 요청을 따라 서버 측에서 서블릿(servlet)이라는 프로그램을 실행하는 방식이 있다.
- 서블릿을 단순화시킨 방식은 JSP(Java Server Page)라 불리는 웹페이지 틀을 웹서버에 저장해두고 클라이언트에서 받은 정보를 사용하여 맞춤형 웹페이지를 완성한다.
- ASP(Active Server Page) 또는 ASP NET라 불리는 틀을 사용해 맞춤형 웹페이지를 완성할 수 있다.
- 널리 사용되는 서버 측 스크립트 언어 : 파이썬, 루비(Ruby), 펄(Perl)
- 웹서버가 프로그램을 클라이언트에 전송하여 실행되도록 한다는 사실로 인해 서버 쪽에서는 윤리 문제가 발생하며 클라이언트에서는 보안 문제가 발생한다. (클라이언트나 서버가 남의 컴퓨터에서 프로그램을 실행한 경우)
4. 인터넷 프로토콜
1) 네트워크 소프트웨어의 계층 구조
- 네트워크 소프트웨어의 주요 작업 : 컴퓨터들 사이에서 메시지를 전송하기 위해 필요한 인프라 제공
- 인터넷 통신을 제어하는 소프트웨어는 4개의 계층으로 구성된다.
(1) 응용 계층 (application layer)
- *메시지가 발생한다.
- 작업 수행을 위해 인터넷 통신을 사용하는 클라이언트나 서버와 같은 프로그램으로 이루어진다.
- 인터넷상에서 미시지를 주고받기 위해 전송 계층을 이용한다.
- 도메인 이름을 인터넷에서 이용할 수 있는 IP 주소로 변환하기 위해 네임 서버의 서비스를 이용할 수 있다.
- 재구성이 끝난 메시지를 전송 계층으로부터 받고 **응용 계층 내 적당한 프로그램에 메시지를 넘긴다.
* 메시지는 전송을 위해 준비하는 과정에서 응용->전송->네트워크 계층으로 전달되며 링크 계층에 의해 전송된다.
메시지는 목적지 링크 계층에서 메시지를 수신하며 메시지 목적지의 응용 계층에 도달할 때까지 계층을 따라 올라간다.
** 응용 계층의 각 프로그램에 고유한 포트번호(port number)를 배정해 응용 계층 내 어떤 프로그램이 들어온 메시지를 받을지 결정한다.
(2) 전송 계층 (transfer layer)
- 응용 계층으로부터 받은 메시지를 언테넛에서 전송하기 적합하도록 적절한 형식에 맞춘다.
- 긴 메시지들을 작은 메시지로 분할한다.
- 작은 메시지 조각들을 메시지 목적지에서 재구성할 수 있도록 각 조각에 순서번호를 추가하고, 패킷(packet)이라 불리는 조각들을 네트워크 계층에 넘긴다. (최종 목적지 전송 계층에 도달할 때까지 각 패킷들은 무관한 개별 메시지로 취급된다.)
- 네트워크 계정에서 이동이 끝난 패킷을 받으면, 그 안의 메시지 조각을 추출해 메시지 발송자의 전송 계층에서 제공하는 순서번호에 따라 원래의 메시지를 재구성한다.
(3) 네트워크 계층 (network layer)
- 인터넷 상의 패킷 경로를 따라 각 단계에서 패킷을 어느 방향으로 전송할지 결정한다.
- 라우터의 전달 테이블을 유지하고 이 테이블을 이용하여 패킷 전달 방향을 결정한다.
- 적절한 방향이 결정되면 네트워크 계층은 실제 송신을 위해 패킷을 링크 계층에 넘긴다.
- 패킷의 이동이 끝났음을 인지하면 더 이상 패킷을 전달하지 않고 전송 계층에 넘긴다.
(4) 링크 계층 (link layer)
- 패킷을 전송한다.
- 컴퓨터에서 링크 계층은 패킷의 다음 단계 방향을 결정하기 위해 최종 목적지와 네트워크 계층의 전달 테이블과 비교할 수 있도록 네트워크 계층으로 패킷을 넘긴다.
- 네트워크 계층은 전달 방향을 결정한 후 패킷을 전송할 수 있도록 링크 계층에 돌려준다.
- 중개지점에서는 링크 계층과 네트워크 계층만이 관련되며 두 계층만이 라우터에 존재한다.
2) TCP/IP 프로토콜 모음
- OSI(Open System Interconnection) 참조 모델 : 7계층의 계층 구조
- TCP/IP 프로토콜 모음 : 4 계층 통신 계층구조를 구현하기 위해 사용되는 프로토콜 표준들의 모음
- TCP와 UDP
- TCP(Transmission Control Protocol) : 전송 계층의 한 버전 규정, 신뢰성은 높고 효율성이 낮다.
- UDP(User Datagram Protocol) : 전송 계층의 또 다른 버전 규정, 신뢰성은 낮고 효율성이 높다.
- TCP 기반의 전송 계층은 목적지의 전송 계층에 자체 메세지를 보내 메시지를 보낼 계획에 대해 알리고 상대편의 확인 메시지를 받은 다음에 응용 계층 메시지 전송을 시작한다.
- UDP 기반의 전송 계층은 메시지 전송 전 연결 확립 절차를 거치지 않는다. (UDP를 비연결형(connectionless) 프로토콜이라 부른다. )
- TCP의 경우, 모든 메시지 조각이 성공적으로 목적지에 전송되었음을 확인하기 위해 발송지와 목적지의 TCP 전송 계층들이 확인 및 패킷 재전송을 통해 서로 협력한다 ; 그러한 이유로 신뢰할 수 있는 프로토콜로 불린다.
- UDP의 경우 재전송 서비스를 제공하지 않는다 ; 신뢰할 수 없는 프로토콜
- TCP는 혼잡제어와 흐름제어를 제공하지만 UDP는 제공하지 않는다.
- 혼잡 제어 (congestion control) : 메시지 출발지의 TCP 전송 계층이 자신과 메시지 목적지 사이의 혼잡을 완화하기 위 해 송신 속도를 조절할 수 있다.
- 흐름 제어 (flow control) : 메시지 출발지의 TCP 전송 계층의 목적지의 TCP 전송 계층이 감당할 수 없을 정도가 되지 않도록 송신 속도를 조절할 수 있다.
- IP : 네트워크 계층에 배정된 작업(전달, 라우팅)을 구현하기 위한 인터넷 표준
- 전달 : 인터넷을 통해 패킷들을 중재
- 라우팅 : 변화하는 상황을 반영하기 위해 네트워크 계층의 전달테이블을 갱신
- 패킷을 준비하며 홉(hop) 총수 또는 TTL(time to live)이라 불리는 값을 패킷에 첨가하는 것이다.
- 위 값은 중개지점 개수에 대한 한도를 나타나며, 패킷이 무한하게 순환하는 것을 방지한다.
- IPv4라는 IP 버전이 인터넷에서 네트워크 계층을 구현하기 위해 사용되어 왔다.
- 128비트 인터넷 주소를 사용하는 IPv6라는 새로운 IP버전을 개발했다.
5. 사이버보안
1) 공격 유형
(1) 내부 감염에 의한 공격
- 멀웨어(malware) : 악성 소프트웨어(malicious software)
- 공격 대상 컴퓨터에 전달되어 실행되기도 하고, 원격지에서 공격이 수행되기도 한다.
- ex) 바이러스, 웜, 프로이목마, 스파이웨어
- 바이러스(virus) : 자기 자신을 컴퓨터상의 기존 프로그램에 끼워 넣음으로써 감염시키는 소프트웨어
- 웜(worm) : 네트워크를 통해 자신을 전파시키는 독립적인 프로그램, 웜 복사본의 폭발적 증가로 인해 정상적인 응용 프로그램의 성능을 저하시키며 전체 네트워크의 부하를 가중시킨다.
- 트로이목마(Trojan horse) : 피해자에게 필요한 프로그램으로 위장하여 컴퓨터 시스템에 침입하는 프로그램
- 스파이웨어(spyware) : 스니핑(sniffing ; 도청) 소프트웨어라고도 불리며 자신이 자리잡은 컴퓨터에서 일어나는 활동들에 관한 정보를 모아 공격자에게 보내주는 소프트웨어(비밀리에 정보를 얻음 <-> 피싱(phishing) : 정보를 직접 요청)
(2) 외부 감염에 의한 공격
- 서비스거부(denial of service ; DoS) : 컴퓨터에 과도한 요청을 보낸다. 공격자는 피해자가 의심하지 않는 다수의 컴퓨터에 소프트웨어를 심어두었다가 신호를 보내면 모든 컴퓨터들이 공격 대상 컴퓨터에게 메시지를 쏟아보낸다.
- 분산 서비스거부 (distributed denial of service ; DDoS) : 공격을 생성하는 작업이 다수의 호스트에 분산되는 경우
2) 보호 및 대책
- 방화벽 (firewall)
- 네트워크상의 특정 지점을 지나는 트래픽을 거른다.
- 특정 목적지 주소로 나가는 메시지를 차단하게 하거나, 문제가 있는 것으로 알려진 발송지에서 들어오는 메시지를 차단할 수 있다.
- 외부에서 들어오면서 발송지 주소가 내부 네트워크로 표시된 메시지(스푸핑(spofing) : 외부의 공격자가 도메인의 구성원인 것처럼 위장함)를 차단한다.
- 방화벽은 전체 네트워크나 도메인 대신 개별 컴퓨터의 보호에도 사용할 수 있다.
- 방화벽의 일부 변형 : 스팸필터(spam filter)
- 프록시 서버(proxy server)
- 필터 개념을 이용하는 예방 도구
- 서버의 적대적 행위로부터 클라이언트를 보호하려는 목적으로 클라이언트와 서버 사이의 중개 역할을 수행한다.
- 실제 서버는 프록시 서버가 진짜 클라이언트가 아니라는 것을 알 수 없다 ; 실제 서버는 클라이언트가 속한 도메인의 내부 정보를 얻을 기회를 갖지 못한다.
- 프록시 서버는 서버와 클라이언트 사이에서 주고받는 모든 메시지들을 검사하여 거를 수 있다.
- 네트워크 감사 소프트웨어
- 시스템 관리자는 관리 영역 안의 여러 위치에서 갑자기 메시지 트래픽이 증가할 것을 탐지할 수 있다.
- 방화벽의 활동을 관찰하거나 비정상적인 행위를 탐지하기 위해 개별 컴퓨터에서 발생하는 요청들의 패턴을 분석할 수 있다.
- 안티바이러스 소프트웨어(antivirus software)
3) 암호학
- 암호학(cryptography) : 공격자가 존재하는 상황에서도 안전하게 메시지를 주고받을 수 있는 방법에 관한 학문
- 암호화(encryption)와 같은 암호 도구를 사용해 메시지를 코딩할 수 있으며 암호화된 데이터는 인코딩된 정보가 노출되지 않는다.
- HTTPS : HTTP의 보안 버전
; HTTPS의 중추는 SSL(Secure Sockets Layer)의 후속버전에 해당하는 TLS(Transport Layer Security) 프로토콜이다.
- 대칭키 암호화 (symmetric-key encryption) 시스템 : 메시지의 암호화와 복호화에 같은 키를 사용한다.
; 컴퓨터에서 긴 의사난수 키를 사용할 수 있게 되며 더욱 향상된 보안성을 제공할 수 있게 되었다.
- 공개키 암호화(public-key encryption)
- 공개키(public key)를 메시지 암호화에 사용한다.
- 개인키(private key)를 메시지 복화화에 사용한다.
- 개방형 표준 알고리즘은 모두에게 공개되어 있지만, 개인키가 안전하게 관리된다면 메시지의 안전성도 유지된다.
- 사용 중인 공개키가 실제로 수신 당사자를 위한 적절한 키인지 확신할 수 있는지에 관한 문제가 있다.
- 위 문제를 해결하기 위한 방법 중 하나는 인증기관(certification authority)이라 불리는 신뢰할 수 있는 인터넷 사이트를 설립하는 것이다. (인증기관에서는 공개키들과 그 소유자들로 이루어진 정확한 목록을 유지한다.)
- 계산 비용이 높고, 유사한 수주의 대칭키 시스템에 비해 암호화 수행에 훨씬 더 많은시간을 요한다.
- 위 문제는 대칭키 시스템과 공개키 시스템의 조합을 이용해 해결할 수 있다. (각 기법의 장점을 취함)
- 메시지 작성자의 신원을 확인할 수 있는 인증(authentication)에도 이용할 수 있다. (공개키 시스템에 따라서 암호화키와 복호화키의 역할을 서로 바꾸는 것이 가능하다.)
- 개인키 소지자는 한 당사자만이 만들어낼 수 있는 특별한 비트패턴인 전자서명(digital signature)을 생성할 수 있다.
* 암호에 대해 설명한 글이 한 편 더 있습니다!
'전공과목 정리 > 컴퓨터과학의이해' 카테고리의 다른 글
[컴퓨터과학의이해🧮] 프로그래밍 언어 (6장) (0) | 2022.08.30 |
---|---|
[컴퓨터과학의이해🧮] 알고리즘 (5장) (0) | 2022.08.27 |
[컴퓨터과학의이해🧮] 운영체제 (3장) (0) | 2022.08.26 |
[컴퓨터과학의이해🧮] 데이터 조작 (2장) (2) | 2022.08.25 |
[컴퓨터과학의이해🧮] 데이터의 저장 (1장) (0) | 2022.08.25 |