네트워크 일반
- OSI 7 계층
7 |
Application |
사용자에게 최종 서비스 제공 |
FTP, SNMP, HTTP 등 |
6 |
presentation |
포맷, 압축, 암호화 |
GIF, ASCII |
5 |
session |
세션 연결 및 동기화 |
SSL |
4 |
Transport |
가상연결, 에러제어, 흐름제어 |
TCP, UDP |
3 |
Network |
경로 선택, 라우팅, IP |
IP, ICMP, ARP |
2 |
DataLink |
물리주소 결정, 에러, 흐름제어 |
PPTP, L2TP, L2F |
1 |
Physical |
전기적, 기계적 연결 정의 |
동축 케이블, 광섬유 |
- 윈도우 ipconfig 옵션
/all : 전체 구성 정보 표시, /release : Ipv4 주소 해제
/release6 : Ipv6 주소 해제, /renew : IPv4 주소 갱신
/renew6 : Ipv6 주소 갱신, /flushdns : dns 확인 프로그램, 캐시 제거
/registerdns : dns 이름 다시 등록, /displaydns : dns 확인프로그램, 캐시 조회
/showclassid : 모든 DHCP 클래스 id 조회, /setclassid : DHCP 클래서 id 수정
- HTTP : stateless, 요청이 있을때만 연결하고 연결 종료, root 사용자만 오픈
TCP 80 port, request, response
TCP-3way-handshaking 완료되면 ESTABLISHED 상태
* HTTP Version 1.0 : 응답오면 바로 연결 종료, 필요시 다시 연결
* HTTP Version 1.1 : 연결 종료하지 않고 유지되는 Keep Alive Connection 지원
# Header 와 body 의 구분은 \r\n\r\n –> 관련 공격 : slowloris
- HTTP Request 시 header 구조
* Request Method : 호출되는 메소드 - GET, POST, OPTIONS, PUT, DELETE, TRACE, CONNECT
* Accept : 미디어 타입, text/*, text/html 등
* Accept-Language : 웹브라우저가 인식할 수 있는 언어를 의미
* User-Agent : 웹 브라우저 정보
* Accept-Encoding : 웹 브라우저에서 제공되는 인코딩 방식
* Host : 웹서버의 기본 URL
* Connection : 연결 지속 및 끊기, KeepAlive 또는 close
##GET 은 URL 에 입력 파라미터를 넣어서 요청, 크기 제한 없음
##POST 는 요청 파라미터를 Body에 넣어서 전송, 크기제한 없음
- HTTP Response 시 header 구조
* Status Code : HTTP 응답 코드
* Server : 서버 프로그램과 버전
* Expires : 자원의 만기 일자
* Cache Control : 캐시 사용여부, no-cache 는 캐시 사용하지 않음
* Pragma : 캐시 사용여부, HTTP 1.0 에서 쓰임
* Content-Encoding : 응답되는 메세지의 인코딩 방식
* Content-Length : 바이트 단위로 응답되는 리소스 크기
* Keep-Alive : 연결 유지 시간
* Connection : Keep-Alive 사용여부를 의미
* Content-type : 응답되는 미디어 타입
- 쿠키 : 웹브라우저에서 저장할 수 있는 작은 공간, 프로그램에 필요한 정보 임시 저장
세션 쿠키 : 연결이 종료되면 쿠키값 자동 삭제
#세션은 TCP Connection 이 아니라 Connection Oriented 방식 사용
- 클라이언트측의 정보 유지
* Cookie : 클라이언트 측에서 상태정보 저장, 최대 4KB
* session : 클라이언트와 웹서버 사이의 연결이 지속적으로 유지되는 상태
- 웹서버가 쿠키값을 수신받아 접근권한 결정 시 보안 문제
쿠키 |
세션 |
|
저장위치 |
클라이언트 |
서버 |
저장형태 |
text |
object |
종료시점 |
저장 시 종료시점 설정 |
정확한 종료 시점 모름 |
자원 |
1개 도메인당 20개 |
제한 없음 |
용량 |
1개 도메인당 20개, 쿠키당 4KB 총 300개 |
- HTTP Version2.0
멀티 플렉싱 : 순차적이 아닌 동시 다발적 양방향 통신
헤더 압축 : 헤더 정보를 1/3 수준으로 압축
서버 푸시 : 서버가 웹브라우저에게 필요한 데이터 알아서 미리 전송
- SMTP(Simple Mail Transfer Protocol)
Store and Forward 방식으로 메시지 전달
송신자 → 메일서버 → 근접 메일 서버 → 수신자 측 메일 서버
* MTA : 메일 전송 서버, MDA : 메일 전달 서버, MUA : 클라이언트 애플리케이션
* POP3 : TCP 110, 메시지 읽은 후 메일 서버에서 해당 메일 삭제
* IMAP : TCP 143, 메일 받아도 메일서버에 저장됨
- FTP
ftpusers 에 등록된 사용자는 접근 불가
* Active Mode : 제어 21번 포트, 데이터 20번 포트
* Passive Mode : 제어 21번 포트, 데이터 1024 이상 포트
- SNMP
MIB 는 SNMP 에서 모니터링 해야하는 객체 정보를 가짐
* 명령어
get : 장비의 상태 및 기동시간등의 관리정보 읽기
get-next : 관리자가 해당 트리보다 하위층 정보 읽기
set : MIB 를 조작하여 장비 제어
Trap : 관리자에게 보고하는 Event
- Transport 계층 : 애플리케이션 계층의 메세지에 TCP 또는 UDP 헤더 붙이면 Segment
* TCP
- TCP-3way-handshaking
- 혼잡제어 : 동일한 ACK 번호가 송신자에게 되돌아오면 전송속도 낮춤
GO-BACK-N 방법으로 되돌아온 ACK 번호 이후의 것을 재전송
- TCP 프로토콜 상태 확인 → netstat -p tcp
- TCP 헤더 구조
출처 : http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=1889&id=1103
- TCP 에러제어
* FEC(Forward Error Correction)
수신측이 에러처리, 재전송 요구 없이 수정, 해밍코드, 상승 코드
* BEC(Backward Error Correction)
송신측이 에러처리, 데이터 블록을 다시 전송 요청, 패리티 검사, CRC
# CRC 방법
- 송신 : 임의의 CRC 발생코드 생성
발생코드의 최고 차수 만큼 데이터에 0을 붙임
만들어진 값을 CRC 발생코드로 나눔 → 0이면 그대로 전송, 아니면 나머지 값 붙여 전송
- 수신 : 받은 데이터를 CRC 발생코드로 나눔
0이면 정상, 0 아니면 오류 발생
- BEC 기법
* Stop-and-Wait : 에러 발생 즉시 재전송
* Go-BACK-N : 오류 이후의 모든 프레임 재전송
* Selective Repeat : 오류 발생한 프레임만 재전송
- TCP 흐름제어
전송패킷의 양, 속도를 조절하여 네트워크 효율적 사용
* 슬라이딩 윈도우 : 호스트 간 Size 정보 제공
일정한 수의 패킷을 전송하고 Ack 확인 되면 윈도우 이동하여 전송
- TCP 혼잡제어
TCP slow start : 전송속도를 초기값부터 지속적으로 올리는 방법
수신자에게 중복된 Ack 값이 오면 송신 속도를 초기 값으로
일정 시간동안 Ack 수신 안되면 전송속도를 임계값의 50%로 낮춤
cwnd(congestion window) 를 지수의 크기로 증가
→ 1,24,8… 임계 값에 이르면 congestion avoidence 동작
#congestion avoidence → 1/cwnd 만큼씩 증가
- UDP : 비연결, 비신뢰형, 패킷 빠르게 전달, 간단한 헤더 구조
#VoIP : UDP 프로토콜
RTP : 음성 전송, RTCP : 에러제어
스니핑 노출, DdoS 취약
- 인터넷 계층, IP 헤더 붙이면 데이터 그램
* 라우팅 범위에 따른 라우팅 프로토콜 분류
IGP : 동일 그룹내에서 라우팅 정보 교환, EGP : 다른 그룹과의 라우팅 정보 교환
* 라우팅 프로토콜 분류
Distance Vector |
Link State |
|
알고리즘 |
최단 경로, 라우터 수, hop count, TTL |
최소신장트리, 다익스트라 알고리즘, cost 산정 |
동작원리 |
네트워크 변화 발생 시 해당정보 인접 라우터에 정기적 전달 |
네트워크 변화 발생 시 링크 상태 정보를 인접 라우터에 전달 |
정보 전송 시점 |
일정 주기 |
변화 발생 시에만 |
프로토콜 |
RIP, IGRP, EIGRP, BGP |
OSPF, IS-IS |
단점 |
트래픽 유발, 루핑 발생 가능성 |
라우터 리소스 많이 사용, 동기화 실패 가능성 |
- 스패닝 트리
* 최소 비용 신장 트리 : 가장 적은 비용으로 트리를 만듦
- kruskal 알고리즘
각 단계에서 가중치 적은 간선 선택, 사이클 만들어 지면 선택 안함
- prim 알고리즘
정점을 하나씩 추가하여 최소 비용 정점 계산
- RIP : RFC 1058, 홉수 사용, 16hop 이상이면 폐기, 대규모 환경에 부적합
수신된 목적지 거리값과 현재 거리값을 비교하여 작은것을 라우팅 테이블에 반영
- OSPF : RFC 1247, 링크비용, 대규모 환경에 적합
delay, throughput, reliability 를 이용해 기본 throughput 만 허용
- BGP : AS 상호간의 라우팅, 일반적으로 ISP 사업자들 간 사용
179번 TCP 포트, 변화 있을때 neighbor router 에게 갱신 정보 전달
IBGP, EBGP
- IP
* ipv4 : 32비트 주소체계, 8비트씩 4부분
* ipv6 : 128비트 주소체계, 16비트씩 8부분
* IP 헤더 구조
- Version
- Header Length
- Type of Service : 서비스 유형
- Total Length : 데이터그램 byte 수
- Identification : 데이터그램 식별
- Flags & Offset : 단편화 정보
- Time To Live : 통과 가능한 라우터 수
- Protocol : ICMP, TCP, UDP
- Header checksum : 체크섬 계산
* MTU(Maximum Transmission Unit)
한번에 통과 가능한 패킷의 최대 크기
정보를 Flags와 offset 이 가짐, 보통 1500
* 윈도우 netstat -b → 어떤 프로세스가 네트워크를 사용하는지, 상태 및 실행파일
- ICMP : TCP/IP 오류제어 프로토콜, 주요 → 오류보고, 질의
* ICMP 메시지
Type |
Message |
비고 |
0 |
Echo Reply |
|
3 |
Destination Unreachable |
라우터가 목적지 찾지 못할 경우 |
4 |
source quench |
패킷의 빠른 송신으로 Network에 무리 주는 호스트 제지 |
5 |
Redirection |
Smurf 공격에 사용 |
8 |
Echo Request |
|
11 |
Time Exceeded |
시간 경과 |
12 |
Parameter Problem |
헤더의 잘못된 정보 |
13 |
Timestamp Request |
|
14 |
Timestamp Reply |
|
15 |
Information Request |
|
16 |
Information Reply |
|
17 |
Address Mask Request |
|
18 |
Address Mask Reply |
# 윈도우 기본 TTL 128, 리눅스 기본 TTL 64
- 데이터 전송 방식
* unicast : 1:1 방식
* Broadcast : 1:N 방식, 서브넷 상의 모든 수신자
* Multicast : M:N 방식, 하나이상의 송신자 → 특정 그룹 수신자
* anycast : IPv6에 추가됨, 등록된 노드 중 최단경로 노드 한개에만 발송, Broadcast 없어짐
'자격증 > 보안기사' 카테고리의 다른 글
02_네트워크_3 (0) | 2021.01.23 |
---|---|
02_네트워크_2 (0) | 2021.01.23 |
01_시스템 보안 정리_3 (0) | 2021.01.22 |
01_시스템 보안 정리_2 (0) | 2021.01.21 |
01_시스템 보안 정리_1 (0) | 2021.01.21 |
댓글