티스토리 뷰

HTTP

[HTTP] 1. 인터넷 네트워크

mandykr 2022. 4. 30. 14:22

목차

1. 인터넷 네트워크

2. URI와 웹 브라우저 요청 흐름

 

 

 

 

1. 인터넷 네트워크

1) IP 프로토콜

IP 프로토콜은 지정한 IP 주소(IP Address)를 이용해 패킷이라는 통신 단위로 데이터를 전달하는 역할을 한다.

  • 출발지 IP 주소, 도착지 IP 주소, 전송 데이터 등을 IP 패킷에 포함해 전송
  • 인터넷 노드를 거쳐 이동

 

IP 프로토콜의 한계

비연결성

클라이언트는 전송 대상 서버가 패킷을 받을 수 있는 상태인지 모르기 때문에

클라이언트에서는 패킷을 전송하고 서버는 도착하는 패킷을 받을 수 없다.

 

패킷 손실

전송 과정에서 네트워크상의 문제로 패킷이 손실될 수 있다.

 

패킷 전달 순서 문제 발생

용량이 큰 데이터는 여러개의 패킷으로 나눠서 전달하는데

패킷이 서로 다른 노드를 거쳐갈 수 있기 때문에 도착 순서가 변경될 수 있다.

 

2) TCP / UDP

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

1. 프로그램이 Hello, world! 메시지 생성

2. SOCKET 라이브러리를 통해 전달

3. TCP 정보 생성, 메시지 데이터 포함

4. IP 패킷 생성, TCP 데이터 포함

 

1 ~ 4 과정을 거쳐 TCP/IP 패킷이 만들어진다.

 

 

3) TCP 특징

전송 제어 프로토콜(Transmission Control Protocol)

 

연결 지향

3 way handshake 방식을 사용해 클라이언트 서버간에 연결한다.

연결은 가상 연결이고 논리적으로만 연결된 것이지 실제 연결을 보장하는 것은 아니다.

 

데이터 전달 보증

데이터가 정상적으로 전달되었는지 응답을 받는다.

 

순서 보장

TCP 세그먼트의 전송 제어 정보를 참고해 도착 순서가 잘못된 경우

잘못된 순서의 패킷부터 다시 보내도록 클라이언트로 요청한다.

 

4) UDP 특징

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

  • 연결 지향 X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠름
  • IP와 거의 같다. (PORT, 체크섭 정도만 추가)
  • 애플리케이션에서 추가 작업 필요

 

5) PORT

같은 IP 내에서 프로세스를 구분한다.

TCP/IP 패킷의 출발지와 도착지 PORT 정보를 사용한다.

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

 

6) DNS

도메인 네임 시스템(Domain Name System)

IP 정보는 기억하기 어렵고 변경될 수 있기 때문에

IP 주소를 도메인 명으로 매핑한다.

 


 

2. URI와 웹 브라우저 요청 흐름

1) URI

Uniform: 리소스 식별하는 통일된 방식

Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)

Identifier: 다른 항목과 구분하는데 필요한 정보

 

URI는 로케이터(Locator), 이름(Name) 또는 둘다 추가로 분류될 수 있다.

 

2) URL, URN

URL - Locator: 리소스가 있는 위치를 지정

URN - Name: 리소스에 이름을 부여

 

위치는 변할 수 있지만, 이름은 변하지 않는다.

예) urn:isbn:8960777331 : 특정 책의 isbn URN

 

3) URL

scheme://[userinfo@]host[:port][/path][?query][#fragment]

https://www.google.com:443/search?q=hello&hl=ko

  • 프로토콜(https)
  • 호스트명(www.google.com)
  • 포트 번호(443)
  • 패스(/search)
  • 쿼리 파라미터(q=hello&hl=ko)

scheme (https)

주로 프로토콜 사용

프로토콜: 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙

             예) http, https, ftp 등등

http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능

https는 http에 보안 추가 (HTTP Secure)

 

userinfo

URL에 사용자정보를 포함해서 인증

거의 사용하지 않음

 

host (www.google.com)

호스트명

도메인명 또는 IP 주소를 직접 사용가능

 

port (443)

접속 포트

일반적으로 생략, 생략시 http는 80, https는 443

 

path (search)

리소스 경로(path), 계층적 구조

예)

  • /home/file1.jpg
  • /members
  • /members/100, /items/iphone12

 

query (q=hello&hl=ko)

key=value 형태

?로 시작, &로 추가 가능 ?keyA=valueA&keyB=valueB

query parameter, query string 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태

 

fragment

예) https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html

#getting-started.introducing-spring-boot

 

html 내부 북마크 등에 사용
서버에 전송하는 정보 아님

 

4) 웹 브라우저 요청 흐름

 

HTTP 메시지 생성

1. DNS 서버에서 조회해 IP 주소를 얻어오고 

2. HTTP PORT를 확인해

3. HTTP 요청 메시지를 생성한다.

HTTP 메시지 전송

1. 웹 브라우저가 HTTP 메시지 생성

2. SOCKET 라이브러리를 통해 전달

  - A: TCP/IP 연결(IP, PORT, 3 way handshaking)

  - B: 데이터 전달

3. TCP/IP 패킷 생성, HTTP 메시지 포함

 

 

HTTP 응답

구글 서버는 요청 패킷을 받아 분석하고

검색 엔진을 통해 리소스를 찾아 응답 메시지를 만든다.

웹 브라우저는 응답 패킷을 받아 HTML을 렌더링한다.

 

 

 

 

 

 

 

 

 

 

 

출처

모든 개발자를 위한 HTTP 웹 기본 지식(김영한)

 

 

 

728x90

'HTTP' 카테고리의 다른 글

[HTTP] 6. HTTP 헤더(캐시와 조건부 요청)  (0) 2022.06.08
[HTTP] 5. HTTP 헤더(일반 헤더)  (0) 2022.06.08
[HTTP] 4. HTTP 상태코드  (0) 2022.06.03
[HTTP] 3. HTTP 메서드  (0) 2022.06.02
[HTTP] 2. HTTP 기본  (0) 2022.06.02