애플리케이션 계층 (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 |
알고리즘 | 최단경로를 구하는 벨만 포드 알고리즘 기반 | 최소 신장 트리를 구하는 다익스트라 알고리즘 기반 |
동작 원리 | 네트워크 변화 발생 시 해당 정보를 인접한 라우터에 정기적으로 전달하고, 인접 라우터에서는 라우팅 테이블에 정보 갱신 | |
'운영체제(OS) & Network' 카테고리의 다른 글
[정보보안기사] 05. 네트워크 일반 (8) | 2024.09.17 |
---|---|
[정보보안기사] 02. 운영체제 구조 (0) | 2024.09.17 |
API 그리고 AP 서버란 무엇인가? (0) | 2024.07.06 |
스토리지 이중화 (Multipath/MPIO) (0) | 2024.07.01 |
네트워크 이중화 (Bonding & Teaming) (0) | 2024.07.01 |