ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 스파르타) CS 강의 수강 (TCP/IP, HTTP, HTTPS)
    TIL 2024. 5. 10. 16:51

     

     > CS 강의를 수강하고, 내용을 이해한대로 정리해보았다. 내배캠 시작 이전에 개인적으로 진행하던 웹 서버 프로젝트에서 시도했다가 잘 몰라서 넘어갔던 HTTPS 서버의 동작이나 구현에 대한 부분들이 나와서 개념을 이해하는데 도움이 많이 되었다.

     

    학습 키워드: TCP/IP, handshake, UDP, HTTP, HTTPS, SSL, TLS

     

    1. TCP/IP, UDP

    1) What is it?:

     - Packet: Header, payload, trailer(footer)의 구조로 이루어져 네트워크 계층(L3)에서 주고받는 정보 단위로, header에는 패킷의 길이나 IP주소, 프로토콜 등 패킷의 정보가 담겨있고, payload는 패킷의 본문, trailer는 패킷의 끝을 수신자에게 알리는 bit 정보가 담겨있다.

     - IP (Internet Protocol): L3에서 동작하며, 패킷의 효율적인 전달을 위한 프로토콜. 패킷 전달 여부 및 순서를 보장하지 않는다.

     - Port: 데이터가 목적지에 도달했을 때 어느 프로세스가 이 데이터를 받게 될 것인지를 알게 해준다. 0 부터 65535 까지의 번호가 존재하며, 앞 부분은 well-known ports라고 하여 대부분 용도가 정해져있다.

     - DNS (Domain Name System): IP 주소를 알아보기 쉽게 문자로 표현하는 시스템이다. 인터넷 네트워크에서는 보통 ISP의 DNS 서버가 도메인 이름과 대칭되는 IP를 찾아서 변환해준다.

     - TCP (Transmission Control Protocol): L4에서 동작하며, 패킷 전달이 reliable하고 error-less하게 이루어졌는지 및 전달되는 순서까지 보장한다. 송신측과 수신측의 데이터 처리 속도 차이를 극복하기 위한 '흐름 제어 (flow control)'와, 송신측과 네트워크 사이의 처리 속도를 조율하는 '혼잡 제어 (congestion control)' 역할도 한다.

     - UDP (User Datagram Protocol): 마찬가지로 L4에서 동작한다. 규칙을 간소화하여 신뢰성(reliability)을 보장하지 않지만, 그 만큼 속도가 빠르다.

    출처: 강의 노트

     

     

    2) How does it work?:

     - TCP/IP는 OSI model의 3, 4 layer에 해당하는 중간 구간에서 규칙으로만 동작한다.

     - 동작을 이해하기 위해서는 handshake라는 개념을 알아야한다. TCP/IP의 송 수신자 간에 연결이 이루어질 때 벌어지는 일을 직관적으로 이해할 수 있도록 악수에 빗대어 표현한 것이다.

    출처: Wikipedia, TCP

     - 3-way handshake: 서버에 연결의 시작을 알리는 SYN, 수신 성공을 클라이언트에 알리는 SYN-ACK, 연결이 성립되었음을 최종적으로 서버에 알려주는 ACK의 세 단계로 구성되어있다. SYN은 Synchronize, ACK은 acknowlege의 앞 글자이며 각각이 패킷의 형태로 전달된다.

    출처: Wikipedia, TCP

     - 4-way handshake: TCP연결의 종료에 사용되는 handshake다. 한 쪽이 TCP 연결의 종료를 알리는 FIN 패킷을 보내고, 다른 한쪽이 종료를 확인한 ACK과 FIN 패킷을 돌려주면, 마지막으로 ACK 패킷을 보내주는 형식이다. 중간의 ACK과 FIN을 합쳐서 보내는 식으로 3-way로 구성할 수도 있다고 한다.

     

    3) TCP vs UDP:

    UDP의 정보 전달, 출처: 강의 노트

     - UDP는 서버에서의 일방적인 정보 전달만 이루어지는 구조다. TCP에서는 연결의 신뢰성이 중요했다면, UDP는 데이터의 전송 자체에 초점이 맞추어져있다. 따라서 전송한 데이터가 일부 손실되더라도 그 사실을 확인할 방법이 없다. Header에 전송 기능만 추가되어있어 원하는 기능을 자유롭게 추가하여 사용한다. 대표적인 예시로는 HTTP/3과 그 기반이 되는 기술인 QUIC이 있다.

     

    2. HTTP, HTTPS

    1) What is it?:

     - HTTP는 Hypertext Transfer Protocol의 약자로, hypertext를 전송하는 규약 (protocol)을 의미한다. 여기서 hypertext란, 디스플레이에 표시되는 텍스트나 이미지 등을 포괄적으로 의미하며, 이 hypertext가 담긴 문서(documnent)는 서로 간에 마우스 클릭이나 화면 터치 등으로 동작하는 hyperlink로 연결되어있다.

     - HTTPS의 S는 secure의 약자다. 보안이 취약한 HTTP 대신 암호화를 통한 안전한 연결을 제공한다.

     

    2) How does it work?:

    HTTP Request, 출처: 강의 노트
    HTTP Response, 출처: 강의 노트

     - HTTP는 클라이언트의 Request와 그 요청을 처리하는 서버의 Response로 구성되며, request에는 5가지의 주요 method (GET: 조회, POST: 생성, PUT: 대체 및 생성, PATCH: 일부 변경, DELETE: 삭제)가 존재한다.

     - 클라이언트의 요청이 없으면 서버가 응답을 먼저 보낼 수 없는 단방향의 구조다.

     - 요청 후 연결하고, 서버의 응답과 함께 연결이 종료되기 때문에 'connectionless' 하다 라고 표현한다(비연결성).

     - HTTP에도 버전이 있다. 전 세계적으로 가장 많이 사용되는건 HTTP/1 이며, 네이버, 인스타그램, 페이스북 등에서 사용하는 HTTP/2, 구글에서 사용하는 HTTP/3 도 존재한다. 크롬의 개발자 도구에서 Network 탭의 column에 protocol을 추가하면 나타나는 h2나 h3가 HTTP의 버전을 의미한다. 1과 2는 TCP, 3은 UDP 기반이다.

     - HTTP에는 request의 처리 결과를 숫자로 알려주는 status code  (status code 목록) 가 있는데, 가장 유명한 404 not found 처럼 상황에 맞게 돌려주는 번호들이 존재한다. 단순한 약속이나 가이드 같은 것이라서 코드 번호가 올바르지 않더라도 작동에는 문제가 없으나, 올바른 코드 번호를 설정해두면 문제가 생겼을 때 원인을 빠르게 파악하는데 도움이 된다.

     - HTTP는 암호화 없이 평문으로 통신하며, 통신 상대를 검증하지 않기 때문에 보안에 취약하다. 

     

    3) Why use HTTPS?:

     - HTTPS를 왜 사용하는가는 사실 HTTP의 보안 문제와 HTTPS의 존재 그 자체로 설명된다. HTTP의 보안상의 약점을 보완한 것이 바로 HTTPS기 때문이다. HTTPS는 브라우저와 웹사이트간의 암호화된 연결을 수립하는 SSL (Secure Sockets Layer) 기술이나, 거기서 더 발전되어 DigiCert의 보안 인증서를 도입하는 TLS (Transport Layer Security) 기술을 사용한다. 암호화와 복호화에 사용하는 키가 같으면 대칭키, 다르면 비대칭키 방식이라고 부른다.

     - 비대칭키 방식은 공개키와 개인키를 사용하는데, 공개키로 암호화했다면 개인키로, 개인키로 암호화했다면 공개키로만 복호화할 수 있다. 서버에서는 서버의 개인키가 있는데, 이 키는 복호화에만 사용되며, 대중에게 공개되는 공개키로는 암호화만 진행할 수 있다. 따라서 어떤 데이터가 탈취 당하더라도 탈취자가 서버의 개인키를 알 방법이 없으므로 정보를 복호화할 수 없다. 보안이 뛰어나지만 구현이 어렵고, 암호화 복호화 과정에 시간이 걸린다는 단점이 있다. 전자 서명이나 메세지 전송등 탈취에 민감한 데이터를 주고받을 때 주로 사용된다고 한다.

     - 비대칭키 방식의 SSL인증 과정: 클라이언트가 접속 요청 > 서버에서 공개키 전송 > 클라이언트가 수신한 공개키로 대칭키 암호화 > 서버에서 수신한 대칭키를 개인키로 복호화 > 이 후 주고받는 데이터는 대칭키를 이용

     - SSL handshake: 대칭키, 비대칭키 방식을 모두 사용하여 요청과 응답을 암호화하며, 서버가 인증서를 발급받은 외부 기관(DigiCert 등, CA라고 칭함)에서 공개 키의 유효성을 검증/보증 해주는 방식이다.

     

     

    --

     

    REFERENCES:

     

     

    10강. HTTP/HTTPS | Notion

    요약

    teamsparta.notion.site

     > 강의 노트, 10강. HTTP/HTTPS

     

    Hypertext - Wikipedia

    From Wikipedia, the free encyclopedia Text with references (links) to other text that the reader can immediately access Documents that are connected by hyperlinks Engineer Vannevar Bush wrote "As We May Think" in 1945 in which he described the Memex, a the

    en.wikipedia.org

     > Wikipedia, Hypertext

     

    Transmission Control Protocol - Wikipedia

    From Wikipedia, the free encyclopedia Principal protocol used to stream data across an IP network The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in wh

    en.wikipedia.org

     > Wikipedia, TCP (Transmission Control Protocol)

     

    TCP handshake - MDN Web Docs Glossary: Definitions of Web-related terms | MDN

    TCP (Transmission Control Protocol) uses a three-way handshake (aka TCP-handshake, three message handshake, and/or SYN-SYN-ACK) to set up a TCP/IP connection over an IP based network.

    developer.mozilla.org

     > MDN, TCP handshake

     

     

    728x90
Designed by Tistory.