[모든 개발자를 위한 HTTP 웹 기본 지식] 1. 인터넷 네트워크

0woogie·2023년 5월 11일
0

HTTP 웹 기본 지식

목록 보기
1/8
post-thumbnail

왜 HTTP를 공부해야 할까?

  • 모든 것이 HTTP 기반 위에서 동작한다.
  • 우리가 잘 아는 HTML, 이미지, 영상 파일뿐만 아니라, 앱과 서버나 서버와 서버가 통신할 때도 HTTP 프로토콜 위에서 데이터를 주고 받는다.
  • 웹 기술, 웹 프레임워크가 HTTP를 기반으로 작성된 것이 많기 때문에 모바일 앱, 웹 프론트앤드, 백앤드 개발자는 모두 HTTP를 필수로 알고 잘 사용할 줄 알아야 한다.
  • 개발자는 평생 HTTP 기반 위에서 개발하게 된다.

인터넷 통신

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

  • 클라이언트와 서버 사이에는 인터넷이 존재한다.
  • 인터넷이라는 공간은 위와 같이 매우 복잡한 인터넷 망으로 이루어져 있으며 수많은 중간 노드들이 존재한다.
  • 그렇다면 인터넷이라는 광범위한 공간에서 어떻게 특정 서버와 통신을 수행할 수 있을까?

이를 위해서는 우선 IP(인터넷 프로토콜)에 대해 알아야 한다.

IP(인터넷 프로토콜)

클라이언트와 서버 간 인터넷 통신을 위해서는 IP 주소를 부여받아야 한다.

IP(인터넷 프로토콜)의 역할

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

  • 전송할 데이터를 출발지 IP, 목적 IP 등이 담긴 IP 패킷으로 보내게 된다.
  • 위와 같은 패킷이 복잡한 노드망을 떠돌아다니며 목적지 IP를 찾아가게 된다.

클라이언트 패킷 전달

서버 패킷 전달

IP 프로토콜의 한계

  • 비연결성
    - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    - 중간에 패킷이 사라질 수 있음
    - 패킷이 순서대로 도착하지 않을 수 있음
  • 프로그램 구분
    - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우
    • (ex. 하나의 pc에서 음악을 듣거나 게임을 하는 것처럼 동시 다발적으로 어플리케이션을 사용할 때 IP만으로 어플리케이션을 구분하기 어렵다.)

이러한 한계를 해결해주는 것이 TCP 프로토콜이다.

TCP, UDP

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

프로토콜 계층 동작 예시

TCP

  • 전송 제어 프로토콜(Transmission Control Protocol)이다.
  • 다음과 같이 대표적인 3가지 특징이 있다.
    - 연결지향(TCP 3 way handshake, 가상연결)
    - 데이터 전달 보증
    - 순서 보장

TCP/IP 패킷 정보

  • IP 프로토콜만으로 해결되지 않았던 문제들이 해결 가능해짐

TCP의 대표적인 3가지 특징

  1. TCP 3 way handshake
  • 클라이언트와 서버 간 연결을 하고 데이터를 전송하기 때문에 IP 비신뢰성의 한계를 극복할 수 있다.
  • 과정 3에서 ACK과 함께 데이터를 전송하는 것이 가능하다.
  1. 데이터 전달 보증
  • 중간에 누락된 패킷이 있는지 파악할 수 있다.
  1. 순서 보장

UDP

  • 사용자 데이터그램 프로토콜(User Datagram Protocol)이다.
  • 흔히 하얀 도화지에 비유(기능이 거의 없음)된다.
  • 연결지향 X, 데이터 전달 보증 X, 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
  • IP와 거의 비슷한 수준으로, PORT와 체크섬 정도만 추가되었다.

PORT

한번에 둘 이상의 서버와 연결해야 한다면?

  • 클라이언트 IP로 날아오는 패킷이 게임 애플리케이션을 위한 패킷인지 화상통화 애플리케이션을 위한 패킷인지 구분하기 어려운 상황 발생

TCP/IP 패킷에 담겨있는 PORT 정보

  • IP는 서버의 출발지와 목적지를 의미한다.
  • PORT는 서버 안의 애플리케이션 출발지와 목적지를 의미한다.

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

  • PORT: 하나의 IP에서 다중으로 실행되고 있는 애플리케이션의 구분을 도와주는 것.
  • 예를 들어 PC가 하나의 아파트라면, 동은 IP, 호수는 PORT로 볼 수 있다.

PORT 번호

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

DNS

  • 도메인 네임 시스템(Domain Name System)
  • 도메인 명을 IP 주소로 변환해주는 분산형 데이터베이스 시스템
  • 인터넷의 전화번호부라고 불린다.
  • IP 주소의 기억하기 어렵고 변경될 수 있다는 단점을 해결해준다.

DNS 사용

  • 나중에 등록해둔 IP 주소가 변경된다면, IP 주소 변경에 대한 RR(Resource Record)을 DNS 서버에 날리면 된다.

Reference

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

profile
정리하고 다듬기 위한 공간

2개의 댓글

comment-user-thumbnail
2024년 1월 5일

와 ! 그림도 많고 잘 정리되어 있네요ㅎㅎ

1개의 답글