운영체제(OS) & Network

[정보보안기사] 06. 네트워크 활용(TCP/IP 구조)

jih0ssang 2024. 9. 17. 13:42

애플리케이션 계층 (Application Layer)

 

애플리케이션 관련 서비스

서비스 내용
FTP •File Transfer Protocol
•사용자 파일의 업로드 혹은 다운로드를 수행하는 프로그램
•파일 전송을 위한 인터넷 표준으로 제어 접속과 데이터 접속을 위한 분리된 포트를 사용함

DNS •Domain Name System
•DNS Query를 사용해서 DNS Server에 URL을 전송하고 해당 URL을 전송하고 해당 URL에 매핑되는 IP 주소를 제공하는 서비스
HTTP •Hyper Text Transfer Protocol
Telnet •특정 지역의 사용자가 지역적으로 다른 곳에 위치한 컴퓨터를 온라인으로 연결하여 사용하는 서비스
•4계층으로, 서버에서 HTTP 통신이 안될 경우, 통신 확인을 위해 사용
SMTP •Simple Mail Transfer Protocol
•암호화 및 인증 기능 없이 사용자의 E-Mail을 전송하는 프로토콜
SNMP •Simple Network Management Protocol
•MIME라는 전자우편 데이터 형식으로 메일 전송 및 수신

 

 

HTTP (Hyper Text Transfer Protocol)

  • 웹 브라우저와 웹 서버 간 메시지를 송신 및 수신하는 프로토콜
  • 개방형 프로토콜로 송수신되는 메시지의 구조가 공개되어 있음
  • TCP를 사용하여 신뢰성 있게 데이터를 송수신
  • TCP의 연결을 지속적으로 유지하는 것이 아니라, 요청이 있을 때마다 요청하여 연결하고 메시지를 처리한 후 연결을 종료하는 방식
  • TCP 기반의 프로토콜로 80번 Port를 사용하고, Request 및 Response 구조를 가짐
  • State-less (상태 저장하지 않음) 프로토콜을 구성

 

HTTP 프로토콜 Version

HTTP 프로토콜은 Version에 따라 웹 브라우저에서 웹 서버로 전송을 요청할 때 일부 파라미터가 다름

구분 HTTP Version 1.0 HTTP Version 1.1 HTTP Version 2.0
연결   요청이후 응답이 오면 즉시 연결 종료
  매 요청마다 새로운 TCP 연결 생성

 연결 수행마다 3-Way Handshaking 기법 사용
요청이후 응답이 오면 어느 정도 대기 후(Keep Alive time)에 연결 종료 
 Keep-Alive를 통해 연결 재사용
하나의 연결로 여러 요청/응답 동시 처리
•요청이후 응답이 오면 종료하지만 연결이 열려있는 시간이 긺
요청 단일 요청/응답 요청은 병렬로 보내지만
여전히 응답을 순차적 처리 
멀티플렉싱으로 응답 여부에 상관없이 동시 요청/응답 처리
헤더 없음 없음 서버가 클라이언트의 요청 없이 리소스 선제적 전송
단점 연결 오버헤드 큼
• 성능 향상 (Keep-Alive)
헤더 크기 증가
•지연 감소
구현 복잡

 

HTTP 세션 연결 과정

0. Server는 서비스 포트(80) 개방 후 클라이언트의 요청을 Listen 한다.

1. Client가 Server에게 접속 요청(SYN)

2. Server는 Client에게 요청에 대한 응답(SYN, ACK) 전송

3. Client는 응답에 대한 확인 (ACK) 전송

 

4. Client는 Server에게 HTTP-GET 페이지 요청

5. Server는 Client 요청에 대한 점검 (Checksum을 통한 무결성 확인) 전송

 

6. Server는 Client 요청에 대한 HTTP 문서 제공

 

 

HTTP 프로토콜 구조

  • HTTP Header와 Body로 구성
  • HTTP Request 시 전달하는 웹 브라우저 정보, 요청방식, 파라미터 등이 있고
    HTTP Body는 Request할 때 사용되지 않고
    POST 방식의 Request 시 Body에 파라미터 정보를 넣고 전송하는 GET 방식이 있다.

 

 

HTTP Requset 

 

HTTP Requset 시 Header 구조

구조 설명
Request Method • 호출되는 메소드
• GET, POST, OPTIONS, PUT, DELETE, TRACE, CONNECT
Accept • 웹 브라우저에서 사용 가능한 미디어 타입
• text/*, text/html 등
Accept-Language 웹 브라우저가 인식할 수 있는 언어
User-Agent 웹 브라우저 정보
Accept-Encoding 웹 브라우저에서 제공되는 인코딩 방식
Host 웹 서버의 기본 URL 
Connection 연결 지속 및 연결 끊기를 나타내며 Keep Alive 혹은 close

 

 

Request Method

메서드 내용
GET URL에 입력 파라미터를 넣어서 요청
전송 가능한 데이터 양(입력 파라미터)이 제한됨
POST 요청 파라미터를 HTTP Body에 넣어서 전송
전송 크기에 제한이 없음
HEAD 응답 메시지 없이 전송되는 것
PUT 메시지 Body에 데이터를 지정한 URL 이름이 지정.
FTP PUT 기능과 동일.
DELETE 서버에서 요구하는 URL에 지정된 자원을 지울 수 있음
TRACE  요구 메시지가 최종 수신되는 경로를 기록

 

 

 

 

 

HTTP Response

HTTP Response 시 Header 구조

구조 설명
Status Code • HTTP 응답 코드를 의미하고 200은 성공적으로 처리한 것을 의미
Server • 서버 프로그램 이름과 버전 전송을 의미
• 앞 페이지의 HTTP Response 시 Header 그림에서 "Server" 필드 부분을 보면
Apache 웹 서버 2.2.22 버전에 Debian 리눅스 운영체제인 것을 확인 가능.
Expires 자원의 만기 일자 
Cache Control 캐시 사용 여부. no-cache의 경우, 캐시 사용하지 않음
Content-Encoding 응답되는 메시지의 인코딩 방식
Content-Length 바이트 단위로 응답되는 리소스의 크기
Keep-Alive 연결 유지 시간. timeout 5초, 최대 100초로 설정되어 있음
Connection Keep-Alive 사용 여부
Content-Type 응답되는 미디어 타입

 

 

클라이언트 측의 정보 유지

방식 내용
Cookie 클라이언트 측에서 상태 정보를 저장, 최대 4Kbyte
만료날짜를 지정하여 그때까지 브라우저에 저장 
Session 클라이언트와 웹 서버 사이의 네트워크 연결이 지속적으로 유지되는 상태

 

쿠키 값 중에서 연결이 종료되면 쿠키 값도 자동 삭제되는 것이 있는데, 이것을 세션 쿠키라고 한다.

 

 

Cookie와 Session의 차이점

방식 Cookie Session
저장위치 클라이언트 서버
저장 형태 Text 형식 Object 형식
종료 시점 쿠키 저장 시에 종료 시점을 설정하며,
설정하지 않으면 브라우저가 종료 시점이 됨
정확한 시점을 알 수 없음
자원 클라이언트 자원 서버 자원
용량 한 도메인당 20개
쿠키 하나에 4KB, 총 300개
용량 제한 없음

 

 

전송 계층 (Transport Layer)

세그먼트(Segment)

애플리케이션 계층의 메시지에 TCP 혹은 UDP의 Header를 붙인 것

 

신뢰성 있는 전송

수신자는 데이터를 송신 받고 ACK 신호를 송신자에게 전송한다.

송신자는 ACK 가 수신되지 않으면 재전송을 실행한다.

 

 

 

흐름 제어(Flow Control)

수신자가 메시지를 제대로 받지 못하면, 송신자는 전송 속도를 늦추어 네트워크 효율성을 제어한다.

 

Stop and Wait
• 요청에 대한 응답이 올 때 까지 정지하고 대기
• 속도 오래 걸림

Sliding Window
• 윈도우 크기: 송신자가 한 번에 전송할 수 있는 패킷의 수
• 송신자가 수신자의 처리 속도에 맞춰, 전송 속도 조절한다.
• 이는 고정된 비율로 데이터를 전송하는 방식
• 수신자가 데이터를 받는 속도에 기반해 전송 속도를 조정

 

 

 

 

혼잡 제어(Congestion Control)

수신자의 메모리 버퍼 정보 즉, Window Size을 송신자가 수신 받아서 수신자의 버퍼 상태를 보고 전송 속도를 조절한다.

 

AIMD (Additional Increase Multiple Decrease)
윈도우 크기를 7로 잡고 전송 시, 정상적으로 SYN+ACK이 회신되면크기 1만큼 증가한다.
• 윈도우 크기를 8로 전송 시, SYN+ACK이 회신되지 않는다면 크기 1/2만큼 감소한다.
• ex) 송신자 ----1~7----> 수신자
          송신자 <----1~4---- 수신자
          송신자 -----5~7---->수신자     

 

 

에러 제어(Error Control)

에러는 에러가 발생했는지 탐지(Detection)해야 하고, 그 다음 에러를 수정해야 한다.

우선 탐지는 수신자가 제대로 수신 받고 있는지 송신자에게 알려주어야 하고

수신 받은 데이터에 에러가 없는지는 송신자와 수신자 간의 일정한 약속으로 확인해야 한다.

 

FEC(Forward Error Correction)
• 수신 받은 데이터에 에러가 없는지 확인한다.
• 패리티 검사(Parity Check): 1의 개수가 짝수 개인지, 홀수 개인지 확인
• CRC: 많이 사용되는 기법. Checksum 비트를 전송하여 Checksum 비트로 수신자가 연산하여 에러여부를 확인
• 블록 합계 검사: 특정 합계를 계산하여 합계가 맞는지 확인
• 해밍 코드(Hamming Code): 에러 발생 시 수정까지 가능


BEC(Backward Error Correction)
• 수신자가 데이터를 수신 받지 못하면 재전송한다.
• Stop-and-Wait: 에러 발생 시 재전송
Go-Back-N: 오류 발생 또는 잃어버린 프레임 이후 모든 프레임을 재요청하거나 타임아웃으로 자동 재송신
Selective Repeat: 오류 발생 또는 잃어버린 프레임에 대해서만 재요청 또는 타임아웃으로 인한 자동 재송신

 

Checksum Bit

  • 패킷의 무결성을 확인하는 방법
  • 송신 도중 변조되지 않았는지 확인
  • 무결성을 확인하기 위해 CRC(Cyclic Redundancy Check) 코드를 사용

 

 

인터넷 계층 (Internet Layer)

 

라우팅

정적 경로(Static Routing)

동적 경로(Dynamic Routing)

 

라우팅 프로토콜(Routing Protocol)

Routing 방법 내용
정적 경로
(Static Routing)
관리자가 직접 라우팅 테이블의 경로를 설정, 경로가 고정적이며, 수동 갱신하는 방식
기법: Floating static routing 등
동적 경로
(Dynamic Routing)
• 네트워크 관리자의 개입 없이 네트워크 상황 변화에 따라 인접 라우터 간에 자동으로 경로 정보를 교환하도록 설정
경로 정보를 교환하여 최적의 경로를 결정 및 상황에 따른 능동 대처가 가능
기법: Distance Vector routing, Linked state routing 등

 

 

라우팅 범위에 따른 라우팅 프로토콜 분류

Routing Protocol 내용
IGP(Internal Gateway routing protocol) 동일 그룹(기업 또는 ISP) 내에서 라우팅 정보를 교환
EGP(Exterior Gateway routing protocol) 다른 그룹과의 라우팅 정보를 교환

 

 

라우팅 프로토콜 분류

 

 

구분 Distance Vector Link State
알고리즘 최단경로를 구하는 벨만 포드 알고리즘 기반 최소 신장 트리를 구하는 다익스트라 알고리즘 기반
동작 원리 네트워크 변화 발생 시 해당 정보를 인접한 라우터에 정기적으로 전달하고, 인접 라우터에서는 라우팅 테이블에 정보 갱신