물리 계층
전기 신호의 변환 및 제어
랜카드
'0과 1'을 전기신호로 변환해주는 장치
- '네트워크 카드', '네트워크 인터페이스 컨트롤러', 'NIC' 라고도 부릅니다.
- 각 랜카드에는 MAC 주소(물리 주소)가 정해져 있는데, 전 세계에서 유일한 번호로 할당됩니다.
- MAC 주소는 48bit(6byte) 2진수로, 평상시에 표기할 땐 16진수로 표기합니다.
리피터
전기 신호를 정형하고 증폭해주는 장치
- 네트워크를 연장하기 위해 사용합니다.
- 요즘은 다른 많은 네트워크 장비가 리피터 기능을 지원하기 때문에 거의 쓰이지 않습니다.
허브
컴퓨터 여러 대를 서로 연결하는 장치
- 여러 개의 포트를 가진 장치입니다.
- 리피터 기능도 지원하기 때문에 '리피터 허브'라고도 부릅니다.
- 한 포트에서 받은 전기 신호를 나머지 모든 포트로 보내기 때문에 '더미 허브'라고도 부릅니다.
이러한 허브의 문제를 해결하기 위한 방안에는 다음 2가지가 있습니다.
① 데이터에 목적지 주소를 추가하여 송신한 후, 수신한 컴퓨터가 자신의 주소와 다르면 수신받은 데이터를 폐기
② 허브 대신 스위치 사용하기
- 허브는 스위치와 달리 충돌이 일어날 수 있는 구조이기 때문에 반이중 통신을 합니다.
- 허브는 스위치보다 충돌 도메인도 넓습니다.
(* 충돌 도메인 : 충돌이 발생할 때, 그 영향이 미치는 범위)
- 따라서 요즘은 허브도 잘 쓰지 않고 대부분 스위치를 사용합니다.
데이터 링크 계층
네트워크 장비 간 규칙과 물리주소(MAC 주소) 결정, 한 네트워크 내에서의 데이터 전송
(일반적으로 가장 많이 사용되는 규칙이 '이더넷')
이더넷
랜에서 가장 많이 활용되는 네트워크 기술
CSMA/CD
- 여러 컴퓨터가 동시에 데이터를 전송해도 충돌이 일어나지 않는 구조(CSMA/CD)로 설계되어 있습니다.
- CS : 케이블에 신호가 흐르는지 확인한다
- MA : 케이블에 신호가 흐르고 있지 않다면 데이터를 보낸다
- CD : 충돌을 탐지한다
- CSMA/CD 또한 효율이 좋지 않아 요즘은 잘 사용하지 않고, 대신 스위치를 많이 사용합니다.
- 데이터 링크 계층에서 캡슐화할 때는 헤더 뿐만 아니라 트레일러도 붙입니다. 이 때, 데이터 링크 계층에서 붙여주는 헤더는 '이더넷 헤더'입니다. 이더넷 헤더와 트레일러가 붙은 데이터를 '이더넷 프레임'이라고 부릅니다.
이더넷 헤더
① 목적지 컴퓨터의 MAC 주소 6byte
② 출발지 컴퓨터의 MAC 주소 6byte
③ 유형 2byte (프로토콜 종류를 식별하는 번호)
트레일러
- FCS(Frame Check Sequence)라고도 합니다.
- 오류 발생 확인용입니다.
이더넷 규격
규격 이름 | 통신 속도 | 케이블 | 케이블 최대 길이 |
10BASE5 | 10Mpbs | 동축케이블 | 500m |
10BASE2 | 10Mpbs | 동축케이블 | 185m |
10BASE-T | 10Mpbs | UTP케이블 (Cat3이상) | 100m |
100BASE-TX | 100Mpbs | UTP케이블 (Cat5이상) | 100m |
1000BASE-T | 1000Mpbs | UTP케이블 (Cat5이상) | 100m |
10GBASE-T | 10Gpbs | UTP케이블 (Cat6a이상) | 100m |
이더넷 규격에서 각 문자의 의미는 아래와 같습니다.
10 | BASE | -T |
속도 | 전송 방식 | 케이블 |
(* 베이스밴드 : 펄스 신호에 의한 디지털 전송 방식)
출발지 컴퓨터가 도착지 컴퓨터의 MAC 주소를 모르는 경우
- 만일 출발지 컴퓨터가 도착지 컴퓨터의 MAC 주소를 모른다면 네트워크 전체에 'ARP 요청'을 보냅니다.
- 네트워크 전체에서 해당하는 컴퓨터가 'ARP 응답'을 보냅니다.
- 이리하여 알게 된 MAC 주소를 가지고 이더넷 프레임을 만들 수 있게 됩니다.
스위치
- 'L2 스위치', '스위칭 허브'라고도 부릅니다.
- 스위치는 허브와 달리, 애초에 충돌이 일어나지 않는 구조이기 때문에 전이중 통신을 합니다.
- 스위치는 설령 충돌이 일어난다 할지라도 충돌 도메인도 좁습니다.
- 스위치에는 'MAC 주소 테이블'이 있습니다.
MAC 주소 테이블
: 스위치의 각 포트에 연결되어 있는 컴퓨터의 MAC 주소가 등록된 DB
MAC 주소 학습 기능
- 프레임이 전송되면, MAC 주소 테이블을 확인
- 출발지 MAC 주소가 등록되어 있지 않다면 출발지 MAC 주소를 포트와 함께 등록
- 처음에는 목적지 MAC 주소는 등록되어 있지 않기 때문에 일단, 모든 포트에 프레임을 전송(플러딩)
- 목적지 MAC 주소가 등록되면 목적지에만 프레임을 전송(MAC 주소 필터링)
네트워크 계층
네트워크와 네트워크를 연결, 서로 다른 네트워크에 있는 기기와 통신을 가능케 해줌
IP
네트워크 계층의 대표적인 프로토콜
- 네트워크 계층에서 캡슐화할 때 붙이는 헤더는 IP 헤더입니다.
- IP 헤더가 붙은 데이터를 'IP 패킷'이라고 부릅니다.
- IP 패킷 = 출발지 IP 주소 (32bit) + 목적지 IP 주소 (32bit)
라우터
데이터 목적지(IP 주소)가 정해지면, 해당 목적지까지 어떤 경로로 가는 것이 좋은지 알려 주는 장치
서로 다른 네트워크간 데이터 전송을 가능케 해주는 장치
- 랜에서는 MAC 주소만으로 통신할 수 있지만, 다른 네트워크에는 데이터를 보낼 수 없습니다. 이 경우 IP 주소가 필요합니다.
- MAC주는 '어떤 컴퓨터인지'를 알게 해주는 주소라면, IP 주소는 '어떤 네트워크의 어떤 컴퓨터인지'를 알게 해주는 주소입니다.
- 다른 네트워크로 데이터를 전송하고 싶다면 '기본 게이트웨이(네트워크의 출입구)'를 설정해야 됩니다.
- 라우터를 통해 네트워크를 분리할 수 있습니다.
- 라우터에는 '라우팅 테이블'이 있습니다.
라우팅 테이블의 등록 방법
① 수동으로 등록 - 소규모 네트워크에 적합 (정적 라우팅)
② 자동으로 등록 - 대규모 네트워크에 적합 (동적 라우팅)
라우팅 프로토콜
- 라우터 간에 경로 정보를 서로 공유하고, 라우팅 테이블에 등록해 나가는 데 있어서의 규칙입니다.
- RIP, OSPF, BGP 등이 있습니다.
IP 주소
- IP 주소는 32bit(4byte)로, 평상시에 표기할 땐 10진수로 표기합니다.
- IP 주소는 ISP에게 할당 받거나 DHCP를 이용해 할당받을 수 있습니다.
(* DHCP : IP주소를 자동으로 할당하는 프로토콜)
- IP 주소의 버전
- IPv4 (32bit)
- IPv6 (128bit)
IP 주소의 종류
- 공인 IP 주소 : 인터넷에 직접 연결되는 컴퓨터/라우터에 할당
- 사설 IP 주소 : 회사나 가정의 랜에 있는 컴퓨터에 할당
IP주소의 구성
- 네트워크 ID (어떤 네트워크인지) + 호스트 ID (어느 컴퓨터인지)
- 네트워크 ID의 크기는 '클래스'라는 개념으로 구분합니다.
A 클래스 | B 클래스 | C 클래스 | D 클래스 | E 클래스 | |
설명 | 대규모 네트워크 | 중형 네트워크 | 소규모 네트워크 | 멀티캐스트 | 연구 및 특수용도 |
첫 8비트가 네트워크 ID | 첫 16비트가 네트워크 ID | 첫 24비트가 네트워크 ID | |||
시작주소 | 1.0.0.0 | 128.0.0.0 | 192.0.0.0 | ||
끝주소 | 127.255.255.255 | 191.255.255.255 | 223.255.255.255 | ||
서브넷 마스크 | 255.0.0.0 | 255.255.0.0 | 255.255.255.0 | ||
/8 | /16 | /24 | |||
최대 할당 가능한 IP 주소 수 | 16,777,214대 | 65,534대 | 254대 |
- 서브네팅 : 각 클래스의 대규모 네트워크를 작은 네트워크로 분할하는 것
- 서브넷 : 분할된 네트워크
- 서브넷 ID : IP 주소의 네트워크 ID 부분을 늘리기 위해, 서브넷 마스크로 사용되는 비트
- 서브넷 마스크 : 네트워크 ID와 호스트 ID를 식별하기 위한 값
각 클래스의 대규모 네트워크를 작은 네트워크로 분할(서브네팅)하면, 브로드캐스트로 전송되는 패킷의 범위를 좁힐 수 있습니다.
서브네팅을 하고 나면 호스트 ID 중 일부가 서브넷 ID가 되므로, IP 주소는 네트워크 ID + 서브넷 ID + 호스트 ID가 됩니다.
if ) 서브넷 마스크가 255.255.255.252라면?
네트워크 ID로 24비트가 쓰인 상태에서 서브넷 ID가 6비트(128 + 64+ 32+ 16+8+4 = 252)가 더 쓰였으므로, 네트워크 ID로 사용할 수 있는 부분이 총 30비트인 셈입니다. 따라서 서브넷 마스크를 프리픽스 표기법으로 다시 쓰면, /30이라고 표현할 수 있습니다.
(* 멀티캐스트 : 여러 컴퓨터로 동시에 전송하는 것)
(* 브로드캐스트 : 모든 컴퓨터로 동시에 전송하는 것)
특수한 IP 주소
- 네트워크 주소 : 제일 오른쪽 끝이 0인 IP 주소, 전체 네트워크에서 작은 네트워크를 식별하는 데 사용, 전체 네트워크의 대표 주소
- 브로드캐스트 주소 : 제일 오른쪽 끝이 255인 IP 주소, 전체 네트워크의 모든 장비에게 한 번에 데이터를 전송하는 데 사용되는 주소
- 이 두 주소는 절대 개인 IP 주소로 설정할 수 없습니다.
전송 계층
목적지에 신뢰할 수 있는 데이터를 전달하기 위해 오류를 점검
전송된 데이터가 어떤 애플리케이션으로 가야하는지 식별
연결형 통신 vs 비연결형 통신
연결형 통신 : 상대편과 확인해 가면서 꼼꼼하게 전송, 신뢰성/정확성을 만족 → TCP 사용
비연결형 통신 : 상대편을 확인하지 않고 일방적으로 전송, 효율성을 만족 → UDP 사용
TCP
전송계층에서 캡슐화할 때, TCP로 전송하는 경우 붙이는 헤더는 TCP 헤더입니다. TCP 헤더가 붙은 데이터를 '세그먼트'라고 부릅니다.
TCP 헤더의 구성
출발지 포트 번호 |
목적지 포트 번호 |
일련번호 | 확인 응답 번호 |
헤더 길이 |
예약 영역 |
코드 비트 |
윈도우 크기 |
체크섬 | 긴급 포인터 |
옵션 |
데이터를 보내기 전 준비 단계에서는 TCP 헤더의 코드 비트가 사용됩니다.
코드 비트 (6bit)
URG | ACK | PSH | RST | SYN | FIN |
0 | 0 | 0 | 0 | 0 | 0 |
통신을 시작하기 전, '연결(connection)'이라고 불리는 가상의 독점 통신로를 확보해야 합니다. 연결을 확립하려면 코드 비트의 SYN(연결 요청), ACK(확인 응답)이 필요합니다. 연결을 확립하는 과정은 아래와 같습니다.
① 컴퓨터 1이 SYN을 컴퓨터 2에 보냅니다.
② 컴퓨터 2가 컴퓨터 1의 SYN에 대한 ACK과 새로운 SYN을 컴퓨터 1에 보냅니다.
③ 컴퓨터 1은 컴퓨터 2의 SYN에 대한 ACK를 컴퓨터 2에 보냅니다.
이처럼 데이터를 보내기 전, 연결을 확립하기 위해 패킷 요청을 3번 교환하는 것을 '3-way 핸드셰이크'라고 합니다. 연결을 끊을 때에는 FIN(연결 종료)과 ACK(확인 응답)이 필요합니다.
3-way 핸드셰이크가 끝나고, 실제로 데이터를 주고 받을 때에는 TCP 헤더의 일련번호와 확인 응답 번호가 사용됩니다.
- 일련번호 : 송신한 데이터가 몇 번째 데이터인지 상대편에게 알려줍니다.
- 확인 응답 번호 : 다음에 수신하고자 하는 데이터의 번수를 상대편에게 알려줍니다.
데이터 전송이 완료될 때까지 두 컴퓨터 간에 일련번호와 확인 응답 번호를 반복적으로 주고받습니다. 일련번호와 확인 응답 번호를 통해 데이터의 유실된 경우 재전송하게 되어 있는데, 이를 '재전송 제어'라고 합니다.
세그먼트를 1개 보낼 때마다 확인 응답을 반환하면 비효율적입니다. 따라서 세그먼트를 연속해서 여러 개 보낸 후 확인 응답을 반환합니다. 수신측에서 세그먼트 여러 개를 받으면 버퍼에 저장해놓는데, 버퍼의 한계 크기를 넘어서서 세그먼트를 받으면 오버플로가 발생합니다. 이를 방지하기 위해서 TCP 헤더의 '윈도우 크기'를 사용합니다.
윈도우 크기란 버퍼에 얼마나 많은 용량의 세그먼트를 저장해 둘 수 있는지를 나타냅니다. 윈도우 크기의 초깃값은 3-way 핸드셰이크를 할 때 판단하며, 송신측에서는 윈도우 크기를 넘지 않는 선에서만 세그먼트를 연속해서 보낼 수 있습니다.
포트 번호의 구조
TCP 헤더의 '출발지 포트 번호'와 '목적지 포트 번호'를 통해서 애플리케이션을 구분할 수 있습니다.
- 0~1023번 : 잘 알려진 포트 (서버 애플리케이션에서 사용)
- 1024번 : 예약되어 있지만 사용되지 않는 포트
- 1025~65535번 : 랜덤 포트 (클라이언트 애플리케이션에서 사용)
애플리케이션 | SSH | SMTP | DNS | HTTP | POP3 | HTTPS |
포트 번호 | 22 | 25 | 53 | 80 | 110 | 443 |
UDP
전송계층에서 캡슐화할 때, UDP로 전송하는 경우 붙이는 헤더는 UDP 헤더입니다. UDP 헤더가 붙은 데이터를 'UDP 데이터그램'이라고 부릅니다.
UDP 헤더의 구성
출발지 포트 번호 | 목적지 포트 번호 | 길이 | 체크섬 |
UDP를 사용하면 랜에 있는 장비에 데이터를 일괄로 보낼 수 있습니다. 브로드캐스트, 즉 불특정 다수에게 데이터를 보내고 싶다면 UDP를 사용하면 됩니다.
응용 계층
응용 계층 프로토콜 |
HTTP | DNS | FTP | SMTP | POP3 | 기타 프로토콜 |
설명 | 웹 사이트 접속 | 이름 해석 | 파일 전송 | 메일 송신 | 메일 수신 | |
전송 계층 프로토콜 |
TCP | UDP |
* 이름 해석 : 장비에 붙여진 이름을 기반으로 IP 주소를 알아내는 것
클라이언트 | 서버 |
웹 브라우저 | 웹 서버 프로그램 |
FTP 클라이언트 | FTP 서버 프로그램 |
메일 프로그램 | 메일 서버 프로그램 |
클라이언트에서 각자 원하는 서비스가 있다면 각각의 서비스에 해당하는 서버에게 요청하게 됩니다.
웹 서버의 구조
WWW
= 웹 = W3 = World Wide Web
- WWW에는 HTML, URL, HTTP라는 세 가지 기술이 사용됩니다.
HTML
- 태그를 사용하여 작성하는 마크업 언어로, 웹 페이지에서 문장 구조나 문자를 꾸밀 수 있고, 하이퍼텍스트를 작성할 수 있습니다. 하이퍼텍스트로 하이퍼링크(링크)를 사용할 수 있는데, 링크는 클릭하면 다른 사이트로 이동하는 것을 일컫습니다.
- 웹 서버는 웹 클라이언트에게 HTMP 파일을 전송하는 셈입니다.
HTTP
- 클라이언트에서 HTTP 요청을 보내면 서버에서 HTTP 응답을 반환합니다.
- HTTP/1.1 버전은 Keepalive(연결을 한 번 수립하면 데이터 교환을 마칠 때까지 유지) 기능이 있습니다.
- HTTP/2 버전은 요청을 보낸 순서대로 응답을 반환하지 않아도 돼서, 콘텐츠를 빠르게 표시할 수 있습니다.
DNS 서버의 구조
DNS는 URL을 IP 주소로 변환(이름 해석)하는 시스템입니다. 이름 해석을 해주는 곳이 DNS 서버입니다. DNS 서버는 전 세계에 흩어져 있고, 모두 계층적으로 연결되어 있습니다. 만일 어느 한 DNS 서버가 도메인의 IP 주소를 모르면 다른 DNS 서버에게 도움을 요청합니다.
※ URL
www.gilbut.co.kr : 도메인 이름
www : 호스트 이름
메일 서버의 구조
① SMTP를 통해 컴퓨터 1에서 메일 서버 1로 메일 송신
② SMTP를 통해 메일 서버 1에서 메일 서버 2로 메일 송신
③ 메일 서버 2에서는 메일 박스에 메일을 보관
④ POP3를 통해 메일 서버 2의 메일 박스에서 메일을 가져와, 컴퓨터 2에서 수신