-
반응형
목차
📌 [네트워크] 심화
📍네트워크의 시작
인터넷 프로토콜, 즉 IP 기반의 네트워크는 미 국방성에서 1969년 진행했던 아르파넷 프로젝트에서 시작되었다
🔗 회선교환 방식
회선교환 방식은 발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결
내가 연결하고 싶은 상대가 다른 상대와 연결중이라면, 상대방 연결이 끊어지고 나서야만 연결 가능
🔗 패킷교환 방식
기존의 사용하던 패킷교환 방식(기존 전화에서 사용하던 방식)의 단점을 보완한 방식
패킷교환 방식은 패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식
인터넷 프로토콜, 줄여서 IP는 출발지와 목적지의 정보를 IP 주소라는 특정한 숫자값으로 표기하고
패킷단위로 데이터를 전송하게 되어 있다
📍IP와 IP Packet
🤔IP란? IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터를 전달
🤔IP 패킷이란? 전송 데이터를 전송하기 위해서 출발지 IP와 목적지 IP의 정보가 포함되어 있다
패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해서 서로 데이터를 전달
🔗 IP 한계
- 비연결성
- 비신뢰성
📍TCP vs UDP
🔗 TCP
전송 제어 프로토콜(Transmission Control Protocol)
TCP 세그먼트에서 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송제어, 순서,
검증 정보 등을 포함한다
🔗 TCP 특징
- 연결 지향 - TCP 3way handshake (가상 연결)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
🔗 UDP
사용자 데이터그램 프로토콜(User Datagram Protocol)
UDP는 IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
🔗 UDP 특징
- 하얀 도화지에 비유 (기능이 거의 없음)
- 비 연결지향 - TCP 3way handshake X
- 데이터 전달 보증 x
- 순서 보장 x
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 신뢰성보다는 연속성이 중요한 서비스에 자주 사용(실시간 스트리밍)
📍OSI 7계층 모델
ISO(International Organization for Standardization)라고 하는 국제표준화기구에서 제정한 표준 규격
제조사와 상관없이 공통으로 사용할 수 있는 네트워크 표준 규격을 정의
- 1계층 - 물리 계층: OSI 모델의 맨 밑에 있는 계층으로서, 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어하는 계층 주로 물리적 연결과 관련된 정보를 정의한다. 주로 전기 신호를 전달하는데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목적이다. e.g. 디지털 또는 아날로그로 신호 변경
- 2계층 - 데이터링크 계층: 네트워크 기기 간의 데이터 전송 및 물리주소(e.g. MAC 주소)를 결정하는 계층. 물리 계층에서 들어온 전기 신호를 모아 알아 볼 수 있는 데이터 형태로 처리, 이 계층에서는 주소 정보를 정의하고 출발지와 도착지 주소를 확인한 후, 데이터 처리를 수행한다. e.g. 브리지 및 스위치, MAC 주소
- 3계층 - 네트워크 계층: OSI 7 계층에서 가장 복잡한 계층 중 하나로서 실제 네트워크 간에 데이터 라우팅을 담당. 이때 라우팅이란 어떤 네트워크 안에서 통신 데이터를 짜여진 알고리즘에 의해 최대한 빠르게 보낼 최적의 경로를 선택하는 과정을 라우팅이라고 한다. e.g. IP 패킷 전송
- 4계층 - 전송 계층: 컴퓨터간 신뢰성 있는 데이터를 서로 주고받을 수 있도록 하는 서비스를 제공하는 계층. 하위 계층에서 신호와 데이터를 올바른 위치로 보내고 신호를 만드는데 집중했다면, 전송 계층에서는 해당 데이터들이 실제로 정상적으로 보내지는지 확인하는 역할을 한다. 네트워크 계층에서 사용되는 패킷은 유실되거나 순서가 바뀌는 경우가 있는 데, 이를 바로 잡아주는 역할도 담당. e.g. TCP/UDP 연결
- 5계층 - 세션 계층: 세션 연결의 설정과 해제, 세션 메시지 전송 등의 기능을 수행하는 계층. 즉, 컴퓨터간의 통신 방식에 대해 결정하는 계층이라고 할 수 있다. 쉽게 말해, 양 끝 단의 프로세스가 연결을 성립하도록 도와주고, 작업을 마친 후에는 연결을 끊는 역할을 한다.
- 6계층 - 표현 계층: 응용 계층으로 전달하거나 전달받는 데이터를 인코딩 또는 디코딩하는 계층. 일종의 번역기 같은 역할을 수행하는 계층이라고 볼 수 있다. e.g. 문자 코드, 압축, 암호화 등의 데이터 변환
- 7계층 - 응용 계층: 최종적으로 사용자와의 인터페이스를 제공하는 계층으로 사용자가 실행하는 응용 프로그램(e.g. Google Chrome)들이 해당 계층에 속한다. e.g. 이메일 및 파일 전송, 웹 사이트 조회
OSI 7계층 모델은 송신과 수신 7계층을 통해 데이터를 주고 받는다.
각 계층은 독립적이므로 데이터가 전달되는 동안 다른 계층의 영향을 받지 않는다.
데이터를 보낼 때 각 계층에서 필요한 정보를 데이터에 추가하는데 이 정보를 헤더라고 하고
헤더가 붙혀 나가는 것을 캡슐화라고 한다.
마지막 물리 계층에 도달하며 송신 측의 데이터링크 계층에서 만들어진 데이터가 전기 신호로 변환되어 수신 측에 전송
데이터를 받는 쪽은 하위 계층에서 상위 계층으로 각 계층을 통해 전달된 데이터를 받는다.
이때 상위 계층으로 데이터를 전달하며 각 계층의 헤더를 제거하는 것을 역캡슐화라고한다.
📍TCP/IP 4계층 모델
OSI 모델을 기반으로 실무적으로 이용할 수 있도록 현실에 맞춰 단순화된 모델
- 4계층: 어플리케이션 계층: OSI 계층의 세션 계층, 표현 계층, 응용 계층에 해당하며 TCP/UDP 기반의 응용 프로그램을 구현할 때 사용합니다. e.g. FTP, HTTP, SSH
- 3계층: 전송 계층: OSI 계층의 전송 계층에 해당하며 통신 노드간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당합니다. e.g. TCP/UDP
- 2계층: 인터넷 계층: OSI 계층의 네트워크 계층에 해당하며 통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅을 담당합니다. e.g. IP, ARP, RARP
- 1계층: 네트워크 인터페이스 계층: OSI 계층의 물리 계층과 데이터 링크 계층에 해당하며 물리적인 주소로 MAC을 사용합니다. e.g. LAN, 패킷망 등에 사용됨
🔗 응용 계층
네트워크 모델의 최상위 계층으로 최종적으로 사용자와의 인터페이스를 제공하는 계층
e.g) 메일을 주고 받는 Outlook과 같은 메일 프로그램
📍HTTP
🔗 HTTP 특징
- 클라이언트 서버 구조(Rquest Response 구조)
- 무상태 프로토콜 (stateless) - 서버 확장성이 좋음, 비연결성(Connectionless) - 연결 유지 x -> 속도가 빠름
- http 메시지
- 단순함, 확장 가능
🔗 HTTP 헤더
HTTP 메시지는 헤더와 바디로 구분
바디 - 메시지 본문 표현을 통해 표형 데이터를 전달, 데이터를 실어 나르는 부분 -> 페이로드
헤더 - HTTP 전송에 필요한 모든 부가정보를 담기 위해 사용, 요청, 응답 둘 다 사용
🔗 HTTP 요청/응답 주요 헤더
요청(Request)
- From : 유저 에이전트 이메일 정보
- Referer : 이전 웹 페이지 주소
- User-Agent : 유저 에이전트 애플리케이션 정보
- Host : 요청한 호스트 정보(도메인)
- Origin : 서버 POST 요청을 보낼 때, 요청을 시작한 주소를 나타냄
- Authorization : 인증 토큰을 서버로 보낼 때 사용하는 헤더
응답(Response)
- Server : 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
- Date : 메시지가 발생한 날짜와 시간
- Location : 페이지 리디렉션
- Allow : 허용 가능한 HTTP 메서드
- Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
🔗 콘텐츠 협상 헤더
클라이언트가 선호하는 표현 요청 - 클라이언트가 요청시에만 사용
- Accept : 클라이언트가 선호하는 미디어 타입 전달
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩
- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
- Accept-Language : 클라이언트가 선호하는 자연 언어
자연언어 우선순위 📍HTTPS
HTTP Secure
프로토콜을 더 안전라게 사용할 수 있음을 의미
HTTP와 달리 요청과 응답으로 오가는 내용을 암호화한다
🔗 암호화 방식
1. 대칭 키 암호화 방식
하나의 키로만 사용 복호화 가능
2. 공개 키(비대칭 키) 암호화 방식
두개의 키를 사용, 암호화할때 사용한 키와 다른 키로만 복호화 가능
공개 키, 비밀 키로 나눈다, 보안성은 좋으나 더 많은 시간을 소모
🔗 SSL/TLS 프로토콜
소켓 부분의 SSL, TLS라는 프로토콜 사용, 서버인증과 데이터 암호화를 진행
SSL이 표준화 되면서 바뀐 이름이 TLS 사실상 같은 프로토콜이다
- CA를 통한 인증서 사용
- 대칭 키, 공개 키 암호화 방식을 모두 사용
인증서와 CA(Certificate Authority)
HTTPS를 사용하면 응답과 함께 인증서를 확인 이때 인증서를 발급해주는 공인된 기관들을 CA라고 한다
- 서버는 CA로 공개 키를 전달
- 인증서 발급
- 복호화 시도
- 복호화가 성공 된다면 공개 키를 얻음으로써 신뢰할 수 있는 서버
- 실패한다면 신뢰할 수 없는 인증서
대칭 키 전달
- 복호화된 공개 키를 확보
- 이 공개키는 대칭 키를 주고 받을 때 사용
- 서버로 대칭키를 보낼 때 공개 키를 사용해서 암호화하여 보내준다면, 탈취될 위험성을 줄여준다
- 이제부터 대칭 키를 사용하여 암호화된 데이터를 전달 이 과정으로 HTTPS를 사용
반응형'codeStates front-end > node(server)' 카테고리의 다른 글
[인증/보안] Session (0) 2023.03.08 [인증/보안] Cookie (0) 2023.03.07 웹 표준 & 접근성 (0) 2023.02.28 JSON.stringify (0) 2023.02.14 My Agora states server (0) 2023.02.09