데이터와 신호
- OSI 7계층 중 물리 계층 통신은 물리적 통신이고 데이터 링크, 네트워크, 전송, 세션, 표현, 응용 계층의 통신은 논리적 통신이라고 할 수 있다.
- 데이터와 데이터를 표현하는 신호는 아날로그, 디지털 신호로 나눌 수 있다.
※ 아날로그 : 연속적인 정보, 디지털 : 이산적인 값을 갖는 정보
데이터 링크 계층
- 데이터 링크 계층의 통신은 노드-to-노드 이다.
- 인터넷에서는 LAN, WAN과 같은 많은 네트워크를 통해 전달 되는데 LAN, WAN은 라우터를 통해 연결된다.
- 데이터 링크 제공 서비스
1. 프레임 짜기 - 3계층(네트워크)에서 받는 데이터그램을 프레임에서 캡슐화
2. 흐름제어
3. 오류제어
4. 혼잡제어
네트워크 계층
- 네트워크 계층에서 라우팅과 포워딩을 한다.
※ 라우팅 : 출발지 → 목적지 경로를 설정
포워딩 : 라우터의 입력포트 → 출력포트로 패킷을 이동시키는 것
- 포워딩은 의사결정 테이블(포워딩 테이블, 라우팅 테이블)을 이용해서 경로 결정
주소변환
1. 정적 주소변환(static NAT) : 하나의 내부 IP주소와 외부 IP주소가 1:1로 매핑, 주소 절감 효과는 없다.
2. 동적 주소변환(dynamic NAT) : 여러개의 내부 IP주소와 여러개의 외부 IP주소를 동적으로 매핑, 보안적으로 안전
3. PAT : 하나의 공인 IP주소를 다수의 사설 IP가 포트번호를 구분하여 주소를 매핑
IPV4
- 인터넷 시작될 때 소규모, 대규모 네트워크 지원위해 설계
- 인터넷 주소공간을 5개의 클래스(A,B,C,D,E)로 나눈다 → 클래스 기반 주소지정
클래스 |
설명 |
A |
ㆍ첫번째 비트가 0 ㆍ첫바이트의 7비트가 네트워크 주소 ㆍ16,777,214개의 호스트 수용 가능 → 대규모 호스트 갖는 기관에 유용 ㆍ01111111.a.b.c(a,b,c = 호스트 주소) |
B |
ㆍ첫번째 비트가 10 ㆍ첫바이트의 6개비트 + 2번째 바이트가 네트워크 주소 ㆍ10111111.a.b.c(b,c = 호스트 주소) |
C |
ㆍ첫번째 비트가 110 ㆍ마지막 바이트가 호스트 주소 →254개의 호스트 수용 가능 ㆍ소규모 네트워크에 적합 ㆍ11011111.a.b.c(c = 호스트 주소) |
D |
ㆍ첫번째 비트가 1110 ㆍ네트워크 주소와 호스트 주소의 구분이 따로 없다 ㆍ주소 전체가 멀티캐스트용 주소로 사용 ㆍ정보, 멀티미디어, 리얼타임 비디오 등 보내는데 사용 |
E |
ㆍ첫번째 비트가 1111로 시작 ㆍ추후 사용을 위해 예약된 주소 |
- IPV4는 주소고갈 문제에 시달리고 있다
※ 주소고갈 : 클래스에 맞게 주소를 전부 할당이 되어 더 이상 할당할 주소가 없는 것
- 이러한 주소고갈 문제를 해결하기 위해 서브네팅과 슈퍼네팅을 사용한다
※ 서브네팅 : 기존 호스트 부분을 줄여 subnet을 만듦
슈퍼네팅 : 네트워크 부분을 줄여 호스트 부분을 늘림
- 하지만 이러한 서브네팅, 슈퍼네팅도 실제로 주소고갈 문제를 해결하지는 못하였다.
- 이러한 문제를 해결하기 위해 클래스 없는 주소지정(CIDR)이 나왔다
- IPV4는 비신뢰적, 비연결형인 최선형 전송 서비스 데이터그램 프로토콜이다.
※ 최선형 전송 서비스 : IPV4 패킷이 훼손, 손실, 순서변경, 지연도착, 혼잡을 막지는 못함
- 만약 신뢰성이 중요하다면 IPV4는 TCP와 같은 신뢰성 있는 전송 계층 프로토콜과 같이 보내야 함
- 모든 TCP / UDP, ICMP, IGMP 데이터는 IP 데이터 그램을 사용하여 전송
※ IGMP : IP 멀티캐스트 그룹에서 호스트 멤버를 관리하는 프로토콜
- IP 프로토콜의 특징
1. 비신뢰성
2. 비접속형
3. 주소지정
4. 경로설정
IPV4 데이터 그램 형식
- IPV4 데이터그램은 가변길이의 헤더와 페이로드(데이터)로 구성
- 헤더는 20~ 60바이트이며 라우팅과 전송에 필수 정보를 가지고 있다.
- 헤더의 주요필드
1. 버전 : 프로토콜의 버전을 의미
2. 헤더길이 : 선택사항을 포함한 헤더의 길이
3. Service type : 3비트의 우선권, 4비트의 TOS필드 1비트의 예약필드로 구성
4. TTL : 패킷이 경유할 수 있는 최대 홉수
5. 플래그 : 세 개의 비트로 구성, 단편화 관련정보 표시
클래스 없는 주소지정(CIDR)
- 기존의 클래스 A,B,C 네트워크의 개념을 무시
- IPV4의 주소공간을 효율적으로 할당이 가능
- CIDR을 이용해 ISP는 할당받은 주소 공간 중 클라이언트가 요구하는 양만큼만 잘라서 공급해 주소공간의 낭비를 막을 수 있다.
- 인터넷 라우팅 테이블의 비대화를 막을 수 있다.
- CIDR은 주소 클래스가 없기 때문에 주소만으로 네트워크 ID의 크기를 파악 할 수 없다.
→ 네트워크 주소 뒤 /를 붙여 구분
VSLM(가변 길이 서브넷 마스킹)
- VSLM은 서브네팅을 여러번 반복하여 네트워크 크기가 다른 여러 서브네트워크 계층을 구분하는 기법이다.
- 네트워크의 실제 요구 사항에 맞게 서브넷의 크기를 조정한다.
ex) host가 100, 20, 50인 요구사항이 있는 C클래스(192.168.100.0)
1. C클래스를 반으로 나눔(192.168.100.1 ~ 128, 192.168.100.129 ~ 255)
2. 192.168.100.1~128은 host 100에 넘긴다.
3. 192.168.100.129~255를 다시 반으로 나눔(192.168.100.129 ~ 192, 192.168.100 193 ~ 255)
4. 129 ~192를 호스트 50에게 넘겨준다
5. 193 ~ 255를 호스트 20에게 넘겨줌(만약 호스트가 너무 많이 낭비된다 싶으면 다시 반으로 나눔)
- 서브넷은 모든 호스트를 동일 크기로 나누지만 VSLM은 호스트 크기를 클라이언트 요청에 따라 세분화 할 수 있어 주소 낭비가 적다.
특수주소
- 특수주소는 디스호스트 주소, 제한된 브로드캐스트 주소, 루프백 주소, 사설주소, 멀티캐스트 주소가 있다.
1. 디스호스트 주소
- 0.0.0.0/32인 주소
- IP 데이터그램을 보내려고 하지만 출발지 주소인 자신의 주소를 모를 때 사용
2. 제한된 브로드 캐스트 주소
- 255.255.255.255/32
- 호스트나 라우터가 네트워크상의 모든 장치로 데이터그램을 보낼 때 사용
- 네트워크 외부로 패킷을 보낼 수 없다.
3. 루프백 주소
- 127.0.0.0/8
- 호스트를 벗어나지 않고 호스트에 남게 된다.
- 블록 내 주소로 소프트웨어 테스트 목적에 사용
- 가장 많이 쓰는 테스트 주소는 127.0.0.1이다.
4. 사설주소
- 라우팅이 불가능한 특수 주소 집합
- 각 클래스마다 사설주소가 있다.
클래스 |
IP 주소 블록 |
주소범위 |
A |
24비트 |
10.0.0.0 ~ 10.255.255.255 |
B |
20비트 |
172.16.0.0 ~ 172.31.255.255 |
C |
16비트 |
192.168.0.0 ~ 192.168.255.255 |
ARP
- 수신자 측의 IP 주소는 알고 있지만 물리주소를 모를 때 사용
- 송신자는 브로드캐스트를 통해 모든 호스트에게 ARP 요청 메시지 패킷을 전송한다.
- ARP 요청 메시지 패킷을 받은 수신자 중 자신의 물리주소를 요구하는 경우 자신의 물리 주소를 ARP 응답메시지로 유니캐스트 함
- 만약 호스트가 라우터 넘어에 있는 경우 라우터가 해당 호스트를 대신해 응답 메시지를 전송
RARP
- 수신자 측의 물리주소는 알고있지만 IP주소를 모르고 있을 때 사용
- 자신의 MAC정보를 담고있는 RARP 요청 메시지를 만들어 브로드캐스트
- 응답을 받은 수신자는 자신의 IP 주소를 유니캐스트 한다.
GARP
- 송신자와 수신자 IP가 동일한 경우
- ARP 브로드캐스트로 다른 장비에게 자신의 존재를 알리는 목적으로 사용
- 브로드 캐스트 메시지를 받은 장비들은 자신의 ARP cache에 저장
- GARP 목적 : 1. IP 충돌감지, 2. 상대방의 ARP cache 정보 갱신
ICMPv4
- 네트워크 관리자가 다른 라우터, 호스트가 잘 작동 중인지, 다른 호스트, 라우터의 정보를 알려고 할 때 사용
- ICMPv4 메시지는 오류보고 메시지, 질의 메시지로 나뉜다.
- 오류보고 메시지
1. 호스트가 IP 패킷을 처리하는 도중 탐지하는 문제 보고
2. ICMP 오류메시지의 중요 점
1. 어떠한 ICMP 오류 메시지도 ICMP 오류 메시지를 운반하는 데이터그램의 응답으로 생성되지 않음
2. 어떠한 ICMP 오류 메시지도 처음 단편이 아닌 단편 데이터그램을 위해 생성되지 않음
3. 어떠한 ICMP 오류 메시지도 멀티캐스트 주소를 위해 생성되지 않음
4. 어떠한 ICMP 오류 메시지도 특수 주소를 가진 데이터그램을 위해 생성되지 않음
3. 오류보고 메시지 종류
1. 목적지 도달불가(TYPE 3)
- 가장 널리 사용되는 오류 메시지
- 왜 데이터그램이 최종 목적지까지 도달 못했는지에 대한 정보를 0~15까지 코드를 통해 알림
2. 근원지 억제(Type 4)
- 송신자에게 네트워크에 충돌이 발생하여 데이터그램이 폐기되었음을 알리는 메시지
- 이 과정을 통해 송신자는 데이터그램 송신과정을 제어한다.
- ICMP 메시지는 이 메시지를 통해 IP 프로토콜에 혼잡제어 메커니즘 추가
3. 재지정 메시지(Type 5)
- 발신자가 메시지를 전송하기 위해 잘못된 라우터를 사용할 때 사용
- ICMP 메시지 안에 디폴트 라우터를 포함해 디폴트 라우터로 변경해야 한다고 알림
4. 시간경과 메시지(Type 11)
- 타임아웃이 발생하여 IP 패킷이 폐기되었음을 알림
- 종류
1. Code 0 : TTL값이 0이되어 폐기되었음을 알리는 메시지
2. Code 1 : IP 패킷 재조합 과정에서 타임아웃이 발생함을 알림
5. 매개변수 문제(Type 12)
- 데이터그램 헤더에 문제가 있거나(code 0), 어떤 옵션이 없거나 옵션의 의미를 알 수 없는 경우(code 1)에 전송
6. Redirect
- IP 주소 경로 중 더 적합한 경로가 있다고 알리는 메시지
- 질의 메시지
1. 쌍으로 생성, 라우터나 다른 호스트의 특정 정보 획득이 목적
2. 두 장치 상이의 IP 데이터그램이 단방향 시간인지 왕복시간인지 찾는다.
3. 에코요청(Type 8), 에코응답 메시지(Type 0)는 다른 호스트나 라우터가 활성화 되었는지 여부를 테스트 하기 위해 호스트 또는 라우터가 사용 → ping, traceroute에서 메시지 쌍 확인 가능
IPV6
- IPV4의 주소공간 부족을 극복하기 위해 만듦
- IPV4의 32비트 주소공간을 4배 확장한 128비트 주소길이 사용
- 8개의 필드를 가진다.(IPV4의 13개 필드서 5개가 삭제)
- 보안문제(인증확장 헤더 사용), 라우팅 효율성 문제, QOS, 무선인터넷 지원같은 다양한 기능 제공
- IPV4에서 주소공간 부족 문제를 위해 사용되는 NAT과 같은 기술도 불 필요
- 브로드캐스트가 사라지고 유니캐스트, 멀티캐스트, 애니캐스트라는 개념이 있음
- IPV4에서 가변적 길이의 헤더는 IPV6에서는 고정적 길이로 바뀐다.
- 라우터의 부하를 줄이기 위해 헤더의 헤더길이, 식별자, 플래그, 분할 옵셋, 헤더 체크섬이 사라짐
- IPV6는 보안관련 기능이 탑재될 수 있도록 설계 → 인증, 데이터 무결성 보호, 메시지 발신지 확인기능 제공
- IPV4와 IPV6의 차이
구분 |
IPV4 |
IPV6 |
주소길이 |
32비트 |
128비트 |
표시방법 |
8비트 4부분 10진수 |
16비트 8부분 16진수 |
주소개수 |
약 43억개 |
43억4개 |
주소할당방식 |
클래스 단위 비순차 할당 |
네트워크 규모, 단말기 수 따라 순차할당 |
브로드캐스트 |
있음 |
없음 |
헤더크기 |
가변 |
고정 |
QOS 제공 |
미흡 |
제공 |
보안 |
프로토콜 별도 설치 |
자체지원 |
서비스품질 |
제한적 품질보장 |
확장된 품질보장 |
plug&play |
불가 |
가능 |
- 애니캐스트 : 단일 주소를 공유하는 컴퓨터의 집합, 가장 가까이 있는 애니캐스트 그룹의 구성원에게만 전송
IPV4에서 IPV6로 전환
- IPV4에서 IPV6로 변경되기 위해 상당히 많은 시간이 걸린다.
- 그러므로 IPV4, IPV6 두 버전 다 지원이 가능하도록 해야한다
→ 이중스택
- 터널링
1.IPV6를 사용하는 두 호스트가 통신 시 IPV4를 사용하는 지역을 지나가는 경우 사용하는 방식
2. IPV4 지역을 지나갈 경우 IPV4 캡슐로 캡슐화가 되고 지역을 벗어나는 경우 역캡슐화가 된다.
- 헤더변환
1. 송신자는 IPV6를 사용하지만 수신자가 IPV4를 사용하는 경우 사용
2. 터널링으로 해결할 수 없는 경우 송신자는 IPV4로 헤더변환을 해야한다.
UDP
- 사용자 데이터그램 프로토콜이라고 불리며 비 연결형, 비 신뢰성 전송 프로토콜이다.
- 오버헤드가 매우 적은 프로토콜
- 프로세스가 적은 메시지 송신, 신뢰성에 신경을 안 쓸 경우 사용
- 2바이트인 4개의 필드로 구성된 고정 크기의 8바이트 헤더를 가지고 있다.
- UDP가 제공하는 서비스
1. 프로세스 -대- 프로세스 통신을 제공
2. 비 연결형 서비스 제공
3. 다중화 / 역 다중화
4. 오류제어, 혼잡제어, 흐름제어는 제공하지 않는다.
- UDP는 흐름 및 오류제어를 하지 않는 간단한 요청-응답 통신을 요구하는 프로세스에 적당하다.
- UDP는 멀티캐스팅을 위한 전송 프로토콜이다
- UDP는 SNMP와 같은 관리 프로세스를 위해 사용
- UDP는 RIP와 같은 경로 갱신 프로토콜을 위해 사용
TCP
- TCP는 UDP처럼 포트번호를 프로세스간 통신을 제공
- TCP는 연결형, 양방향, 다중 연결, 신뢰성, 승인 스트림 중심 흐름관리이다.
- TCP는 바이트의 흐름으로 데이터를 전달, 수신한다.
- TCP는 가상의 튜브에 2개의 프로세스가 연결된 것 처럼 보이는 환경을 가진다.
- TCP는 흐름제어를 하기 때문에 TCP는 속도를 맞추기 위해 버퍼가 필요하다.
- TCP는 전이중 통신 방법으로 통신하기 때문에 동시에 양방향으로 전달이 가능하다.
- TCP는 다중화 / 역 다중화를 지원함
- TCP가 수행하는 서비스
1. 주소지정/ 다중화
2. 연결 수립, 유지 종료
3. 데이터 처리와 패키징
4. 신뢰성과 전송 품질 서비스
5. 흐름제어와 혼잡 회피 서비스
- TCP 프로토콜의 타이머
1. RTT : 패킷이 송신 측에서 전송되어 수신자에게 전달 된 후 응답신호를 다시 송신자가 받을 때 까지 걸리는 시간
2. RTO : 재전송을 위한 타임아웃, 수신자로부터 확인응답을 받지 못 한 경우, 동적으로 정해진 일정시간 지난 후 패킷을 재전송을 한다.
3. Fast retransmission : 특정 데이터 세그먼트에 대해 타임아웃 전에 세그먼트를 전송해달라는 ACK 요청이 3개 연속 수신시 타임아웃을 기다리지 않고 바로 세그먼트를 재전송하는 것
- TCP / IP을 이용한 소켓 통신
1. socket() 함수를 이용해 TCP socket 생성
2. blind() 함수를 이용해 소켓에 포트번호 부여
3. listen() 함수를 이용해 클라이언트 접속을 기다림
4. 클라이언트가 접속을 하명 accept() 함수를 이용해 연결에 대한 새로운 소켓 생성
5. send(), recv() 함수 이용해 서버소켓과 새로만든 클라이언트 소켓과 통신
6. close() 함수를 이용해 연결을 닫는다.
※ connet() : 서버에 접속하여 TCP 프로토콜 수준의 연결 설정
- TCP는 보안, 메시지 경계 유지 서비스는 제공하지 않음
- TCP와 UDP의 차이점
서비스 |
TCP |
UDP |
신뢰성 |
O |
X |
연결 |
연결 지향적 |
비 연결 지향적 |
패킷 순서 |
순서번호 사용 → 순차적 수신 |
순서번호 사용 x |
혼잡제어 |
버퍼 사용 및 전송속도 느려질 경우 이를 통보해줌 |
통보 안 해줌 |
사용 |
신뢰성 있는 전송 |
스티리밍 비디오, 브로드캐스 |
속도와 오버헤드 |
상당향 양을 지원, UDP보다 느림 |
더 적은 지원 사용, TCP보다 빠름 |
세그먼트
- TCP에서의 패킷
- 20 ~60바이트의 가변적인 헤더와 응요프로그램으로 구성(옵션 아무것도 없을 경우 20바이트 옵션이 있다면 60바이트까지)
- 세그먼트 형식
1. 시작 포트 주소
2. 목적지 포트 주소
3. 순서번호 - 세그먼트에 포함된 첫 번째 데이터 바이트에 할당된 번호
4. 확인응답번호
5. 헤더 길이
6. 제어 - 6개의 다른제어비트 또는 플래그 비트를 정의
플래그 |
의미 |
설명 |
URG |
긴급 |
1로 설정될 경우 우선순위가 높은 데이터 |
ACK |
승인 |
1로 설정되면 승인을 포함한다는 뜻, 승인번호 필드 값에는 다음에 보내야 하는 순서 번호를 가르킨다 |
PSH |
밀어넣기 |
세그먼트의 송신장비가 TCP 밀어넣기 기능을 사용했다는 뜻으로 세그먼트는 받는 즉시 애플리케이션으로 송신하라는 뜻 |
RST |
초기화 |
송신 장비에 문제가 발생했으니 연결을 초기화 하라는 뜻 |
SYN |
동기화 |
순서번호 동기화, 연결 수립을 요청 |
FIN |
종료 |
세그먼트 송신장비가 연결을 종료 |
7. 윈도우 크기 - 수신버퍼의 여유 공간 크기
8. 검사합 - UDP는 검사합이 선택이지만 TCP는 검사합이 필수이다.
9. 긴급지시자
TCP 연결
- TCP 연결은 연결설정, 데이터 전송, 연결 종료 3단계를 필요로 한다
연결설정
- TCP에서 연결설정은 세 방향 핸드셰이크로 불린다.
- 절차
1. 클라이어트는 SYN 플래그만 설정되어 있는 SYN 세그먼트를 전송 - 순서 동기화를 위함
→ 데이터 운반은 불가하지만 순서번호 1개 소비
2. SYN+ACK 세그먼트 전송 → 데이터 운반 x, 순서번호 1개 소비
3. ACK 세그먼트 전송(두번쨰 세그먼트에 대한 확인응답) → 데이터 운반 X시 순서번호 소비 X)
- TCP 연결 절차에서 SYN 플러딩 공격에 영향을 받을 수 있다.
※ SYN 플러딩 : 많은 요청을 가진 시스템을 공격자가 독점하여 모든 요청을 거부하는 서비스 거부 공격(DOS)
데이터 전송
- 연결이 설정되면 양방향으로 데이터 전송이 이뤄짐
- 클라이언트에 이해 보내진 데이터 세그먼트에는 서버 TCP 데이터가 수신되자마자 서버 프로세스에게 데이터를 전달할 것을 알도록 PSH(Push) 플래그가 설정
- 서버로부터 온 세그먼트느 밀어넣기 플래그(PSH)를 설정하지 않는다.
연결 종료
- 대개 연결 요청은 클라이언트에서 하지만 연결 종료는 참여한 양쪽 중 어느 한 쪽에서 연결 종료가 가능하다.
- 연결 종료를 위해 세-방향 핸드셰이킹, 네-방향 핸드셰이킹(절반-종료를 가짐) 두가지로 종료 가능
1. 세 방향 핸드셰이킹
- 클라이언트는 FIN 플래그가 설정된 첫 번째 FIN 세그먼트 전송
- 서버는 FIN 세그먼트 수신 후 연결종료를 알리는 FIN+ACK를 보냄
- 클라이언트는 서버로부터 FIN 세그먼트 수신에 대한 확인으로 마지막 ACK를 보냄
2. 네 방향 핸드셰이킹의 절반-폐쇄
- TCP는 데이터를 받고 있는 도중에도 한쪽 끝은 데이터 전송을 중단이 가능 → 절반폐쇄
- 클라이언트는 FIN 세그먼트를 전송해 연결을 절반폐쇄함 → 서버는 여전히 데이터 송신 가능 → 데이터는 서버에서 클라이언트로 전송 가능, 클라이언트에서 서버로 확인응답 전송 가능
연결재설정
- TCP가 연결 요구를 거부할 수도 있고, 현재 연결을 중지, 유휴 연결 종료도 가능
- 이 모든 것은 RST(재설정)플래그를 가지고 수행 됨
응용계층의 주요 프로토콜
1. HTTP
- 웹으로부터 웹페이지를 가져오기 위해 어떻게 클라이언트-서버 프로그램을 작성할지 정의
- 서버는 80번 포트를 가지고 클라이언트는 임시번호 포트를 사용
2. FTP
- 파일 전송 프로토콜로써 호스트에서 다른 호스트로 파일을 복사하기 위해 사용
- TCP/IP가 제공하는 표준 프로토콜이다.
- 서로 다른 디렉터리를 가진 구조도 FTP를 통해 간단하고 편리하게 해결 가능
- 포트번호 20,21번 사용
3. TELNET
- 최초의 원격 로그인 프로토콜
- TELNET은 암호화 되지 않은 평문으로 전송하기 때문에 해킹에 취약
- 포트번호 23번 사용
DNS
- 네트워크에서 도메인이나 호스트의 이름을 숫자로 된 IP 주소로 해석해주는 TCP/IP 네트워크 서비스
- 포트번호 53번 사용
'보안기사 > 필기' 카테고리의 다른 글
기사 자격증(알기사, 네트워크 장비) (0) | 2019.02.02 |
---|---|
기사공부(알기사, 라우팅) (0) | 2019.02.01 |
기사 자격증(알기사, 네트워크 개요) (0) | 2019.01.31 |
기사 자격증(알기사, 각종 시스템 보안 위협 및 대응책) (0) | 2019.01.30 |
기사 자격증(알기사, 서버보안 관리) (0) | 2019.01.29 |