Spring/HTTP

HTTP 강의 소개와 인터넷 프로토콜에 대해서

Ynghan 2023. 2. 11. 21:50

HTTP를 모르는 상태에서 웹 기술들을 파악이 어렵다.

개발자는 평생 HTTP 기반위에서 개발해야함.

언젠가 한번은 HTTP 정리해야 함.

강의 목표

  • HTTP의 전체 흐름 이해
  • 실무에 꼭 필요한 핵심 내용
  • 수 많은 예시와 그림으로 쉽게 설명

강의 대상 - HTTP 기술을 사용하는 모든 개발자

  • 모바일 앱
  • 웹 프론트엔드
  • 백엔드

강의 소개와 순서

인터넷 네트워크

URI와 웹 브라우저 요청 흐름

HTTP 기본

HTTP 메소드

HTTP 메소드 활용

HTTP 상태코드

HTTP 헤더

HTTP 캐시

인터넷 통신

인터넷에서 컴퓨터 둘은 어떻게 통신할까?

메세지를 전달해야할 서버 컴퓨터가 먼 거리에 있다면,

수많은 중간 노드들을 거쳐서 서버로 넘어가야 한다.

IP(인터넷 프로토콜)

복잡한 인터넷 망에서 메세지를 먼 거리의 서버에 보내야 한다.

이것을 가능하게 하기 위해서 IP가 필요하다.

IP의 역할

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

 

IP 패킷 정보

- 출발지 IP, 목적지 IP, 기타 ...

 

클라이언트 패킷 전달

 

 

 

서버 패킷 전달

IP 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 상대 컴퓨터가 꺼져 있어도 패킷을 보낸다.
  • 비신뢰성
    • 중간에 패킷이 사라지면?
    • 패킷이 순서대로 안오면?
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

대상이 서비스 불능, 패킷 전송

패킷 소실

중간 서버가 꺼져도 모름

패킷 전달 순서 문제 발생

메세지가 용량이 크면 1500Byte씩 끊어서 보낸다.

이때 끊어진 서로 다른 패킷이 다른 노드를 타서 순서가 변경될 가능성이 있다.

TCP

인터넷 프로토콜 스택의 4계층

프로토콜 계층

채팅 프로그램으로 미국 친구한테 Hello, world! 메세지 생성!

SOCKET 라이브러리를 통해 OS에 Hello, world!를 넘긴다.

OS에서 TCP가 이 메세지에 TCP 정보를 씌운다.

TCP 정보에다가 IP 정보를 한번더 씌운다.

그리고 진짜 네트워크 인터페이스를 통해 나갈 때 Ethernet frame을 씌워서 보낸다.
( 웹을 공부할 때는 IP 프로토콜까지만 )

IP 패킷 정보

출발지 IP, 목적지 IP가 있다.

패킷은 패키지와 버킷의 합성어이다. ㅋㅋ

상품을 박스에 넣어 택배 보내는것과 유사하다.

TCP / IP 패킷 정보

TCP 특징

전송 제어 프로토콜

  • 연결지향 - TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

TCP 3 way handshake

SYN : 접속 요청 / ACK : 요청 수락

데이터 전달 보증

순서 보장

UDP

사용자 데이터그램 프로토콜(User Datagran Protocol)

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • 정리
    • IP와 거의 같다. + PORT + 체크섬 정도만 추가
    • 애플리케이션에서 추가 작업 필요

PORT

항구

한번에 둘 이상을 연결해야 하면?

패킷 정보

PORT - 같은 IP 내에서 프로세스 구분

( 그림 삽입 )

PORT

  • 0 ~ 65535 할당 가능
  • 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443

DNS

도메인 네임 시스템(Domain Name System)
  • 전화번호부
  • 도메인 명을 IP 주소로 변환

DNS 사용

정리

  • 서로 다른 컴퓨터 사이의 메세지 전송을 위해서는 IP 프로토콜이 필요하다.
  • IP 프로토콜 만으로는 제한되는 상황이 많이 발생한다.
  • 이러한 제한되는 상황을 TCP 프로토콜이 해결해준다.
  • UDP는 포트만 추가된 IP와 비슷하다.
  • 필요하면 UDP 프로토콜 위에 씌워서 애플리케이션에서 확장할 수 있다.
  • PORT는 같은 IP 안에서 동작하는 애플리케이션을 구분하기 위해서 사용한다.
  • IP가 아파트라면 PORT는 동호수 이다.
  • IP는 외우기 어렵기 때문에 DNS에서 도메인 명을 등록해서 사용할 수 있도록 한다.