HTTP 및 TCP/IP 프로토콜 정리
약속~
HTTP : Hypertext Protocol
HTTP란 서버와 클라이언트 간의 TCP/IP 통신 위에서 메시지 교환하기 위해 사용되는 프로토콜이다.
프로토콜 : 서로다른 하드웨어 기기끼리 원활하게 통신하기 위해 필요한 규칙
HTTP 프로토콜 : 웹 브라우저와 웹 서버 간의 데이터를 주고받는 규칙
1-1. HTTP의 특징
Stateless
-
과거 정보를 남기지 않고 새로운 리퀘스트를 보낼때마다 새로운 리스폰스를 보낸다.
-
상태를 유지하고 싶을때는 세션과 쿠키가 쓰인다.
리퀘스트에서 URI로 리소스를 식별
-
요청 라인
- GET www.example.com/products/item123.html HTTP/1.1
- GET www.example.com/products/item123.html HTTP/1.1
-
헤더에 호스트 지정
- GET /products/item123.html HTTP/1.1 Host: http://www.example.com
- GET /products/item123.html HTTP/1.1 Host: http://www.example.com
-
자신에게 송신하는 경우 와일드카드 지정
- OPTIONS * HTTP/1.1
지속연결
-
기존에는 비지속연결
- 요청을 주고 받을 때 마다 새로운 TCP커넥션을 연결하고 종료해서 주고받을 데이터가 많아질수록 부하가 커진다.
- 지속연결을 통해서 서버의 부하를 줄이고 통신을 빠르게 하였다.
-
파이프라이닝 가능
- 기존 응답을 기다리지 않고, 다음 리퀘스트를 보낸다.
- 하지만 성능 향상이 미비하고 프록시 버그가 많아 모든 브라우저에서는 기본적으로 활성화 안되어있다.
1-2. HTTP 요청/응답 메시지 구성 요소
리퀘스트 메시지 (Request Message)
GET /index.html HTTP/1.1
Host: http://www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8
-
Request Line (요청 라인)
-
요청 방식(Method): GET, POST, PUT, DELETE 등
-
요청 대상(URI): 요청하려는 자원의 경로
-
HTTP 버전: 예를 들어, HTTP/1.1
-
-
Headers (헤더)
-
요청의 메타데이터를 포함
-
Host, User-Agent, Accept, Content-Type 등
-
-
Body (본문)
- POST나 PUT 요청에서 전송할 데이터 포함한다. (필요시)
리스폰스 메시지 (Response Message)
HTTP/1.1 200 OK
Date: Sun, 25 Aug 2024 12:28:53 GMT
Server: Apache/2.4.1 (Unix) Last-Modified: Wed, 22 Jul 2024 19:15:56 GMT Content-Length: 88 Content-Type: text/html
<html> <body> <h1>Hello, World!</h1> </body> </html>
-
Status Line (상태 라인)
-
HTTP 버전: 예를 들어, HTTP/1.1
-
상태 코드(Status Code): 요청의 처리 결과를 나타낸다.
-
예를 들어, 200, 404
-
상태 메시지: 상태 코드의 설명 메시지 OK, Not Found
-
-
Headers (헤더)
- 응답의 메타데이터를 포함한다. 예를 들어, Content-Type, Content-Length, Set-Cookie 등이 있다.
-
Body (본문)
- 요청한 자원이나 데이터를 포함
1-3. HTTP 메서드
* 멱등성 : 연산을 여러번 적용하더라고 결과가 달라지지 않는 성질
GET : 데이터를 가져옴, 멱등성 보장
POST : 새로운 리소스 등록, 멱등성 미보장
PUT : 대상 리소스가 없다면 생성하고, 리소스가 존재하면 교체, 멱등성 보장
PATCH : 리소스의 일부를 교체, 멱등성 보장 or 미보장
DELETE : 리소스 삭제
1-4. HTTP 상태 코드
-
100 번대 : 코드를 요청받았고, 해당 요청에 대한 프로세스를 진행 중
-
200 번대 : 성공 상태
-
300 번대 : 요청에 대한 추가적인 처리, 동작이 필요
-
400번대 : 클라이언트의 요청이 잘못되었을때의 오류
-
500번대 : 서버가 잘못되었을때의 오류
TCP/IP 프로토콜
2-1. TCP : Transmission Control Protocol
-
역할
-
전송 제어 프로토콜
-
서버와 클라이언트 사이 통신 연결 제어
-
-
특징
-
Byte Stream 서비스 제공
- <u>큰 데이터를 잘게 쪼갠 뒤 전송 (패킷)</u>
-
3way handshaking
-
1.요청 : 내목소리 들리니~? 🗣️
-
2.상대 응답 : 응 들려~ 👂🏻
-
3.내 응답 : 나도 들려~ 👂🏻👂🏻
-
-
신뢰성 담당 : 응답을 확인해야 데이터를 보냄
-
2-2. IP : Internet Protocol
-
역할
- TCP에서 분할된 데이터 패킷을 목적지로 전달.
-
특징
-
IP 주소 : 네트워크에 연결된 장치에 할당된 논리 주소
-
MAC 주소 : 기기에 하나씩 할당되어있는 물리적 고유 식별주소
-
IP 주소는 언제든 변경될 수 있기 때문에 믿기 힘들기 때문에 변하지 않는 MAC 주소를 쓴다. 패킷을 전송하려면 IP 주소를 MAC 주소로 변환하는 작업이 필요하고 이 작업은 ARP를 통해 이루어진다.
-
ARP : Address Resolution Protocol
-
주소를 찾아가는 프로토콜
-
수신자의 IP 주소를 통해 MAC주소를 조사하여 루트를 찾아낸다.
-
이때 중간에 경유하는 네트워크 기기들이 있는데, 중간기기들을 전체 루트를 알 필요 없이 자기가 넘겨야하는 다음 주소만 알면 된다. 마치 택배의 중간 경유지인 Hub와 같은 개념
-
-
DNS : Domain Name System
-
도메인 이름 및 IP 주소를 확인
-
http://www.juju.com 도메인 이름을 127.000.000 IP 주소로 변환하고 도메인 이르을 웹 브라우저에 입력할 때, 최종 사용자를 어떤 서버에 연결할 것인지 제어
-
-
URL :
-
웹 페이지상의 주소
-
리소스의 위치
-
http://www.juju.com/category : categoty는 리소스의 실제 위치
-
-
URN :
-
리소스의 위치와 상관없이 식별가능한 고유한 이름
-
URL을 변경하면 기존 URL을 사용할 수 없는 URL의 한계 때문에 생김
-
-
URI :
-
URL과 URN을 포괄하는 개념으로 리소스에 대한 고유 식별자
-
www.juju.com/category/1 : /1은 카테고리를 식별하는 식별자이므로 URI 개념
-
http://www.juju.com/category?page=1 : 쿼리 또한 식별자로 URI 개념
-
-
2-3. TCP/IP 4계층
-
응용 계층: 데이터 생성 및 사용.
-
전송 계층: 데이터 전달 보장 (TCP).
-
인터넷 계층: 데이터 전송 경로 설정 (IP).
-
네트워크 액세스 계층: 물리적 데이터 전송 (MAC).