TCP/IP 프로토콜

  • 전송 제어 프로토콜인 TCP 와 인터넷 프로토콜 IP를 의미
  • 인터넷에서 컴퓨터 간의 통신이 가능하도록 표준화하여 채택한 통신 규약
  • 일반적으로 FTP, Telnet, SMTP 등 상위 응용 계측의 프로토콜도 포함된 개념으로 인터넷에서 접속하는 프로토콜 중 가장 중요한 기능을 하는 TCP 와 IP 또는 여러 프로토콜의 집합이라 할 수 있다.

 

네트워크 접속 계층

  • 운영체제의 네트워크 카드와 디바이스 드라이버 등 하드웨어적인 요소와 관련된 것을 지원하는 계층
  • 이더넷, MAC/LLC, SLIP, PPP 등의 프로토콜을 사용

 

네트워크 계층

  • 인터넷 계층. 네트워크의 패킷 전송을 제어하는 계층
  • IP, ARP, ICMP, IGMP 등의 프로토콜을 사용
  • IP 프로토콜
    • 네트워크의 주소체계를 관리하고 전송에 필요한 경로를 결정, 패킷을 정확한 수신지로 전송하는 역할을 담당하는 프로토콜

 

전송 계층

  • 호스트 간의 데이터 전송을 담당하는 계층
  • 송신시에는 상위 계층으로부터 전달받은 데이터를 효율적으로 전송하기 위해 패킷 단위로 분할하고 수신시에는 하위 계층으로부터 전달받은 패킷을 원래의 데이터로 재결합하는 역할을 담당
  • OSI 참조 모델에서의 전송 계층과 세션 계층 일부의 역할을 담당
  • TCP, UDP 프로토콜을 사용
  • TCP 프로토콜
    • 전송되는 패킷에 오류와 중복이 없게하고, 보낸 순서대로 수신측에서 받을 수 있도록 신뢰성 있는 데이터 전송을 보장하는 프로토콜

 

응용 계층

  • 클라이언트의 요청을 전송하기 위해 데이터를 서버가 이해할 수 메시지로 변환하고 하위 계층인 전송 계층으로 전송하는 역할을 담당하는 계층

 

다음글

 

'Network' 카테고리의 다른 글

TCP/IP - 인터넷 계층  (0) 2022.08.21
TCP/IP - 전송 계층  (1) 2022.08.20
TCP/IP - 응용 계층  (0) 2022.08.20
OSI 참조 모델  (0) 2022.08.04
TCP 커넥션  (0) 2022.07.31

SSL / TLS 프로토콜

  • Secure Socket Layer / Transport Layer Security
  • 데이터를 암호화하여 전송하기 위한 보안 전송 계층의 프로토콜
  • 과거에는 SSL 을 사용했으나 현대에는 보완된 TLS 를 사용함

 

디지털 인증서와 CA

  • 서버는 디지털 인증서를 발급하는 CA 를 통해 인증서를 발급받는다.
  • 서버는 발급받은 인증서를 클라이언트에게 제공하여 인증을 처리한다.

 

SSL Handshake

Pre Master Secret 값은 서버가 인증서를 통해 전달한 공개키로 암호화하여 전송되며 서버는 해당 값을 공개키에 매칭되는 개인키로 복호화한다.

  • 암호화된 HTTP 데이터를 전송하기 위 정보를 교환하는 과정
    1. Client Hello
      • Pre Master Secret 을 생성하기 위한 클라이언트 랜덤 데이터와 클라이언트가 지원하는 암호화 방식 목록, 세션 ID를 전송
    2. Server Hello
      • Pre Master Secret 을 생성하기 위한 서버 랜덤 데이터와 인증서, Client Hello 단계에서 받은 암호화 방식 목록 중에서 사용 가능한 암호화 방식을 선택해서 전송. 
    3. Pre Master Secret 전송
      • 인증서를 수신한 클라이언트는 내장된 CA의 공개키를 이용해서 인증서를 복호화(브라우저는 CA 리스트를 가지고 있음)
      • 클라이언트는 서버 랜덤데이터와 클라이언트 랜덤데이터를 조합하여 Pre Master Secret 를 생성한 후 해당 값을 인증서에 포함된 서버의 공개키로 암호화하여 서버에 전송. 서버에서는 공개키에 매칭되는 개인키로 복호화한 Pre Master Secret 값을 통해 Session Key 를 얻어낸다.
    4. SSL Handshake 종료

 

전송 데이터의 암호화 / 수신 데이터의 복호화

데이터를 동일한 Session Key 를 통해 암호화 및 복호화

  • 클라이언트는 전송할 데이터를 Pre Master Secret 를 통해 얻은 Session Key 를 통해 암호화하여 전송
  • 서버는 Pre Master Secret 를 통해 얻은 Session Key 를 통해 수신한 데이터를 복호화하여 처리

'HTTP' 카테고리의 다른 글

HTTP / HTTPS  (0) 2022.08.02
HTTP 상태코드  (0) 2022.07.31
HTTP 헤더  (0) 2022.07.31
HTTP 메서드  (0) 2022.07.30
URL - 통합 자원 식별자  (0) 2022.07.30

OSI 참조 모델

  • Open Systems Interconnection Reference Model
  • 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층마다 표준화된 서비스와 프로토콜을 규정
  • 각 계층마다 원인을 분석할 수 있어 문제 해결이 쉬어짐
    • 물리 계층 - 데이터를 전송 매체로 전송할 수 있게 변환하는 역할을 담당
    • 데이터링크 계층 - 네트워크 상의 주변 장치들 간의 데이터 전송을 담당
    • 네트워크 계층 - 중간 라우터를 통한 라우팅을 포함하여 패킷 포워딩을 담당
    • 전송 계층 - 목적지까지 신뢰할 수 있는 데이터를 전송하는 역할을 담당
    • 세션 계층 - 세션 연결의 설정과 해제, 세션 메시지 전송 등의 역할을 담당
    • 표현 계층 - 데이터의 변환, 암호화 및 복호화 등의 역할을 담당
    • 응용 계층 - 사람이 인식하고 표현 계층과 상호 작용할 수 있는 데이터와 그림을 보여주는 역할을 담당

 

OSI 참조 모델의 데이터 송신

  • 데이터 송신 시에는 응용 계층에서 하위 계층으로 순차적으로 데이터가 전송되며 각 계층을 거치면서 계층 헤더 및 트레일러 형태로 정보가 추가된다.

 

OSI 참조 모델의 데이터 수신

  • 데이터 수신 시에는 물리 계층에서 상위 계층으로 순차적으로 데이터가 전송되며 각 계층을 거치면서 계층 헤더 및 트레일러 정보를 제거한다. 최종적으로 응용 계층에 데이터를 적절한 형태로 변환하여 제공한다.

 

서로 다른 네트워크 간의 데이터 전송

  • 여러 노드를 통해 서로 다른 시스템에 데이터를 전송할 경우에 노드 지점에서는 물리 계층, 데이터 링크 계층, 네트워크 계층만을 사용하여 수신 및 전송하게 된다.

 

다음글

'Network' 카테고리의 다른 글

TCP/IP - 인터넷 계층  (0) 2022.08.21
TCP/IP - 전송 계층  (1) 2022.08.20
TCP/IP - 응용 계층  (0) 2022.08.20
TCP/IP 프로토콜  (0) 2022.08.13
TCP 커넥션  (0) 2022.07.31

Servlet

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) {
        // ... 처리 로직
    }
}
  • 자바를 사용하여 클라이언트의 요청에 따라 웹페이지를 동적으로 생성하는 서버 측 기술
  • HTTP 정보를 편리하게 사용할 수 있게 해준다.
    • HttpServletRequest - HTTP 요청 정보를 편리하게 사용할 수 있는 객체
    • HttpServletResponse - HTTP 응답 정보를 편리하게 제공할 수 있는 객체

 

Servlet Container

  • 서블릿을 지원하는 WAS
  • 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리
  • 서블릿 객체는 싱글톤으로 관리되며 애플리케이션이 로딩되는 시점에 미리 만들어두고 재활용한다. 때문에 동일한 리소스 요청에 대해서 동일한 서블릿 객체로 처리하므로 가급적 무상태성을 유지해야한다.
  • 동시 요청을 처리하기 위한 멀티 쓰레드 처리를 지원

'Spring > Spring MVC' 카테고리의 다른 글

스프링 MVC 구조 & DispatcherServlet  (0) 2022.08.21
MVC 패턴  (0) 2022.08.21

WEB Server

  • 클라이언트로부터 HTTP 요청을 받아들이고 그에 해당하는 정적 데이터를 제공하는 서버 혹은 웹 서버가 설치되어 있는 장비

 

WAS

  • Web Application Server
  • 클라이언트로부터 받은 HTTP 요청에 따라 동적으로 데이터를 처리 및 가공하여 동적인 컨텐츠를 제공하는 애플리케이션 서버
  • 웹 서버의 역할도 수행할 수 있지만 WAS 로 모든 요청을 처리하면 서버 과부하가 발생할 수 있기 때문에 대부분 웹 서버와 WAS 의 역할을 분리해서 사용

 

WEB Server 와 WAS 의 분산 처리

  • 웹 서버와 WAS 를 모두 사용하여 클라이언트 요청에 따라 분산 처리할 수 있다. 정적 컨텐츠 요청은 웹 서버에서 바로 처리하고 동적 컨텐츠는 WAS 에서 처리하도록 설계하여 많은 요청들을 분산 처리함으로서 서버의 부하를 줄일 수 있다.
  • 효율적으로 리소스를 관리할 수 있게 된다. 정적 컨텐츠 요청이 많다면 웹 서버를, 동적 컨텐츠 요청이 많다면 WAS 를 증설함으로서 효율적으로 대처할 수 있다.
  • WAS 에서 장애가 발생 시 웹 서버에서 오류화면을 제공함으로서 클라이언트에게 알릴 수 있다.

'Server' 카테고리의 다른 글

웹 클라이언트와 웹 서버의 기본 흐름  (0) 2022.07.29

HTTP

  • 초본문 전송 규약. HyperText Transfer Protocol
  • W3 (World Wide Web) 상에서 정보를 주고 받을 수 있는 프로토콜
  • HTML ,Text 문서, 이미지, 음성, 영상, Json, Xml 등 거의 모든 형태의 데이터 전송 가능
  • 기본 TCP / IP 포트로 80을 사용

 

HTTP 의 특징

  • 클라이언트 - 서버 구조
    • 클라이언트는 서버에 요청을 보내고 응답을 대기하며 서버는 요청에 대한 결과를 만들어서 응답
  • 무상태 프로토콜(Stateless)
    • 서버가 클라이언트의 상태를 보존하지 않는다. 때문에 응답 서버를 바꾸거나 스케일 아웃 등의 서버 내부에서 작업을 하여도 클라이언트에 영향을 미치지 않으므로 서버의 확장성이 높아진다. 반면, 클라이언트는 매 요청마다 필요한 정보를 모두 보내야하므로 트래픽 측면에서 부담이 될 수 있다.
  • 비연결성
    • HTTP는 기본적으로 연결을 유지하지 않는 통신 모델이다. 요청과 응답이 종료되면 연결을 끊음으로서 자원 낭비를 방지한다.

 

HTTPS

  • HyperText Transfer Protocol over Secure Socket Layer
  • HTTP 의 보안이 강화된 버전
  • 통신의 인증과 암호화를 위해 HTTP의 커넥션의 양 끝단에서 일반 텍스트를 이용하는 대신 SSL 이나 TLS 프로토콜을 통해 세션 데이터를 암호화
  • 기본 TCP / IP 포트로 443을 사용

HTTPS 는 HTTP 에 보안 계층이 추가된 형태라 할 수 있다.

 

다음글

'HTTP' 카테고리의 다른 글

SSL/TLS 프로토콜  (0) 2022.08.08
HTTP 상태코드  (0) 2022.07.31
HTTP 헤더  (0) 2022.07.31
HTTP 메서드  (0) 2022.07.30
URL - 통합 자원 식별자  (0) 2022.07.30

+ Recent posts