본문 바로가기

CS 전공지식

24.02.16 웹과 통신

1. HTTP 요청 흐름 (웹브라우저에서의 요청)

  1) 브라우저

       - URL 에 적힌 값을 파싱하여 HTTP 요청 메세지를 만듬

       - 만든 메세지를 웹 서버로 전송하는데 이때 웹 브라우저 직접 전송을 하는 것이 아니라 OS에 보내주세요 하고 의뢰함

       - OS 는 DNS 서버를 조회하여 Host 이름을 보내야 할 IP 주소로 변환

  2) 프로토콜 스택(운영체제에 내장된 네트워크 제어용 소프트웨어 TCP / IP 계층) 과 LAN 어댑터

       - 브라우저로부터 메세지를 받아 패킷 속에 저장

       - 수신 주소를 제어정보에 덧붙인 다음 패킷은 LAN 어댑터에 넘김

       - LAN 어댑터는 패킷을 전기신호로 변환시켜 LAN 케이블에 송출

  3) 허브, 스위치, 라우터

       - LAN 어댑터로부터 송신한 패킷 수신

       - 라우터는 패킷을 ISP 에 전달 인터넷으로 들어가게함

   * 액세스 회선, ISP : 액세스 회선은 인터넷의 입구에 있는 통신회선으로 통신사용 라우터(POP, Point Of Presence)

                                   까지 운반

                                   POP 를 거쳐 인터넷의 핵심부로 들어가게됨, 고속 라우터들 사이로 목적지까지 패킷이 흘러감

   * 방화벽, 캐시서버 : 인터넷 핵심부를 통과한 패킷은 목적지의 LAN 에 도착

                                    방화벽이 먼저 패킷을 검사한 후 캐시 서버로 보내서 웹 서버까지 갈 필요가 있는지 검사

   * 웹 서버 : 패킷이 물리적 웹 서버에 도착하면, 웹 서버의 프로토콜 스택이 패킷을 추출하여 메시지를 복원하고

                    웹서버 어플리케이션에 넘김

                    애플리케이션은 요청에 대한 응답 데이터를 넣어 클라이언트로 회송, 온방식 그대로 전송함

 

2. HTTP 와 HTTPS 의 차이

  1) HTTP

       - 평문통신이다

       - TCP / IP 특성상 도청이 가능하며 통신상대를 확인하지 않기 때문에 위장이 가능

         예) IP 가 A 인 사람에게 보내고 싶은데 해커가 내가 IP A 라고 말해도 검증할 방법이 없음

       - 완전성을 증명할 수 없기 때문에 변조가 가능

       - 보안 방법은 통신 자체를 암호화(SSL, TLS) 하거나 콘텐츠 자체를(HTTP 메시지 컨텐츠를) 암호화 하는것

       - 위의 문제들을 해결하기 위해 HTTPS 가 나옴

  2) HTTPS

       - 새로운 프로토콜이 아닌 HTTP 에서 SSL 개념을 더한 프로토콜

       - HTTP 와 TCP 사이에 SSL, TLS 가 끼워져 있는것 

       - HTTP 는 SSL 과 통신하고 SSL 은 TCP 와 통신함     

     (1) SSL 의 원리

           - 대칭키와 공개키 방식 두 암호화 방식을 사용함

           - 클라이언트가 서버에게 메시지를 보내면 서버 암호화 된 인증서와 랜덤데이터를 넘겨주고 메세지를

             보내는 과정에서 어떤 암호화 프로토콜을 사용할 것인지 협상

           - 클라이언트는 받은 인증서를 CA 리스트에서 조회 후 CA 공개키를 사용해 인증서를 복호화 함

           - 복호화에 성공하면 이 서버는 신뢰할 수 있는 서버

           - 서버가 보낸 랜덤 데이터와 클라이언트의 랜덤 데이터를 조합해서 대칭키를 생성

           - 서버로부터 받은 공개키(인증서)를 사용해 대칭키를 암호화 후에 서버에게 보냄

           - 서버는 암호화된 대칭키를 받고 비밀키로 복호화 함으로써 서버와 클라이언트가 서로 대칭키를 가지게 되고

             이 대칭키로 통신을 암호화 함

 

3. TCP / UDP 등 로우레벨 통신 지식

  1) TCP

       - 3-way hand shake, 4-way hand shake 방식

       - 흐름제어, 오류제어를 통한 연결 지향성, 순서 중요함, 오류시 재전송, 전이중과 점대점

         (각 연결이 정확히 2개의 종단점을 가지고 있음) 방식

  2) UDP

       - 비연결형 프로토콜, 상대방이 받든지 말든지 그냥 보냄

       - 손상된 세그먼트에 대해 재전송 하지 않음

       - 만약 클라이언트 timeout 이 발생하면 다시 보내면 그만

 

4 CORS

    - Cross Origin Resource Sharing 의 약제로 도메인간의 자원공유

    - 헤더를 통하여 Cross-Domain 간 사용 가능한 자원을 헤더를 통해 알려줌

  1) Preflight Request

       - 실제 요청을 보내도 안전한지 판단하기 위해 브라우저에서 먼저 보내보는 Request

       - Option 메서드로 전송해 CORS 를 허용하는지 확인함

       - CORS 를 지원하는 웹서버라면 사용 가능한 리소스를 헤더에 담아 응답

HTTP Header Description
  Access-Control-Allow-Origin  접근 가능한 URL 설정
   Access-Control-Allow-Credentials  접근 가능한 쿠키 설정(true, fals)
   Access-Control-Allow-Headers  접근 가능한 헤더 설정
   Access-Control-Allow-Methods  접근 가능한 메서드 설정

 

          

'CS 전공지식' 카테고리의 다른 글

24.02.22 Spring IoC 컨테이너 (Inversion of Control)  (0) 2024.02.22
24.02.20 백엔드 관련  (0) 2024.02.20
24.02.15 Spring 및 웹개발  (0) 2024.02.15
24.02.14 웹, 네트워크 관련  (0) 2024.02.14
24.02.13 Java 관련 4  (1) 2024.02.13