HTTP

[HTTP] 웹 기본 지식 정리 - 인터넷 네트워크

aaaahy 2023. 1. 6. 19:11

- 이 게시글은 인프런 "모든 개발자를 위한 HTTP 웹 기본지식"의 김영한님 강의를 보고 요약한 내용입니다.

 


1. 인터넷 통신

클라이언트가 서버에게 어떻게 메시지를 전달할 수 있을까? 에 대한 생각을 해볼 수 있다.

▶ 일반적으로 클라이언트가 메시지를 보낼 경우 서버가 메시지를 받고 오케이 응답을 보내게 된다.

하지만 클라이언트와 서버 사이엔 복잡한 인터넷망이 있다 !! 
광케이블, 인공위성 등 중간노드가 다양하게 존재하는 인터넷망이 있다고 생각해본다.

그럼 어떻게 메시지를 전달할 수 있을까?
IP 주소를 부여하여 전달할 수 있다.

 

2. IP(Internet Protocol)

지정한 IP주소에 패킷이라는 통신단위로 데이터를 전달한다.
ex ) 클라이언트 IP 주소 : 100.100.100.1 → 서버 IP 주소 : 200.200.200.2

클라이언트가 서버에게 패킷으로 데이터 전달하는 방법

출발지 IP 주소와 목적지 IP 주소를 넣은 패킷을 서버에게 전달한다.

→ 노드들이 목적지 IP 주소로 전달한다.

→ 목적지 IP 주소인 서버에게 패킷이 전달된다.

→ 정상적으로 패킷을 받았을 경우, 서버가 같은 방식으로 클라이언트에게 오케이 응답을 포함한 패킷을 전달한다.

 

IP의 한계

  • 비연결성 - 패킷 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송함
  • 비신뢰성 - 패킷이 중간에 손실될 수 있으며 순서대로 전송이 안될 수 있음
  • 프로그램 구분 - 같은 IP를 사용하여 서버 통신하는 애플리케이션이 둘 이상일 경우

이러한 IP의 문제해결을 위해서?
TCP, UDP

 

3. TCP(Transmission Control Protocol) & UDP(User Datagram Protocol)

TCP는 전송 제어 프로토콜이며 UDP는 사용자 데이터그램 프로토콜이다.

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

IP 패킷의 정보 - 출발지 IP, 목적지 IP, 전송데이터 등 
TCP/IP 패킷 정보 - 출발지 IP, 목적지 IP, 전송데이터, 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보

 

TCP 특징

  • 연결지향 - TCP 3 way handshake
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰성있는 프로토콜

SYN(접속요청), ACK(요청수락)

UDP 특징

  • 기능이 거의 없음
  • 비연결지향
  • 데이터 전달 보증이 안됨
  • 순서 보장이 안됨
  • 단순하고 빠름
  • IP와 유사하지만, PORT와 checksum 정도만 추가된 정도

 

4. PORT

IP는 목적지 서버를 찾는 것이라면 PORT는 서버안에서 돌아가는 애플리케이션을 구분하는 것이다.

IP가 아파트면 PORT는 몇동몇호를 의미

 

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

- 0 ~ 65535 할당 가능(HTTP - 80, HTTPS - 443)

같은 IP 주소 내에서 PORT를 통해 구분

 

5. DNS(Domain Name System)

IP 주소는 기억하기 어려우며 변경 가능성이 존재한다.

▶ DNS는 전화번호부 형식으로 도메인 주소를 IP주소로 변환한다.

클라이언트가 도메인 명으로 접근한다.

→ DNS 서버에서 IP 주소로 응답한다.

→ 응답받은 IP주소로 서버에 접속한다.