- 누가 누구한테 어떻게 통신하는가?
- 그 과정에서 어디를 공격할 수 있는가?
- 그걸 막기 위해 어떤 장비나 프로토콜을 쓰는가?
네트워크
-> 컴퓨터기리 데이터를 주고받기 위한 연결 구조
네트워크 보안
-> 네트워크 통신 과정에서 정보가 안전하게 오가도록 보호하는 것
- 기밀성 : 허가받은 사람만 볼 수 있어야 한다
- 무결성 : 중간에 내용이 변조되면 안 된다
- 가용성 : 필요할 때 서비스를 사용할 수 있어야 한다
=> 네트워크 공격도 대부분 이 셋 중 하나를 깨뜨리는 방식이다.
ex)
- 스니핑 -> 기밀성 침해
- 패킷 변조 -> 무결성 침해
- DDoS 공격 -> 가용성 침해
OSI 7계층
- 7계층 : 응용 계층 Application
- 6계층 : 표현 계층 Presentation
- 5계층 : 세션 계층 Session
- 4계층 : 전송 계층 Transport
- 3계층 : 네트워크 계층 Network
- 2계층 : 데이터링크 계층 Data Link
- 1계층 : 물리 계층 Physical
1계층 : 물리 계층
-> 물리적인 전송을 담당
-> 데이터가 아직 의미 있는 정보x, 0과 1의 신호로 흐르는 단계
-> 데이터 단위 : 비트(Bit)
- 전기 신호
- 광 신호
- 케이블
- 허브
- 리피터
2계층 : 데이터링크 계층
-> 같은 네트워크 안에서 데이터를 전달하는 계층
-> 대표적으로 MAC 주소를 사용
- Ethernet
- MAC 주소
- ARP
- Switch
- VLAN
3계층 : 네트워크 계층
-> 서로 다른 네트워크 간의 통신을 담당
내 컴퓨터 -> 네이버 서버
내 컴퓨터 -> 구글 서버
회사 내부망 -> 외부 인터넷
이런 식으로 다른 네트워크로 넘어가는 순간 3계층이 중요
- IP
- ICMP
- Routing
- Router
- NAT
장비 : 라우터
주소 : IP 주소
데이터 단위 : 패킷
4계층 : 전송 계층
-> 데이터를 어떤 프로그램으로 보낼지를 담당
-> 포트 번호가 중요함
예를들어서, 한 컴퓨터에서 동시에 여러 프로그램
- 웹 브라우저
- 카카오톡
- 게임
등등이 인터넷을 쓴다고 한다면,
IP 주소만 있으면 어느 컴퓨터로 보낼지는 알 수 있는데,
그 컴퓨터 안에서 어느 프로그램으로 보낼지는 알 수 없음
그래서 포트 번호가 필요함!
- HTTP : 80
- HTTPS : 443
- FTP : 20, 21
- SSH : 22
- DNS : 53
- SMTP : 25
프로토콜 : TCP, UDP
데이터 단위 : 세그먼트, 데이터그램
5계층 : 세션 계층
-> 연결 상태, 즉 대화의 시작과 종료를 관리
- 로그인 상태 유지
- 연결 수립
- 연결 종료
- 세션 관리
이런 개념과 관련이 있음
6계층 : 표현 계층
-> 데이터 표현 방식을 담당함
- 암호화
- 압축
- 인코딩
- 디코딩
- 문자 코드 변환
7계층 : 응용 계층
-> 사용자가 직접 사용하는 서비스와 가장 가까운 계층
- HTTP
- FTP
- SMTP
- POP3
- IMAP
- DNS
- Telnet
- SSH
- SNMP
TCP/IP 4계층
-> 인터넷 통신 구조를 4단계로 나눈 모델
-> 실제 인터넷 통신을 설명할 때는 OSI계층보다 많이 씀
OSI 7계층, TCP/IP 4계층 비교
OSI 7계층 TCP/IP 4계층
-----------------------------------------
응용/표현/세션 계층 응용 계층
전송 계층 전송 계층
네트워크 계층 인터넷 계층
데이터링크/물리 계층 네트워크 접근 계층
1계층 : 네트워크 접근 계층
-> OSI의 1계층(물리계층) + 2계층(데이터 링크 계층)
-> 실제 네트워크 장비를 통해 데이터를 보내는 역할
-> 같은 네트워크 안에서의 통신
- Ethernet
- MAC 주소
- LAN
- 스위치
- 허브
- ARP
2계층 : 인터넷 계층
-> OSI의 3계층(네트워크 계층)에 해당
-> 핵심은 IP주소와 라우팅
- IP
- ICMP
- ARP
- RARP
3계층 : 전송 계층
-> OSI의 4계층(전송 계층)
-> TCP, UDP
-> 핵심은 포트번호
IP 주소가 어느 컴퓨터로 보낼지?를 정한다면
포트 번호는 그 컴퓨터 안의 어느 프로그램으로 보낼지를 정함
4계층 : 응용 계층
-> 사용자가 실제로 접하는 서비스들이 있는 계층
- HTTP 80
- HTTPS 443
- FTP 20, 21
- SMTP 25
- POP3 110
- IMAP 143
- DNS 53
- Telnet 23
- SSH 22
- SNMP 161, 162
- DHCP 67, 68
캡슐화와 역캡슐화
-> 네트워크 통신에서 데이터는 그냥 한 덩어리로 가는 게 아님
-> 각 계층을 내려가면서 헤더가 붙음 --> 이게 캡슐화임
캡슐화
-> 데이터를 보낼 때 각 계층에서 필요한 정보를 앞에 붙이는 과정
예를들어서, 내가 네이버에 접속한다고 할 때
GET / HTTP/1.1
Host: www.naver.com
처음, 브라우저가 이런 요청을 만들고
HTTP 데이터로 응용 계층 데이터
근데, 이 HTTP 데이터만 가지고는 인터넷으로 못 보내는데
- 어느 프로그램으로 보낼 건데?
- 어느 컴퓨터로 보낼 건데?
- 같은 네트워크 안에서는 누구한테 먼저 보낼 건데?
- 전기 신호로는 어떻게 보낼 건데?
와 같은 정보가 부족함
그래서 아래 계층들이 차례대로 필요한 정보를 붙여줌
그래서 보면,
1단계: 응용계층(4계층)
- 브라우저가 HTTP 요청을 만들고 -> 웹 페이지 주세요 만 있음
[HTTP 데이터]
2단계 : 전송계층(3계층)
- 운영체제의 TCP 기능이 '이 데이터는 상대 서버의 443번 포트로 보내야 함!' 이라고 말해줌
[TCP 헤더][HTTP 데이터]
여기에는 보통
- 출발지 포트
- 목적지 포트 -> 이게 중요함
- 순서 번호
- ACK 번호
- TCP 플래그
같은 정보가 들어감
3단계 : 인터넷 계층
-IP계층이 말해줌 ' 이 데이터는 네이버 서버 IP 주소로 보내야 함!'
[IP 헤더][TCP 헤더][HTTP 헤더]
여기에는 보통
- 출발지 IP 주소
- 목적지 IP 주소
- TTL
- 프로토콜 정보
같은 정보가 들어감
4단계 : 네트워크 접근 계층
-> 이제 이 데이터가 내 컴퓨터 밖으로 나가려면, 보통 먼저 공유기에게 가야 함
-> 그래서 Ethernet 헤더가 붙음
[Ethernet 헤더][IP 헤더][TCP 헤더][HTTP 데이터]
여기에는 보통
- 출발지 MAC 주소
- 목적지 MAC 주소 --> 최종 네이버 서버 MAC이 아니라, 지금 바로 보내야 할 다음 장비의 MAC 주소
같은 정보가 들어감
정리하면, 캡슐화는
응용 계층에서 만든 데이터를 전송 계층이 감싸고, 인터넷 계층이 또 감싸고, 네트워크 접근 계층이 또 감싸는 것,,
그럼, 반대로 역캡슐화는
-> 캡슐화한 걸 반대로 ,,!
처음에 [Ethernet 헤더][IP 헤더][TCP 헤더][HTTP 데이터] 이렇게 데이터가 도착하면
서버가
하나씩 확인하며 벗김
Ethernet 헤더 확인
→ 이 MAC 주소 나 맞네? 통과
IP 헤더 확인
→ 이 IP 주소 나 맞네? 통과
TCP 헤더 확인
→ 443번 포트 서비스로 보내야겠네
HTTP 데이터 확인
→ 아, 사용자가 웹페이지 요청했구나
이게 역캡슐화..!
- 계층이 내려간다
--> 데이터를 실제 네트워크로 보내기 위해 헤더를 하나씩 붙인다 (캡슐화)
- 계층이 올라간다
--> 받은 데이터에서 헤더를 하나씩 벗기고 원래 내용을 해석한다 (역캡슐화)
결국, 그러니까 기본적으로 계층별로 담당하는 질문이 다른다고 보면 쉬움
응용 계층(4계층):
무슨 요청이야?
→ HTTP GET 요청
전송 계층(3계층):
어느 프로그램으로 보내?
→ 443번 포트로 ㄱㄱ
인터넷 계층(2계층):
어느 컴퓨터로 보내?
→ 목적지 IP로 ㄱㄱ
네트워크 접근 계층(1계층):
지금 당장 누구한테 넘겨?
→ 공유기 MAC 주소로 ㄱㄱ
물리 계층:
어떻게 실제로 보낼래?
→ 전기 신호/무선 신호로 ㄱㄱ
따라서 계층은 따로따로가 아니라
데이터가 목적지까지 가기 위해 필요한 질문을 순서대로 해결하는 구조 라고 보면 된다