HTTP 완벽가이드

hyungjunn·2024년 6월 23일
0

목차의 내용들을 연결시키고 질문을 한다

HTTP: 웹의 기초

  1. 개관
    1. 리소스? 무슨 자원? -> 웹 콘텐츠
    2. 트랜 잭션? 무엇을 원자 단위로 두어서 한 묶음으로 볼까
  2. URL, 리소스
    1. 안전하지 않은 문자? 왜 안전하지 않을까? 안전하지 않다면 안전하게 하는 방법은?
  3. 메시지
    1. 메시지의 흐름? 클라가 요청하기 때문에 항상 클라 -> 서버 , 서버 > 클라 아니야? 아니라면 어떤 흐름을 말하는거지?
  4. 커넥션 관리
    1. TCP, UDP 이 두개 중에 왜 TCP만 보지? ->
      1. TCP 신뢰성, 정확성위주 UDP 속도 위주
        1. 어떻게 신뢰성을 높여?
          1. 연결 SYN -> SYN + ACK -> ACK
          2. 종료 FIN -> ACK -> FIN -> FIN
            1. 종료도 그냥 연결할 때처럼 SYN -> SYN + ACK -> ACK으로 하면 안돼?
            2. 되긴 되지만 여기서 이제 신뢰성을 높이기 위해 일부러 4 way hand shake를 하는 거임. ACK FIN 사이에 진짜 종료해도 되는지 확인하고 FIN을 보냄
    2. 커넥션 끊기에 대한 미스테리? 커넥션을 끊을 때 잘못 알고 있는 개념이 있나? 왜 미스테리라고 하지?

HTTP 아키텍쳐

  1. 웹서버
  2. 프록시
    1. 웹 중개자? 무엇을 연결? 서버와 클라를
    2. why -> where -> how 순으로 설명하고 있음
    3. 메시지 추적? 왜? 많아짐에 따른 problem들을 찾으려고
  3. 캐싱
    1. 캐시? 돈? -> cache : 어원 프랑스어) "cacher" 숨기다, 저장하다 -> "cache" 탐험가나 군인들이 나중에 다시 사용하기 위해 물품을 숨기거나 저장해두는 은닉처
    2. 적중? 부적중? 요청한 정보가 있을 때. 없을 때를 나타내는 용어
    3. 캐시 토폴로지: 토폴로지?? (링크, 노드등을 연결해놓은것): 어떻게 연결할건지 적합한 토폴로지를 찾는 것이 중요하다!
    4. 과정 -> 유지 -> 제어 -> 설정 -> 원리
  4. HTTP 2.0
    1. 어떤 문제를 해결하고 발전시켰을까?

식별, 인가, 보안

네, 이 두 용어는 매우 유사해 보여서 많은 사람들이 헷갈려합니다. 명확한 구분을 위해 각 용어의 의미와 핵심 차이점을 설명드리겠습니다:

1. Authentication (인증):
   - "너가 누구인지 확인하는 과정"
   - 핵심 질문: "너는 누구야?"
   - 예시: 로그인 과정에서 아이디와 비밀번호를 확인하는 것

2. Authorization (인가):
   - "너가 무엇을 할 수 있는지 결정하는 과정"
   - 핵심 질문: "너는 무엇을 할 수 있어?"
   - 예시: 로그인 후 특정 기능에 접근할 수 있는 권한을 부여하는 것

구분을 위한 팁:

1. 순서 기억하기: 
   - Authentication은 항상 Authorization 전에 일어납니다.
   - Auth"e"ntic-Auth"o"riz 순서로 알파벳 순서와 같습니다.

2. 단어 의미 연관 짓기:
   - Authentication - "Authentic"(진짜의): 진짜 본인인지 확인
   - Authorization - "Author"(작가): 작가가 책을 쓸 권한이 있듯이, 특정 행동을 할 권한

3. 실생활 예시로 이해하기:
   - Authentication: 공항에서 여권으로 신원 확인
   - Authorization: 비행기 티켓으로 특정 좌석에 앉을 수 있는 권한 확인

4. 기술적 관점:
   - Authentication: 사용자 ID, 비밀번호, 생체인식 등으로 신원 확인
   - Authorization: 역할(Role), 권한(Permission) 등으로 접근 제어

이렇게 구분하면 두 용어를 좀 더 명확하게 이해하고 기억할 수 있을 것입니다.
네, 한자를 통해 두 단어의 차이를 명확히 설명해 드리겠습니다.

1. 인증 (認證):
    - 認 (인): 알다, 인식하다
    - 證 (증): 증명하다, 증거합쳐서 "알아서 증명하다"로 이해할 수 있습니다. 즉, "누군가의 신원을 확인하고 증명하는 과정"입니다.
2. 인가 (認可):
    - 認 (인): 알다, 인식하다
    - 可 (가): 옳다, 허가하다합쳐서 "알아서 허가하다"로 이해할 수 있습니다. 즉, "누군가에게 특정 권한을 허가하는 과정"입니다.

주요 차이점:

- 證(증)은 "증명"에 초점이 있습니다. 당신이 주장하는 신원이 맞는지 확인합니다.
- 可(가)는 "허가"에 초점이 있습니다. 이미 확인된 신원에 대해 어떤 행동을 할 수 있게 허락합니다.

실생활 예시:

1. 인증(認證): 주민등록증으로 본인임을 증명하는 과정
2. 인가(認可): 증명된 본인에게 특정 장소 출입을 허가하는 과정

이렇게 한자의 의미를 통해 보면, '증명'과 '허가'라는 뚜렷한 차이를 알 수 있습니다. 인증은 신원 확인 단계, 인가는 권한 부여 단계라고 기억하시면 됩니다.
  1. 클라이언트 식별, 쿠키
    1. 왜 이런 단원 순서대로 설명할까?
  2. 기본 인증
  3. 보안
    1. HTTP 안전하게 만들기 -> 원랜 그럼 위험해? 왜?
    2. 그 뒤에 방법들을 쭉 소개

엔터티, 인코딩, 국제화(메시지 본문)

  1. 엔터티와 인코딩
    1. 얘네 둘은 어떤 관계길래 이렇게 같은 단원으로 묶였어?
    2. 컨테이너 화물? 컨테이너 안에 화물이 있는데 그러면 메시지가 더 큰 개념이고 엔터티는 속해있는거야?
    3. 그 뒤로 인코딩의 종류들을 쭉 설명
    4. 신선도? 유통기한이 있나?
  2. 국제화
  3. 내용 협상과 트랜스코딩
    1. 누구와 협상해? 하나의 URL 여러개 리소스 : 어떤게 적합한지 협상
    2. 클라이언트 주도, 서버 주도? 주도권을 누구에게 줄지에 따라 달라질 수 있겠구나

0개의 댓글