Skip to content

HTTPS 웹 기본 지식 #86

@salmonco

Description

@salmonco

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC?cid=326277

HTTP 왜 배워?
타 컴퓨터랑 데이터 주고받으려면 네트워크로 통신해야 해서

데이터 왜 주고받는데?

  • 인터넷 네트워크
    • 인터넷 통신
      • 컴퓨터가 바로 옆에 있으면 케이블 연결해서 통신하면 될텐데 아주 멀리 있는 경우 인터넷을 통해서 어떻게 통신하지?
    • IP(인터넷 프로토콜)
      • 각자 IP 주소를 부여해서, 출발지 IP 주소, 목적지 IP 주소 적어서 IP 패킷을 보낸다. 인터넷 망에 있는 노드들이 서로 물어가면서 목적지까지 도달한다.
      • 한계
        • 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
        • 비신뢰성: 중간에 패킷이 사라지면? 패킷이 순서대로 안오면?
        • 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? (PORT가 없음)
    • TCP, UDP
      • TCP
        • 계층 구조: HTTP/TCP/IP
        • 전송 제어 프로토콜. 신뢰할 수 있는 프로토콜
        • 특징
          • 연결지향
            • TCP 3 way handshake
              • 클라: SYN 전송
              • 서버: SYN+ACK 전송
              • 클라: ACK 전송
            • 물리적 연결이 아닌, 개념적 연결
              • 연결은 착각이다. SYN 보내고 ACK 받았으니 연결이 됐나 보다 싶음.
          • 데이터 전달 보증
            • 클라: 데이터를 전송
            • 서버: 나 데이터 잘 받았어
            • 전송을 했는데 서버에서 아무 응답이 없으면 이거 문제가 있는데 싶음.
          • 순서 보장
            • 클라: 패킷1,2,3 순서로 전송
            • 서버: 패킷1,3,2 순서로 도착
            • 서버: 패킷2부터 다시 보내!
      • UDP
        • 하얀 도화지 (기능이 거의 없음)
          • 연결지향 X
          • 데이터 전달 보증 X
          • 순서 보장 X
          • 애플리케이션에서 기능 확장 가능
        • IP와 거의 같다. +PORT +체크섬
        • 그럼 UDP 왜 써? TCP는 3 way handshake해야 하고 해서 시간 좀 걸림
    • PORT
      • 한번에 둘 이상 연결해야 하면?
        • 이게 어디서 온 패킷인지 구분하기 어려움. 한 컴퓨터에서 이게 게임에서 온 건지 화상통화에서 온 건지, 웹 브라우저에서 온 건지..
      • TCP랑 UDP의 IP 패킷에는 출발지 IP, 목적지 IP 적는 곳이 있다.
      • PORT를 통해 같은 IP 내에서 프로세스 구분한다.
      • 한 아파트(컴퓨터) - 몇 호(PORT)
        • HTTP - 80
        • HTTPS - 443
    • DNS
      • IP는 변경될 수 있다.
      • 도메인 네임 시스템. 중간에 전화번호부같은 서버를 제공해준다.
      • 도메인 구매 - DNS 서버에 도메인 등록
        • IP 바뀌면 DNS 서버에 있는 IP 바꾸면 된다.
  • URI와 웹 브라우저 요청 흐름
    • URI (Uniform Resource Identifier)
      • URI > URL, URN
      • URL - Locator: 리소스가 있는 위치를 지정
      • URN - Name: 리소스에 이름을 부여
        • 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않는다.
      • scheme://[userinfo@]host[:port][/path][?query][#fragment]
      • https://www.google.com:443/search?q=hello&hl=ko
    • 웹 브라우저 요청 흐름

  • HTTP 기본
    • 모든 것이 HTTP
    • 클라이언트 서버 구조
    • Stateful, Stateless
    • 비 연결성(connectionless)
    • HTTP 메시지
  • HTTP 메서드
    • HTTP API를 만들어보자
    • HTTP 메서드 - GET, POST
    • HTTP 메서드 - PUT, PATCH, DELETE
    • HTTP 메서드의 속성
  • HTTP 메서드 활용
    • 클라이언트에서 서버로 데이터 전송
    • HTTP API 설계 예시
  • HTTP 상태코드
    • HTTP 상태코드 소개
    • 2xx - 성공
    • 3xx - 리다이렉션1
    • 3xx - 리다이렉션2
    • 4xx - 클라이언트 오류, 5xx - 서버 오류
  • HTTP 헤더1 - 일반 헤더
    • HTTP 헤더 개요
    • 표현
    • 콘텐츠 협상
    • 전송 방식
    • 일반 정보
    • 특별한 정보
    • 인증
    • 쿠키
  • HTTP 헤더2 - 캐시와 조건부 요청
    • 캐시 기본 동작
    • 검증 헤더와 조건부 요청1
    • 검증 헤더와 조건부 요청2
    • 캐시와 조건부 요청 헤더
    • 프록시 캐시
    • 캐시 무효

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions