일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- hackerrank
- PHP 웹페이지 만들기
- 파이썬
- HTML
- C언어
- 머신러닝
- BOJ
- Python
- 백준
- 숙명여자대학교 정보보안 동아리
- c
- 기계학습
- siss
- WarGame
- SWEA
- 풀이
- Javascript
- 생활코딩
- XSS Game
- 드림핵
- 웹페이지 만들기
- The Loard of BOF
- CSS
- 자료구조 복습
- Sookmyung Information Security Study
- hackctf
- c++
- lob
- BOJ Python
- 숙명여자대학교 정보보안동아리
- Today
- Total
혜랑's STORY
[Network Security Study] 1주차 이론 정리 본문
# 네트워크 분류
- 네트워크란, 두 개 이상의 노드가 서로의 자원을 고유할 수 있는 데이터 통신 환경이라고 볼 수 있다.
- 거리를 기반으로 네트워크를 분류하면, 크게 3가지로 분류할 수 있다.
- LAN(Local Area Network): 근거리 네트워크로 사무실과 같은 소규모 공간 내의 고속 통신 회선이다.
- MAN(Metropolitan Area Network): LAN과 WAN의 중간 형태
- WAN(Wide Area Network): 광대역 네트워크망으로 유관한 LAN간의 연결
# 이더넷
- 이더넷이란, 버스 구조 방식의 근거리통신망(LAN)을 대표하는 기술이며 오늘날 가장 대표적인 기술이다. 네트워크에 연결되는 대부분의 장비들이 이더넷을 통해 연결되어 있다.
- 다시말해 이더넷은 네트워크를 구성하는 방식 중 전 세계에서 폭넓게 이용되고 있는 네트워크 규격이며, 각 기기들의 고유의 주소(MAC 주소)를 가지고 호스트간의 데이터를 주고 받을 수 있는 방식을 쓰고 있다.
- MAC 주소는 네트워크 하드웨어를 식별하는 주소로 하드웨어 당 고유의 값을 가지고 있다.
이더넷 케이블
- UTP 케이블(Unshielded Twisted Pair cable): 가장 저렴하며 대중적인 랜케이블이다. 랜선, 인터넷선, 크로스오버 케이블로도 불린다. LAN 케이블은 8개의 구리선으로 구성되어 있으며, 마감의 방식(배열), 케이블의 버전(CAT)이 중요하다.
- 광 케이블: 멀티모드, 단일모드 두 가지 유형이 있고, 전송 속도가 매우 빠르고 오차가 적어 고속 데이터 송수신과 높은 신뢰도를 필요로 하는 데이터 전송 분야에서 자주 사용된다. 전송 손실이 매우 낮고 긴 수명과 빛을 이용해 정보를 보내 전기적인 간섭을 받지 않는다는 점이 있어 보안성이 높다는 장점이 있다.
이더넷 장치
- 스위치(Switch) 및 라우터(Router): 스위치와 라우터는 여러 컴퓨터나 네트워크를 함께 연결하여 다른 모든 기기간의 통신이 가능하게 한다.
- 게이트웨이(Gateway)와 브리지(Bridge): 게이트웨이이와 브리지는 여러 이더넷 네트워크를 함께 연결하고 이들 사이의 통신을 허용한다. 게이트웨이의 경우 두개의 유사하지 않은 네트워크를 함께 연결하고, 브리지는 두 개의 유사한 네트워크를 연결하여 하나의 네트워크만 표시한다.
이더넷의 장점
- 속도: 무선에 비해 이더넷 연결이 제공하는 속도가 훨씬 빠르다.
- 보안: 공격이 발생하기 쉬운 Wi-Fi와 달리 이더넷 연결의 보안 수준은 높다. 이더넷 연결을 사용하면 네트워크를 사용하는 사람이 제어하기 때문에 쉽게 정보가 유출되지 않는다.
- 신뢰성: 이더넷 연결은 무선 주파수의 방해가 없기 때문에 안정성있다. 또한 연결된 장치 간에 대역폭이 공유되지 않기 때문에 대역폭이 부족하지도 않다.
- 효울성: Wi-Fi 연결보다 전력 소모량이 낮기 때문에 비용 및 전력 면에서 매우 효율적이다.
이더넷의 단점
- 이동성: Wi-Fi-와 달리 장치는 특정 장소에서 이용하기 때문에 장소에 제약이 생길 수 있다.
- 확장성: 네트워크를 확장하기 위해서는 더 많은 라우터나 스위치, 케이블이 필요하기 때문에 추가 비용이 발생하고 시간이 오래 걸린다.
- 연결: 여러 장치에 동시에 연결하지 못하고 특정 기기에만 연결할 수 있다. 더 많은 연결을 위해서는 더 많은 케이블이 사용되기 때문에 비용 부담이 발생한다.
# 패킷(Packet)
- 패킷이란, 데이터를 일정 크기로 자른 것으로 통상 헤더, 데이터, 트레일러로 구성된다.
헤더 | 페이로드(내용/데이터) | 트레일러 |
- 헤더: 패킷의 주소(송수신 주소) 등 주요 제어 정보들이 포함되는 것이 일반적이다. -> IP 헤더, MAC 헤더 참조
- 트레일러: 패킷 에러 검출등에 사용한다. -> FCS 등 참조
- 꼬리: 없는 경우도 있기에 생략한다.
- 패킷은 통신망을 통하여 노드에서 노드로 전해짐으로써 전송된다. 패킷의 전단은 통상적으로 매 경유지마다 축적교환(Store and Forward Switching) 방식으로 목적지까지 전달하게 된다.
- 네트워크 계층(Layer 3)에서 정의되는 데이터 단위이고, 그 외의 OS 계층에서 주고 받는 정보의 단위를 패킷으로 통칭하기도 한다. 인터넷(Internet)에서는 IP 데이터그램을 패킷이라고도 부른다.
# 프로토콜(Protocol)
- 프로토콜이란, 컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다. 다시말해 기기 간 교환되는 데이터의 형식을 정의하는 통신 규약 및 약속이다.
프로토콜의 기본 요소
- 구문(Syntax): 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호 레벨(Signal Level) 등을 규정한다.
- 의미(Semantics): 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정한다.
- 시간(Timing): 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정한다.
프로토콜 종류
계층 | 프로토콜 |
응용(Application) | HTTP, SMTP, FTP, Telnet |
표현(Presentation) | ASCII, MPEG, JPEG, MIDI |
세션(Session) | NetBIOS, SAP, SDP, NWLink |
전송(Transport) | TCP, UDP, SPX |
네트워크(Network) | IP, IPX |
데이터 링크(Data Link) | Ethernet, Token Ring, FDDI, Apple Talk |
물리(Physical) | X(없음) |
프로토콜의 기능
- 단편화(Fragmentation): 송신 측에서는 긴 데이터 블록을 손쉽게 전송할 수 있도록 크기가 똑같은 작은 블록으로 나누어 전송한다.
- 재합성(Assembly): 수식 측에서 쪼개진 작은 데이터 블록을 재합성하여 원래의 메시지로 복원하는 기능이다.
- 캡슐화(Encapsulation): 각 프로토콜에 적합한 데이터 블록을 만들려고 데이터에 정보를 추가하는 것으로 플래그, 주소, 제어 정보, 오류 검출 부호 등을 부학하는 기능이다.
- 연결 제어(Connection Control): 비연결 데이터 전송(데이터그램)과 연결 위주 데이터 전송(가상회성)을 위한 통신로를 개설, 유지, 종결하는 기능이다.
- 흐름 제어(Flow Control): 데이터 양이나 통신 속도 등이 수신 측의 처리 능력을 초과하지 않도록 조절하는 기능이다.
- 오류 제어(Error Contorl): 데이터 전송 중 발생할 수 있는 오류나 착오 등을 검출하고 정정하는 기능이다.
- 순서 결정(Sequencing): 연결 위주의 데이터를 전송할 때 송신 측이 보내는 데이터 단위 순서대로 수신 측에 전달하는 기능이다.
- 주소 설정(Addressing): 발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능이다.
- 동기화(Synchronization): 두 통신 객체의 상태(시작, 종류, 검사 등)를 일치시키는 기능이다.
- 다중화(Multiplexing): 하나의 통신로를 여러 개로 나누거나 회선 여러 개를 하나의 통신로로 변환시켜 다수의 가입자가 동시에 사용할 수 있도록 하는 기능이다.
- 전송 서비스(Transmission Service): 통신 객체를 사용하기 쉽도록 별도로 추가 서비스(패리티 검사, 보안도, 서비스 등급, 우선순위 등)를 제공하는 기능이다.
# TCP(Transmission Control Protocol)
- 전송 제어 프로토콜이란, 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로 널리 불리고 있다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(8비트)을 안정적으로 교환할 수 있게 한다.
- 전송 계층에 위치하며, 네트워크의 정보 전달을 통제하는 프로토콜이다.
- TCP는 데이터 스트림으로부터 데이터를 받아 들여 이것으르 청크 단위로 분할한 뒤 TCP 헤더를 덧붙여 TCP 세그먼트를 생성한다. TCP 세그먼트는 IP 데이터그램에 캡슐화되어 상대방과 주고 받게 되며, TCP 세그먼트의 구조는 다음과 같다.
(각 구성 요소에 대한 자세한 설명은 이곳을 참고하면 된다.)
- 프로토콜의 작동은 크게 세 가지 흐름으로 구분된다.
- 연결 생성(Connection Establishment): 연결을 생성하기 위해 3방향 핸드셰이크(3way handshaking)을 사용한다.
- SYN: 클라이언트가 서버에서 SYN 메시지를 보낸다. 이 메시지에 포함된 시퀀스 번호는 클라이언트가 임의로 설정한 값 A
- SYN-ACK: 서버가 클라이언트에게 SYN-ACK 메시지로 응답한다. 이 메시지에 포함된 시퀀스 번호는 서버가 임의로 설정한 값 B, 응답 번호는 (A+1)
- ACK: 클라이언트가 서버에게 ACK 메시지를 보낸다. 이 메시지에 포함된 응답 번호는 (B+1)
- 자료 전송(Data Transfer)
- 연결 종료(Connection Termination): 연결을 종료하기 위해 4방향 핸드셰이크(4way handshaking)을 사용한다.
- FIN: 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 이때 A 클라이언트는 FIN-WAIT 상태가 된다.
- ACK: B서버는 FIN 플래그를 받고, 일단 확인메시지 ACK를 보내고 자신의 통신이 끝날 때 까지 기다린다. 이때 B 서버는 CLOSE_WAIT 상태이다.
- FIN: 연결을 종료할 준비가 되면, 연결 해지를 위한 준비가 되었음을 알리기 위해 클라이언트에게 FIN 플래그를 전송한다. 이때 B서버의 상태는 LAST-ACK 이다.
- ACK: 클라이언트는 해지 준비가 되었다는 ACK를 확인했다는 메시지를 보낸다. 이때 A 클라이언트의 상태가 FIN-WAIT에서 TIME-WAIT으로 변경된다.
#UDP(User Datagram Protocol)
- 사용자 데이터그램 프로토콜이란, 데이터를 데이터그램 단위로 처리하는 프로토콜이다.
- TCP와 달리 UDP는 비연결형 프로토콜로 연결을 위해 할당되는 논리적인 경로가 없기 때문에 각가의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다.
TCP와 UDP 비교
- 신뢰성: TCP는 메시지 수신을 확인하지만 UDP는 수신자가 메시지를 수신했는지 확인할 수 없다.
- 순서 정렬: TCP에서는 메시지가 보내진 순서를 보장하기 위해 재조립하지만 UDP는 메시지 도착 순서를 예측할 수 없다.
- 부하: TCP보다 속도가 일반적으로 빠르고 오버헤드가 적다.
- UDP 패킷 구조는 다음과 같다.
# IRC(Internet Relay Chat)
- 인터넷 릴레이 챗이란 실시간 채팅 프로토콜로 채널이라 불리는 토론 포럼에서 그룹 대화를 하기 위해 설계되었으나 개인 메시지를 통한 1:1 소톨, 그리고 파일 공유를 포함한 채팅 및 대화 전송도 가능하다.
- IRC는 TCP 기반의 공개 네트워크 프로토콜로 TCP뿐만이 아니라 TLS을 지원하기도 한다. IRC 서버는 IRC 네트워크 확장을 목적으로 다른 IRC ㅓ버들로 접속이 가능하고, 사용자들은 클라이언트를 서버에 연결함으로써 IRC 네트워크에 접근한다.
- IRC 프로토콜은 문자는 8bit라고만 규정하고 있을 뿐, 이용하는 텍스트에 대한 문자 인코딩은 규정하고 있지 않다. IRC가 생겨났을 당시 한 인코딩만 지원하는 텍스트 터미널만 쓰였고, IRC 프로토콜 설계짜들ㅇ느 IRC 사용자간 대화가 호환 가능한 인코딩 하에 이루어질 것이라고 생각했기 때문에 사용자들이 서로 다른 클라이언트와 다른 플랫폼 상에서 영어를 제외한 다른 언어를 써서 서로 대화하고자 할 때 문제가 된다.
- IRC 서버들의 표준적인 구조는 일종의 트리(비순환 그래프)를 이룬다. 메시지들은 트리 내에서 전달에 필요한 가지(branch)들만을 따라 전단된다. 반면에 네트워크 스테이트(network state)는 모든 서버에게 전송되며 일반적으로 매우 높은 수준의 비명시적 신뢰 관계가 서버들 사이에 존재한다.
# Requset와 Response 구조
- 전송 시 보내는 주체는 받는 주체에게 요청을 보내고, 받는 주체는 요청을 보낸 주체에게 응답을 보낸다. 즉, 받는 주체는 편지의 발신자고, 받는 주체는 수신자가 된다.
Request 메시지 구조
- Start Line: 요청의 첫 번째 줄에 해당된다.
- HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분으로 주로 GET, POST, DELETE가 많이 쓰인다.
- Request target: 해당 reauest가 전송되는 목표 url
- HTTP Version: 말 그대로 사용되는 HTTP 버전을 뜻한다. 주로 1.1버전이 널리 쓰인다.
- Header: 해당 요청에 대한 추가 정보(메타 데이터)를 담고 있는 부분이다.
- Key:Value 값으로 되어 있다.
Headers: {
Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
(ex. www.apple.co.kr)
User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, explorer)
Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
Content-Length: body 내용의 길이
Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
}
3. Body: 해당 요청의 실제 내용을 담고 있으며 주로 Body를 사용하는 메소드는 POST이다.
Body: {
"user_email": "jun.choi@gmail.com"
"user_password": "wecode"
}
Response 메시지 구조
- Status Line: 응답의 상태 줄로 응답은 요청에 대한 처리 상태를 클라이언트에게 알려주면서 내용을 시작한다.
- HTTP Version: 요청의 HTTP 버전과 동일하다.
- Status Code: 응단 메세지의 상태 코드이다.
- Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트이다.
- Headers: 요청의 헤더와 동일하며 응답의 추가 정보(메타 데이터)를 담고 있는 부분이다.
- Body: 요청의 Body와 일반적으로 동일하나, 요청의 메소드에 따라 Body가 항상 존재하지 않듯이 응답도 응답의 형태에 따라 없을 수 있다. 가장 많이 사용되는 Body의 데이터 타입은 JSON(Javascript Object Notation)이다.
Body: {
"message": "SUCCESS"
"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
}
'무지성 공부방 > Network Security' 카테고리의 다른 글
[Network Security Study] 4주차 (0) | 2022.05.13 |
---|---|
[Network Security Study] 3주차 실습 (0) | 2022.05.06 |
[Network Security Study] 3주차 이론 (0) | 2022.05.06 |
[Network Security Study] 2주차 실습 (0) | 2022.04.29 |
[Network Security Study] 2주차 이론 (0) | 2022.04.29 |