ㅁ 네트워크 프로토콜
네트워크 프로토콜은 네트워크에서 데이터 통신을 원활하게 하기 위해 정의된 규칙과 표준이다.
이를 통해 데이터의 형식, 전송 방식, 오류 처리 등을 정의하여 다양한 기기들이 상호작용하고 통신할 수 있게 한다.
1. 데이터 패키징 및 형식화
데이터를 작은 패킷으로 나누고 이를 전송 가능한 형식으로 변환한다.
2. 주소 지정 및 라우팅
데이터를 올바른 수신자에게 전달하기 위해 주소를 지정하고, 경로를 설정한다.
3. 연결 설정 & 관리
통신 세션을 설정하고 관리, 데이터가 순서대로 전달되고, 오류 없이 전송되도록 한다.
4. 오류 검출 및 수정
데이터 전송 중 발생할 수 있는 오류를 검출하고 수정한다.
5. 흐름 제어
송신자가 수신자의 처리 능력을 초과하지 않도록 데이터 전송 속도를 조절한다.
6. 보안
데이터의 기밀성, 무결성 및 인증을 보장한다.
네트워크 프로토콜에는 대표적으로 TCP, UDP, HTTP, HTTPS, FTP, SMTP 등이 있다.
[패킷]
네트워크를 통해 전송되는 데이터의 작은 단위
데이터는 전송되기 전에 여러 개의 패킷으로 분할되며, 각 패킷에는 송신지와 목적지 정보, 오류 검출 정보등이 포함된다.
■ HTTP (HyperText Transfer Protocol)
웹 브라우저와 웹 서버 간에 웹페이지 같은 자원을 주고 받을 때 쓰는 통신 규약이다.
LIKE '편지봉투 없이 편지를 보내는 것과 같다. 누구나 편지 내용을 볼 수 있다.'
□ http요청과 응답은
- 요청 (Request) : 클라이언트 -> 서버 데이터 요청
> 메서드 (GET, POST, PUT, DELETE)
> URL
> HTTP 버전
> 헤더
> 본문 (POST와 같은 메서드에는 본문에 데이터가 포함된다.)
- 응답(Response) : 서버 -> 클라이언트 응답
> HTTP 상태 코드 (200 OK, 404 Not Found 등)
> HTTP 버전
> 헤더
> 본문 (HTML, JSON, XML 등)
과 같은 구조로 이루어져 있다.
□ 특징
1. 텍스트 기반 : http는 텍스트 기반 프로토콜로, 사람이 읽을 수 있는 형태로 요청과 응답을 교환한다.
2. 비연결성 : 비연결성 프로토콜이다. 하나의 요청/응답 사이클이 끝나면 연결이 끊어진다.
3. 비상태성 : 상태를 유지하지 않는다. 각 요청은 독립적이며, 서버는 이전 요청에 대한 정보를 유지하지 않는다.
http는 텍스트 교환이다. html 페이지도 텍스트다. 단순 텍스트(평문)를 주고 받기 때문에 누군가 네트워크에서 신호를 가로채 본다면 내용이 노출될 수 있고,전송 중에 조작될 수도 있다.
이런 보안상의 문제를 해결 해주는
프로토콜이 바로
■ HTTPS (HyperText Transfer Protocol Secure)
HTTP에 보안 계층(SSL/TLS)을 추가해 데이터를 암호화하고, 통신의 기밀성과 무결성을 보장한다.
1. 암호화 : 데이터는 암호화 되어 전송되므로 중간에서 데이터를 도청하더라도 내용을 알 수 없다.
2. 데이터 무결성 : 데이터가 전송 중에 변경되지 않았음을 보장한다.
3. 인증 : 서버의 신원을 인증함으로써 클라이언트가 신뢰할 수 있는 서버와 통신하고 있음을 보장한다.
http 메시지(텍스트)를 암호화하는 것이다.
LIKE '봉인된 봉투에 편지를 넣어 보내는 것과 같다. 봉투를 열기 전까지는 내용을 알 수 없다.'
□ "https는 대칭키나 공개키 암호화 방식으로 암호화한다."
공개키는 누구나 얻을 수 있고 공개키를 알면 서버가 주는 데이터(response)를 알 수 있는데 보안상 의미가 있을까?
-> 해당 서버로부터 온 응답임을 확신할 수 있다.
공개키로 해독이 가능했으니 반드시 해당 서버의 개인키로 암호화했다는 것을 보장하기 때문이다.
□ 특징
HTTP | HTTPS |
데이터 암호화 없음 | 데이터 암호화 |
빠른 속도 | 속도는 약간 느림 |
보안 취약 | 보안 강화 |
□ 장점
HTTP | HTTPS |
빠른 데이터 전송 | 보안 강화 |
설정이 간단 | 사용자 신뢰도 상승 |
□ 문제점(취약점)
HTTP | HTTPS |
데이터 탈취 위험 | 인증서 비용 |
중간자 공격 가능 | 초기 연결 속도 지연 |
중간자 공격 (Man-in-the-Middle Attack)
: HTTP를 사용할 경우, 공격자가 중간에서 데이터를 가로채거나 조작할 수 있는 위험이 있다.
HTTPS를 사용하면 이런 공격을 방지할 수 있다.
□ 보완
HTTP | HTTPS |
HTTPS로 전환 | 최신 보안 프로토콜 사용, 인증서 관리 |
HTTP는 보안이 없고, HTTPS는 SSL/TLS를 사용하여 보안을 강화한다.
HTTPS는 암호화 과정 때문에 약간 느릴 수 있다.
HTTPS는 SSL/TLS 인증서가 필요하다
HTTP는 평문으로 데이터를 주고받고,
HTTPS는 SSL/TLS를 사용해 데이터를 암호화하여 주고 받는다.
□ CA(Certificate Authority)
SSL/TLS 인증서를 발급하고 관리할 수 있는 기관
도메인 소유자의 신원을 확인하고, 인증서를 발급해 보안 통신을 가능케 한다.
■ SSL/TLS (Secure Socket Layer, Transport Layer Security)
□ SSL : 데이터를 암호화하여 전송하는 보안 프로토콜. 이를 통해 도청과 데이터 변조를 방지한다.
과거에 널리 사용되었으나, 취약점으로 인해 현재는 대부분 사용하지 않는다.
현재는 TLS로 대체되었다.
□ TLS : SSL의 개선된 버전, 강력한 보안 기능을 제공한다.
현재 대부분의 보안 통신에서 사용된다.
□ TLS Handshake
클라이언트와 서버 간의 보안 연결 설정 과정
1. 핸드셰이크 과정 : 클라이언트와 서버가 통신을 시작할 때, 서로를 인증하고 암호화 알고리즘을 협상한다.
- 클라이언트가 서버에 지원하는 암호화 알고리즘과 TLS 버전을 제안하며 연결 요청을 보낸다.
- 서버는 응답하며, 사용할 암호화 알고리즘과 인증서를 클라이언트에게 보낸다.
- 클라이언트는 서버 인증서를 검증하고, 세션 키를 생성하고 교환한다.
- 서버는 클라이언트가 보낸 세션 키로 암호화를 설정한다.
2. 데이터 전송 : 핸드셰이크가 완료되면 세션 키를 사용해 데이터를 암호화하고 전송한다.
3. 연결 종료 : 데이터 전송이 완료되면, 클라이언트와 서버는 연결을 종료한다.
'CS' 카테고리의 다른 글
CS)네트워크_TCP&UDP (0) | 2024.05.30 |
---|---|
CS)네트워크_OSI 7계층 (0) | 2024.05.26 |
CS)네트워크_대역폭 (1) | 2024.05.22 |
CS)네트워크_네트워크 기초 (0) | 2024.05.22 |
CS)Spring_11_스프링 MVC 패턴 (0) | 2024.05.20 |