컴퓨터 네트워크

오늘날에는 컴퓨터들이 연결되어 네트워크를 형성하며, 또한 네트워크들 간의 연결을 통해 internetwork를 형성한다. 컴퓨터 네트워크는 전송매체(유선, 케이블, 무선)를 통해 연결된 시스템들의 조합이다.

  • Type of computer network : 범위로 구분
    • LAN
    • MAN
    • WAN
  • Network architecture : 역할로 구분
    • Client-Server
    • Peer to Peer : 정보를 주고 받는 주체를 따로 정의하지 않는다. (예: P2P서비스, 토렌트)
  • Network Topologies : 네트워크 구성
    • Star
    • Ring
    • Bus
  • Network Communication Technology
    • Intranet : 내부망
    • Extranet : 내부망을 밖에서 접속할 수 있게 한 것
    • Internet

네트워크의 분류

1. LAN

  • 근거리 통신망(Local area network)
  • 층, 건물 단위
  • 랜선의 종류는 다양하다. 겉으로 보면 다 비슷해보이지만, 선을 보면 속도같은게 써져있다. 기가인터넷을 사용할 수 있는 환경이여도 랜선이 속도를 받춰줄 수 있어야 한다.
    • UTP 케이블 : 집에서 주로 사용하는 것, 저렴하나 속도가 떨어진다. 선 길이가 길어지면 데이터 손실도 많아진다. (주로 랜선이라고 부르는 것)

2. MAN

  • 도시권 통신망, Metropolitan Area network
  • 도시 단위

3. WAN

  • 광역 통신망, Wide area netwrok
  • 국가, 대륙 단위

네트워크 구성

1.Bus Topology

하나의 스테이션이 프레임을 다른 컴퓨터로 전송했을 때, 모든 컴퓨터는 프레임을 수신하고 수신된 프레임의 목적지 주소를 확인한다. 만약 프레임 헤더의 목적지 주소가 스테이션의 물리주소와 일치한다면 프레임은 받아들여지고 프레임 안의 데이터가 처리된다. 그렇지 않으면 버려진다.

중요한 문제는 프레임의 제거다. 버스형 위상은 수신 시 전기적으로 신호를 없앨 수 있도록 고안된 케이블 종료기를 사용한다.

2. Star Topology

컴퓨터들이 허브(연결을 용이하게 하는 장치)나 스위치(프레임 전송을 제어하는 복잡한 허브)를 통해 연결되어 있다.

  • 허브는 데이터를 자신의 모든 인터페이스로 전송하는 역할을 수행한다.
  • 스위치는 프레임의 주소를 검사하여 프레임을 오직 목적지의 인터페이스로만 보낸다.

오늘날 주로 star topology로 구성한다.

3. Ring Topology

컴퓨터가 다른 컴퓨터로 프레임을 전송할 필요가 있을 때, 이웃 노드로 먼저 전송한다. 이웃 노드는 프레임을 다시 생성하여 다음 노드로 전송하며, 이러한 과정은 최종 목적지 노드에 도달할 때까지 반복된다.

모델과 프로토콜

모델(model)
통신망을 설치하기 위한 가이드라인으로서 표준 기관에서 정의한 명세서이다. 모델로서는 OSI의 권고안을 살펴본다.
프로토콜(protocol)
네트워크나 인터네트워크의 다양한 장치들간의 상호 작용을 제어하는 명세서이다. 인터넷의 주 프로토콜 집합인 TCP/IP를 살펴본다.
  • 통신규약, 약속을 정해 놓은 것
  • 통신(networking)할 때 정해진 규칙
  • 통신을 할 때 패킷을 주고 받는데, 패킷을 받아서 어떻게 해석할 것인가에 대해 미리 약속해둔게 통신규약
  • 목적이나 데이터형식에 따라 다양한 형식을 지원 (http, https, ftp, sftp, telent, ssh, ssl, smtp, …)

OSI 모델

개방형 시스템 상호 연결(OSI: Open Systems Interconnection) 모델은 이론적으로 서로 다른 두 가지 시스템이 하위 구조에 상관없이 통신할 수 있도록 한다.

7계층

OSI 모델은 네트워크에 관련된 각각의 장치들이 7계층을 모두 구현해야 한다고 정의하지는 않는다. 계층의 수는 장치의 기능과 네트워크 상의 장치의 위치에 따라 달라진다.

각 계층에서는 제어 정보가 데이터에 추가되어 헤더(header) 또는 트레일러(trailer)가 붙어 전송된다. 도착지에 가면 unpacking을 한다.

1계층, 물리 계층(Physical layer)
비트(01010101) 전송을 책임지는 계층
2계층, 데이터링크 계층(Data Link layer)
비트를 프레임(frame)이라고 불리는 논리적 단위로 구성한다. 물리 주소(physical address) 정보를 추가한다.
3계층, 네트워크 계층(Network layer)
패킷 전송을 책임진다. 논리 주소(IP 주소)를 추가한다.

전역적 통신을 위해 논리 주소는 고유적이어야 하다. 패킷이 발신지에서 수신지로 이동할 때 물리주소는 스테이션마다 바뀌는 반면 논리 주소는 발신지에서 수신지까지 바뀌지 않고 유지된다.

4계층, 전송 계층(Transport layer)
네트워크 계층은 각 패킷의 종단 간의 전달을 책임진다. 반면 전송 계층은 전체 메시지의 종단간 전달을 책임진다. 메시지는 하나 이상의 패킷으로 구성될 수 있다.
5계층, 세션 계층(Session layer)
사용자 간의 대화(dialog)를 제어하도록 고안되었다. 오늘날 대부분의 네트워크 구현에서는 세션계층을 따로 두어 사용하지 않는다. 만약 세션계층의 서비스가 필요하다면 보통 응용 계층에 포함된다.
6계층, 표현 계층(Presentation layer)
두 시스템간에 표현되는 정보의 문법(sytanx, format)과 의미(semantics)에 관련한다. 오늘날의 대부분의 구현이 표현계층을 포함하지 않는다. 표현 계층에 의해 정의된 기능이 필요하지 않는다는 것은 아니며, 단지 오늘날의 네트워크는 이런 책임을 다른 계층에 할당한다.
7계층, 응용 계층(Application layer)
사람이든 소프트웨어든 사용자가 네트워크에 접근할 수 있도록 한다.
컴퓨터는 왜 0과 1을 사용할까?

모든 도체에는 저항이 있기 때문이다. 신호가 약해지면서 열과 빛으로 환원된다.
전기신호는 스펙트럼이 넓어지면 정확성이 떨어진다. 만약 1부터 10까지 사용할 때, 6을 보내면 7인지 5인지 헷갈리게 된다.

최근 3진(0, 1, 2)으로 데이터를 표현하려고 시도 중인데 이것을 양자 컴퓨터라고 한다. 양자컴퓨터가 상용화하게 되면 훨씬 빨라지게 된다.

인터넷 (Internet)

  • 컴퓨터로 연결하여 TCP/IP 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크
  • Inter Network (네트워크의 네트워크 구성)

TCP/IP

인터넷을 정보를 주고 받을 때 지켜야하는 규칙

  • TCP(Transmission Control Protocol)
  • IP(Internet Protocol)

TCP/IP는 인터넷을 제어하는 주 프로토콜 스택이다. TCP/IP는 OSI 모델 이전에 개발되었다. 그러므로 TCP/IP 프로토콜 계층들은 OSI 모델의 계층과 정확히 일치하지는 않는다.

물리와 데이터 링크 계층
특정 프로토콜을 정의 하지 않는다. 모든 표준과 사적 프로토콜을 지원한다.
네트워크 계층
인터넷 프로토콜(IP: Internet Protocol)을 지원한다. 데이터 단위는 IP 데이터그램(IP datagram)으로 발신지에서 목적지로 전달되는 독립적인 패킷이다.
전송 계층
전송 제어 프로토콜(TCP: Transmission Control Protocol)사용자 데이터그램 프로토콜(UDP: User Datagram Protocol)을 정의한다.
  • UDP는 좀 더 단순한 형태이다. 종단 간의 전송만을 위해 기본적으로 필요한 기능만을 제공하는 전송계층 프로토콜이다.
  • TCP는 신뢰할 수 있는 전송 프로토콜이다. TCP는 메시지를 나누어서 순차적으로 순서 번호를 매긴다. 만약 하나의 세그먼트가 분실된다면 재전송을한다.
응용 계층
OSI 모델의 세션, 표현, 응용 계층을 합쳐 놓은 것과 같은데, 세 계층에 관련된 기능들이 응용 계층 하나에서 처리된다는 것을 의미한다.
  • WWW, FTP, SMTP, TELNET, HTTP, …
FTP
  • File Transfer Protocol
  • 파일 전송으로만 사용하는 통신규약
  • 파일 전송과 관련된 문제(다양한 코딩 시스템, 파일형태의 차이)들을 보완하기 위해 고안
SMTP
  • Simple Mail Transfer Protocol
  • 전자우편(email) 전송 프로토콜
  • 메일을 가져올 때는 POP 혹은 IMAP 프로토콜을 사용
    • POP : 메일을 단순히 가져옴
    • IMAP : 클라이언트와 서버를 싱크해서 반영
TELNET
  • TErminaL NETwork
  • 원격 로그인을 위한 프로토콜
HTTP
  • Hyper Text Transfer Protocol
  • WWW에서 문서에 접근하고 전송하는데 쓰이는 ‘클라이언트-서버’ 프로그램
  • 비록 텍스트, 오디오, 비디오 등과 같은 형태로도 전송하지만, 특별히 하이퍼텍스트 문서를 전송하기 위해 고안
  • HTTP METHOD
    • GET : 단순히 웹페이지를 요청하는 것
      • POST와 달리 웹브라우저 주소창에 노출되지 않는다.
      • 사이즈에 한계가 있다.
      • 캐시데이터를 사용할 수 있다.
    • POST
      • 민감한 정보를 사용자 눈에 보이지 않게 보낸다.
      • 사이즈에 한정이 없다.
      • 캐싱하지 않은 데이터를 보내므로, 느리지만 최신데이터를 받을 수 있다.
    • PUT : 서버로 올릴때 (예: 사진을 올릴 때)
    • DELETE : 회원정보를 삭제할 때
    • HEAD, TRACE, OPTIONS, CONNECT
    • 똑같은 주소여도 METHOD에 따라 다르게 처리할 수 있다.
    • RESTful API는 METHOD를 잘 선택해서 만들어야 한다.
  • URL
    • Uniform Resource Locator, URI의 일종
    • [Protocol]://[Host]:[Port]/[Path]
      • http://www.daum.net:80/map
      • ftp://id:pw@192.168.1.10:777/mydir
      • file://localhost/movie/baseball.avi
HOST
  • 호스트 : 네트워크 연결된 장치 (하나하나를 말함)
  • 호스트 이름 : 네트워크에 연결된 장치에 부여되는 고유한 이름 (IP주소, 도메인 주소, MAC주소 등등)
    • IP address
      • Internet Protocol Address
      • 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 번호
      • IP 주소를 관리하는 기관들이 있고, 기관들이 통신사에게 할당
      • 통신사에서 건물로 IP 할당 = 공인 IP
      • 공유기를 통해 사설망 구축 = 내부 IP할당
    • Domain Address
      • 네트워크 상에서 컴퓨터를 식별하는 호스트 이름
      • 치명적 단점 : 사람이 알아볼 수 있으면 컴퓨터는 알 수 없다. 컴퓨터가 아는 IP 주소랑 연결해줘야 한다.
      • DNS
        • Domain Name System
        • 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행
        • Name Server에 등록하는 것이다.
        • 예 : www.google.com에 접속 요청을 하면 가장 가까운/선호하는 DNS서버에 요청 > Root DNS서버 > .com DNS서버 > IP 주소를 알아내 접속
        • 다음에 다시 접속할땐 가장 가까운/선호하는 DNS에 저장되어있다.
        • 이렇게 DNS에 테이블에 저장된다. 만약 구글이 IP 주소를 바꾸면, 다시 도메인서버를 뒤져서 바뀐 IP를 알아내고 DNS 테이블이 업데이트된다.
        • 그래서 같은 도메인서버를 사용하는 사람들이 한번도 접속하지 않았던 사이트에 접속하면 연결하는데 시간이 걸린다.
        • 호스트 알아내는중 이라고 뜨면 도메인서버에서 찾는 중이다. 오래걸릴수록 방대하게 찾아내는 것이다.
    • MAC Address
      • Media Access Control Address
      • 네트워크 어댑터에 부착된 식별자
쿠키 : (서버와 클라이언트가 연결된) 세션(가상의 터널같은)정보
캐시 : 임시파일 혹은 임시데이터
PORT

데이터 0101010이 들어와서 정박할 곳이 필요하다.

  • 가상의 논리적 통신 연결단
  • 번호로 구분

컴퓨터로 들어올때 들어올 입구를 정해주는것, 물리적인 공간은 아니다.

  • Well known port
  • http라고 주소에 입력하면, 브라우저는 80port로 들어가면 되겠구나하고 자동으로 연결한다.
  • 보안상의 이유로 사용하지 않는 포트는 닫아둬야 한다.
  • port lookup : 어디가 열려있는지 모든 포트 다 두들겨 보는 것
SSH
  • Secure Shell
  • 네트워크 상의 다른 컴퓨터에 로그인하거나 원격시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 프로토콜
  • TELNET의 대용 목적으로 설계
  • 명령어만 전달
SSL
  • Secure Socket Layer
  • 웹서버와 브라우저 사이의 보안을 위한 프로토콜
  • HTTP + SSL = HTTPS
  • 패킷이 오가는동안 암호화하여 전송
  • SSL은 인증서와 한몸이다.
    • 웹브라우저의 초록 자물쇠는 안전한 사이트
    • HTTPS여도 빨간 자물쇠는 안전하지 않은 사이트
HTTP, FPT, TELNET은 치명적인 단점이 있다.
초창기에 만들어진 프로토콜인데 그 때는 암호화에 대한 의식이 별로 없었다.
그래서 암호화한 프로토콜이 등장 > SSH, SFTP, HTTPS

WWW

컴퓨터는 군사적 목적에 의해서 발전 됐다. 인터넷도 마찬가지이다. 미국에서 군사기밀을 주고받기 위해 발전하게 됐다.

  • World Wide Web
  • 문서(웹페이지, HTML)들이 있는 정보의 저장소
    • 정적 문서(static document)
    • 동적 문서(dynamic document)
    • 능동 문서(active document)
  • 분산과 연결이 핵심
    • 한대의 컴퓨터에 모든 요청이 들어오면 처리가 힘들다.
    • 목적에 따라 분리해 컴퓨터들이 서로 다른 정보를 제공하면, 사용자는 목적에 맞게 접속해 정보를 주고 받을 수 있다.

암호화

암호화기법

네트워크를 통해 통신할때 암호화

  • 대칭키 : 암호화와 복호화에 같은 암호화키를 쓰는 알고리즘
    • DES, AES, SEED 등
    • AES 와이파이 암호화 방식 설정할 때 (256비트 주로 쓰임)
    • seed 대한민국 독자 암호화 방식
      • 공인인증서 암호 입력할 때 사용하는 방식 (128비트)
      • 128비트 암호화 방식은 이미 깨짐
  • 공개키(비대칭키) : 공개키로 암호화된 데이터를 비밀키를 사용하여 복호화할 수 있는 암호화 알고리즘
    • RSA 등
    • 암호화할때 공개키, 복호화할때 비밀키
    • 암호화키와 복호화키가 다름
    • 예: 구글에서 나한테 공개키를 줌, 보낼때는 공개키로 암호화해서 보냄 > 구글은 비밀키로 복호화해서 확인
    • 비밀키는 유출되어서는 안되는 키
    • 중재기관이 인증서를 발급

DB에 저장될 때 암호화

  • 해시(암호화 기법은 아닌데 암호화기법처럼 종종쓰임)
    • 임의의 데이터(암호 등)를 고정된 길이의 데이터로 매핑하여 원래의 입력 값과의 관계를 어렵게 만든것
    • SHA(128비트는 이미 깨짐, 256비트가 많이 쓰임)
    • MD5(30글자까지 이미 깨짐)