HTTP(하이퍼 텍스트 전송 프로토콜)
- www에서 쓰이는 핵심 프로토콜
- 문서의 전송을 위해 쓰이며, 웹 애플리케이션에서 사용
- 음성, 화상 등 여러 종류의 데이터를 MIME로 정의하여 전송 가능
- 요청/응답에 기반하여 서비스 제공
HTTP 1.0
- 연결 수립, 동작, 해제의 단순함이 특징
- HTML 문서를 전송 받은 뒤 연결을 끊고 다시 연결하여 데이터를 전송
- 단순 동작으로 인해 통신 부하 문제 발생
HTTP 1.1
- HTTP 1.0과 호환 가능
- Multiple Request 처리가 가능하여 Client의 Request가 많을 경우 연속적인 응답 제공
- Pipeline 방식의 요청/응답 진행
- HTTP 1.0과는 달리 Server가 갖는 하나의 IP Adress와 다수의 Web Site 연결 가능
- 빠른 속도와 인터넷 프로토콜 설계에 최적화 될 수 있도록 Cache 사용
- Data 압축해서 전달이 가능하도록 하여 전달하는 Data 양이 감소
HTTP 요청 프로토콜 구조
Request Line: 요청타입 + 공백 + URI + 공백 + HTTP버전
요청 타입 종류
- GET: 클라이언트가 서버한테 데이터를 요청/응답
- POST: 클라이언트가 서버한테 데이터를 요청/응답
- COPY: 파일을 다른 위치로 복사하기 위해 사용
- MOVE: 파일을 다른 위치로 이동하기 위해 사요
- DELETE: 서버에서 문서를 제거하기 위해 사용
- 일반적으로 COPY, MOVE, DELETE는 클라이언트가 서버의 데이터를 컨트롤 할 수 없도록 막음
- GET과 POST의 차이점
- GET: Request Line에 보낼 데이터를 작성
- POST: Body에 보낼 데이터를 작성 (민감한 정보의 데이터)
- POST 또한 Body에 중요한 정보가 노출될 가능서이 존재하기에 민감한 정보는 HTTPS를 사용
URI
- scheme: 프로토콜 종류를 작성
- host: 도메인 주소 (도메인 주소가 IP주소로 자동 변환)
- port: 포트번호 (웹 브라우저가 자동으로 작성하여 생략해줌)
- path: 데이터 위치 경로
- ?query: 클라이언트가 필요한 데이터에 대한 정보 값 (클라이언트가 서버에 전달하는 값임)
HTTP 응답 프로토콜
Status Line: HTTP 버전 + 공백 + 상태코드 + 공백 + 상태문구
상태코드
- 2XX : 클라리언트 요청이 성공 (정상)
- 4XX: 클라이언트 요청이 불완전하여 다른 정보가 필요 (클라이언트 에러)
- 403: 클라이언트가 권한이 없는 페이지를 요청
- 404: 클라이언트가 서버에 없는 페이지를 요청
- 5XX: Server의 오류를 만나거나 클라이언의 요청을 서버가 수행 불가 (서버 에러)
- 500: Server 일부가 멈췄거나 설정 오류가 발생
- 503: 최대 Session 수를 초과
HTTP 헤더 상세 구조
- HTTP 요청 프로토콜: 일반 + 요청 + 항목 헤더
- HTTP 응답 프로토콜: 일반 + 응답 + 항목 헤더
헤더 종류
- Content-Length: 메시지 바디 길이를 나타냄
- Content-Type: 메시지 바디에 들어있는 컨텐츠 종류 (ex: HTML 문서는 text/html)
- Cookie: 서버로부터 받은 쿠키를 다시 서버에게 보내주는 역할
- Host: 요청된 URL에 나타난 호스트명을 상세하게 표시
- User-Agent: 클라이언트 프로그램에 대한 식별 가능 정보 제공
- Server: 사용하고 있는 웹서버의 소프트웨어에 대한 정보 제공
- Set-Cookie: 쿠키를 생성하고 브라우저에 보낼 때 사용.
'Network' 카테고리의 다른 글
Network_NAT & 포트포워딩 (0) | 2024.12.30 |
---|---|
Network_TCP 통신과정 (0) | 2024.12.30 |
Network_4계층 프로토콜 (0) | 2024.12.29 |
Network_라우팅 테이블 (0) | 2024.12.29 |
Network_ICMP 프로토콜, IPv4 조각화 (0) | 2024.12.29 |