서문
CS 지식 중 가장 자신 없는 분야가 네트워크이다.
언제까지 못하는 분야로 남길 순 없기에 모두의 네트워크라는 네트워크 기초 입문서를 구입해서 공부한 내용을 기록한다. 졸업생이 초보자용 개발 서적을 본다는 게 어찌 보면 창피할 수도 있지만, 이렇게 해서라도 네트워크라는 분야에 대한 두려움을 떨치고 싶다.
책을 읽어보니 정말 초보자를 위한 책 답게, 쉬운 내용 위주로 담고 있으니 키워드 위주로 정리하고자 한다.
1장. 네트워크 첫걸음
컴퓨터 네트워크
컴퓨터나 프린터와 같은 여러 기기가 연결되어 있는 상태. 두 대 이상의 컴퓨터가 연결되어 있어야 한다. 컴퓨터 간에 필요한 데이터를 주고받을 수 있다.
인터넷
전 세계의 크고 작은 네트워크를 연결한 거대한 네트워크
패킷
데이터를 주고 받을 때 네트워크를 통해 전송되는 데이터의 작은 조각.
큰 데이터를 여러개의 작은 패킷으로 나눠 전송한 후, 패킷의 순서를 다시 맞춰서 조합하면 원래 데이터가 된다.
대역폭
네트워크에서 이용 가능한 최대 전송 속도로, 단위 시간당 전송량을 뜻한다.
비트(bit)
정보를 나타내는 최소 단위
1 바이트(byte) = 8bit
문자 코드
숫자와 문자의 대응표. 대표적으로 ASCII 코드가 있다.
LAN
근거리 통신망. 특정 지역을 범위로 하는 네트워크
범위가 좁지만 전송 속도가 빠르고 오류가 발생할 확률이 적다.
WAN
광역 통신망.
범위가 넓어 전송 속도가 느리고 오류가 발생할 확률이 크다. ISP가 제공하는 서비스를 사용해 구축한 네트워크이다.
ISP
인터넷 서비스 제공자. 인터넷에 접속하는 수단을 제공하는 주체이다.
DMZ
외부에 공개하기 위한 네트워크. 웹 서버, 메일 서버, DNS 서버 등이 있다.
on-premise
데이터 센터나 사내에 서버를 두고 운용하는 방식. 클라우드의 반대 개념
2. 네트워크의 기본 규칙
프로토콜
통신을 위한 규약
OSI 모델
ISO에서 제정한 표준 모델. 물데네전세표응의 7 계층으로 나뉜다.
TCP/IP 모델
네트워크, 인터넷, 전송, 응용 계층으로 나뉜다.
캡슐화
상위 계층의 통신 프로토콜 정보를 데이터에 추가해 하위 계층으로 전송하는 기술. 보내고자 하는 데이터에 헤더를 추가하는 과정.
3. 물리 계층 : 데이터를 전기 신호로 변환하기
물리 계층은 0과 1의 데이터를 전기 신호로 변환하거나, 변환된 전기 신호를 데이터로 변환한다.
네트워크 전송 매체 중 하나인 트위스티드 페어 케이블 (twisted pair cable)은 UTP 케이블과 STP 케이블로 나뉜다.
UTP는 Unshielded Twisted Pair 케이블로 쉴드로 보호되지 않은 케이블이라 노이즈의 영향을 받는다.
STP는 shielded TP로 보호를 받기 때문에 노이즈의 영향을 적게 받는다.
TP 케이블은 보통 랜 케이블이라고 한다.
랜 케이블의 종류로 다이렉트 케이블과 크로스 케이블로 나뉜다. 구리 선 여덟개를 같은 순서로 연결한 것과 순서를 꼬은 케이블이다.
리피터 : 전기 신호를 복원하고 증폭하는 기능을 가진 물리 계층의 네트워크 장비.
허브 : 포트를 가진, 가까운 거리의 장비를 연결하는 장치. 마찬가지로 전기 신호를 복원, 증폭하기 때문에 리피터는 거의 사용하지 않는다.
4. 데이터 링크 계층 : 랜에서 데이터 전송하기
이더넷 : 네트워크 장비 간에 신호를 주고받는 규칙. 여러 컴퓨터가 동시에 데이터를 전송해도 충돌이 일어나지 않는 구조이다.
CSMA/CD : Carrier Sense Multiple Access / Collision Detection. 이더넷에서의 충돌을 방지하는 규칙.
MAC 주소 : 랜카드에 있는 물리 주소. 전 세계에서 유일한 번호로 할당되어 있다. 48 bit로 구성되어있다. 앞의 24 비트는 제조사 번호, 뒤쪽 24 비트는 제조사가 붙인 일련번호이다.
데이터 링크 계층에서 이더넷 헤더와 트레일러를 붙인다.
이더넷 헤더는 목적지 MAC 주소(6바이트) / 출발지 MAC 주소(6바이트) / 유형(2바이트) 로 구성된다.
이더넷 헤더와 트레일러가 추가된 데이터를 프레임이라고 한다.
스위치 : 데이터 링크 계층에서 동작하며 레이어 2 스위치, 스위칭 허브라고 불린다.
내부에 MAC 주소 테이블이 있어 스위치의 포트 번호와 해당 포트에 연결된 MAC 주소가 등록되어 있다.
목적지 MAC 주소가 등록되어 있지 않아서 스위치에 연결된 모든 포트에 데이터 프레임을 전송하는 과정을 플러딩이라고 한다. 플러딩을 통해 목적지 MAC 주소가 어느 포트에 있는지 알아낸 후 데이터를 전송한다.
전이중(Full-duplex) 통신 : 동시에 데이터의 송,수신을 하는 방식
반이중(Half-duplex) 통신 : 하나의 회선으로 데이터 송신과 수신을 번갈아가면서 통신하는 방식.
허브 : 반이중 통신, 스위치 : 전이중 통신.
ARP(Address Resolution Protocol) : 주소 변환 프로토콜. 네트워크 계층 주소와 데이터 링크 계층 주소 사이의 변환을 담당하는 프로토콜이다. IP 주소를 MAC 주소로 변환한다.
5. 네트워크 계층의 역할
이더넷 규칙 기반의 데이터 링크 계층에서는 같은 네트워크의 컴퓨터로만 데이터 전송이 가능하다.
따라서 다른 네트워크와의 통신을 하기 위해 네트워크 계층이 있다.
라우터라는 장비가 목적지까지의 경로를 알려주면 다른 네트워크와의 데이터 전송이 가능하다.
라우팅 : 목적지로 패킷을 보낼 수 있도록 경로를 설정하는 과정.
라우팅 테이블 : 목적지 주소에 도달하기 위해 경로를 저장하는 테이블
다른 네트워크와의 통신을 위해서 IP 주소가 필요하다.
IP : Internet Protocol. 네트워크 계층의 프로토콜이다.
IP 헤더 : 네트워크 계층에서 캡슐화할 때 여러 정보를 추가한다. 버전, 헤더 길이, 해킷 길이, ID, TTL, 프로토콜, 헤더 체크섬, 출발지 IP 주소, 도착지 IP 주소 등이 있다. 이렇게 IP 헤더를 추가해 캡슐화한 것을 IP 패킷이라고 한다.
IP 주소 : 공인 IP 주소와 사설 IP 주소로 나뉜다.
공인 IP 주소는 인터넷에 직접 연결되는 컴퓨터나 라우터에 할당하고 사설 IP 주소는 랜에 있는 컴퓨터에 할당한다.
IP 주소는 32 bit로 8비트 단위인 옥텟으로 나눠서 표현한다. (0.0.0.0 ~ 255.255.255.255)
이 주소는 다시 네트워크 ID와 호스트 ID로 나뉜다.
네트워크 ID는 어떤 네트워크인지를 나타내고 호스트 ID는 해당 네트워크의 어느 컴퓨터인지 나타낸다. 이 둘을 합쳐서 IP 주소라고 한다.
IP 주소의 클래스 : 네트워크 ID의 길이에 따라 클래스를 나눈다.
A 클래스 : 8비트의 네트워크 ID / 24 비트의 호스트 ID (1.0.0.0~127.255.255.2550
B 클래스 : 16 / 16 (128.0.0.0 ~ 191.255.255.255)
C 클래스 : 24 / 8 (192.0.0.0 ~ 223.255.255.255)
D Class : 224 ~ 239 (224.0.0.0 ~ 239.255.255.255) : 멀티 캐스트 용 주소
E Class : 240 ~ 255 (240.0.0.0. ~ 255.255.255.255) : 미래를 위해 남겨둔 주소
네트워크 주소 : 호스트 ID 가 0인 주소, 작은 네트워크를 식별하는 데 사용되는 주소
브로드캐스트 주소 : 호스트 ID 가 255인 주소, 네트워크에 있는 모든 장비에 한번에 데이터를 전송하는 주소
서브넷 : 네트워크를 분할한 것. 기존의 주소에서 네트워크 ID, 서브넷 ID, 호스트 ID로 나뉜다.
ex) A 클래스의 기존 주소가 8비트 / 24 비트로 나뉘어 있었으면, 서브넷팅 후에는 네트워크 ID 8비트, 서브넷 ID : 8비트, 호스트 ID 16비트로 나누는 것. 서브넷 ID의 크기는 자유이다.
서브넷 마스크 : 네트워크 ID와 호스트 ID를 식별하기 위한 값.
프리픽스 표기법 : 서브넷 마스크를 /비트수 로 표현하는 것
A 클래스 : /8
B 클래스 : /16
C 클래스 : /24
만약 255.255.255.240이 서브넷 마스크라면 /28이 된다.
6. 전송 계층 : 신뢰할 수 있는 데이터 전송하기
전송 계층은 목적지에 신뢰할 수 있는 데이터를 전송하기 위해 필요한 계층이다.
오류를 점검하는 기능과, 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능이 있다.
연결형 통신 : 데이터를 목적지에 문제없이 전달하는 방식으로 TCP가 사용된다.
비연결형 통신 : 데이터를 빠르고 효율적으로 전달하는 방식으로 UDP가 사용된다.
TCP(Transmission Control Protocol) : 연결형 통신 프로토콜. TCP 헤더가 붙은 데이터를 세그먼트 라고 한다.
3-way handshake : 연결형 통신에 사용되는 방식으로, 연결을 확립하기 위해 세 번 패킷을 교환한다.
연결 확립 시 : SYN, SYN+ACK, ACK
연결 종료시 : FIN, ACK, FIN, ACK
TCP 헤더의 source 포트 번호와 목적지 포트 번호를 통해 어느 포트에 데이터를 전송하는 지 알 수 있다.
16비트씩 구성되기 때문에 0~65535번 포트까지 이용 가능하다.
0~1023은 잘 알려진 포트, 1024는 예약되어 사용되지 않는 포트, 1025 이상은 랜덤 포트로 사용된다.
SSH : 22, DNS : 53, HTTP : 80, HTTPS : 443 등
UDP(User Datagram Protocol) : 비연결형 통신 프로토콜. UDP 헤더가 붙은 데이터를 데이터그램이라고 한다. 브로드캐스트 통신에 적합.
7. 응용 계층 : 애플리케이션에 데이터 전송하기
응용 계층은 클라이언트와와 서버가 애플리케이션 통신을 하기 위해 필요한 계층이다.
애플리케이션은 HTTP, DNS, FTP, SMTP, POP3 등이 있다.
HTTP : 웹 서버와 데이터를 주고 받기 위한 프로토콜
DNS : URL을 IP 주소로 변환하는 시스템
www.songstagram.ml 로 요청을 보내면 DNS 서버에서 해당 URL의 IP 주소를 알아내 반환해주고, 다시 해당 IP 주소로 접속하는 방식이다.
FTP : 파일 교환을 위한 프로토콜
SMTP : 메일 전송을 위한 프로토콜
POP3 : 메일 수신을 위한 프로토콜
간단 정리
물리 계층 : 0과 1의 데이터를 전기 신호로 전환하는 계층. 리피터, 스위치 등
데이터 링크 계층 : LAN에서 같은 네트워크에 속한 컴퓨터끼리 데이터를 주고 받기 위한 계층. l-2 스위치. 물리 주소를 이용해 다음 노드까지 데이터 전송. 프레임
네트워크 계층 : 다른 네트워크에 있는 컴퓨터와 데이터를 주고 받기 위한 계층. 라우터를 통해 목적지 IP 주소를 알아낸다. IP 패킷. 논리주소
전송 계층 : 신뢰할만한 데이터를 전송하기 위한 계층. TCP / UDP를 이용해 해당 논리 주소의 어느 애플리케이션에 데이터를 전송할 지를 정할 수 있다. 세그먼트 / 데이터그램
응용 계층 : 응용 애플리케이션의 기능을 위한 계층.
후기
쉬운 내용이라 책이 금방 읽혔고, 동시에 이해도 잘 됐다.
그 동안 항상 OSI 7 layer를 공부하면서, 도대체 이게 뭔지, 그래서 어쩌라는건지.. 이런 생각이 있었는데, 이젠 각 계층이 왜 필요한지 어디서 무슨 역할을 하는지 확실히 이해가 됐다. 이 상태로 한 번만 더 대학 강의를 들으면 더 잘 이해할 수 있을 것 같은데 아쉽다. ㅠㅠ