이 글은 김영한님의 인프런 강의 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 듣고 배운 것을 두고두고 보기 위해 정리하는 글이다.
🗓️ 2023.06.21 작성 ▽
❗️ IP
지정한 IP 주소에 데이터를 전달
패킷(Packet)이라는 통신 단위로 데이터를 전달
패킷에는 출발지 IP, 목적지 IP 등의 정보가 포함
❗️ IP 프로토콜의 한계
❗️ 인터넷 프로토콜 스택 4계층
❗️ 프로토콜 계층 처리 과정
❗️ TCP는 IP 패킷의 단점을 보완한다.
TCP/IP 패킷에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등 여러 정보가 포함
❗️ TCP 특징
❗️ UDP
기능이 거의 없음
TCP의 특징인 연결지향, 데이터 전달 보증, 순서 보장 모두 UDP에선 이뤄지지 않음
데이터 전달 및 순서가 보장되진 않지만 단순하고 빠름
PORT, 체크섬 정보 정도만 추가된 IP와 비슷함
애플리케이션에서 추가 작업이 필요
❗️ PORT
같은 IP 내에서 프로세스를 구분
0부터 65535까지 할당이 가능
0부터 1023까지는 잘 알려진 포트로 사용하지 않는 것이 좋음
❗️ DNS
IP는 기억하기 어렵고 언제든 변경될 수 있음 -> DNS 존재 이유
전화번호부와 비슷한 역할
도메인 명을 IP 주소로 변환
우리는 google의 IP주소를 알지 못해도, 심지어 변하여도 알아차리지 못하고 google.com으로 접속
❗️ URI
Uniform: 리소스 식별하는 통일된 방식
Resource: 자원, URI로 식별할 수 있는 모든 것
Identifier: 다른 항목과 구분하는데 필요한 정보
URI는 URL, URN을 모두 포함한 용어
❗️ URI 분석
userinfo
URL에 사용자정보를 포함해서 인증
거의 사용하지 않음
host
호스트명(www.google.com)
도메인명을 사용하거나 IP 주소를 직접 사용
PORT
접속 포트
일반적으로 생략
생략시 http는 80, https는 443
path
리소스 경로
계층적 구조
ex) /home/file1.jpg, /members/, /items/iphone12, ,,,
query
key=value의 형태를 가짐
?로 시작, &로 추가 가능
ex) ?keyA=valueA&keyB=valueB
query parameter, query string 등으로 불림
웹서버에 제공하는 파라미터로, 문자 형태를 가짐
fragment
html 내부 북마크 등에 사용
서버에 전송되지는 않음
❗️ URI를 통한 요청 예시
위처럼 URI를 클라이언트가 입력하면 아래와 같은 순서로 서버에 HTTP 메시지가 전송
이때 위의 예시에서 만들어진 HTTP 메시지는 다음과 같이 생겼다고 볼 수 있음
만들어진 패킷 모습 예시
TCP/IP 패킷에 담긴 목적지 IP, PORT로 전달되고 목적지 서버에서는 HTTP 메시지를 확인할 수 있음
그 후 서버는 클라이언트에 HTTP 응답 메시지를 보냄
클라이언트 웹 브라우저는 응답 메시지를 받아 HTML을 렌더링해 띄워줌