본문 바로가기
창고 3/[Dev] My Readme

웹 기초 2

by 부엉이의 정보 창고 2021. 12. 21.
728x90

HTTP 프로토콜

Hyper Text Transfer Protocol은 하이퍼텍스트 문서(HTML)를 전송하기 위해 사용되는 통신 규약으로, 웹의 핵심 기술이다.

OSI 7계층

Open System Interconnection(OSI)이란 네트워크 통신이 일어나는 과정을 7단계 계층으로 나누어 설명한 모델이다. 각각의 하위 계층이 정상적으로 동작해야 상위 계층 역시 동작하므로, 네트워크 통신이 실패할 경우 어느 계층에서 실패했는지 파악하기 쉽다는 유지보수적인 장점을 가진다. HTTP 프로토콜은 응용 계층, 즉 가장 상단에 위치하며, TCP/IP 계층을 기반으로 동작한다.

 

  • TCP/IP => HTTP

 

OSI 7 계층 구조

TCP/IP 프로토콜

인터넷 상에서 식별된 컴퓨터간 데이터 패킷을 주고 받는 통신 규약을 일컬어 TCP(Transmission Control Protocol)/IP(Internet Protocol)라고 부른다. 데이터(패킷)를 주고 받는 규약을 TCP, 네트워크 상의 컴퓨터를 식별하는 규약을 IP로 이해하면 된다. TCP/IP 프로토콜은 아래와 같은 4계층으로 나뉘어진다.

 

  • 애플리케이션 계층
  • 트랜스포트 계층
  • 네트워크 계층
  • 링크 계층

 

오늘날 대부분의 네트워크 통신은 TCP/IP 기반으로 이루어진다. TCP/IP에서는 IP를 통해 통신을 위한 물리적 호스트 대상을 찾으며, port를 통해 논리적 대상을 찾게 된다.

예를 들어, 웹 브라우저 상에서 www.naver.com을 입력할 경우

  1. 클라이언트 측에서 임의의 포트 번호를 할당
  2. 통신을 위해 출발지&목적지 IP/port를 설정(디폴트 포트 번호는 80으로 세팅됨)
  3. 서버에서 요청한 데이터를 처리 후 클라이언트에게 전달

TCP/IP상에서의 3 way handshake

3 way handshake란 TCP 프로토콜 상에서 송/수신자 간의 연결이 원활하게 되어 있는지 확인하기 위해 클라이언트와 서버간 메세지를 주고 받는 작업이다.

 

  • SYN : synchronize sequence numbers
  • ACK : acknowledgment

 

3 way handshake 프로세스

HTTP 메시지

HTTP 메세지는 1) 시작줄 2) 메시지 헤더 3) 메시지 바디로 나뉘어지고, 각 부분은 개행 문자(\n)를 기준으로 분류된다. 헤더의 끝나는 부분에 개행 문자 2개가 연달아 오고 메시지 바디 부분이 시작된다.

HTTP 메시지의 섹션 구분
<img src="http메시지-개행문자.png" width="1000px", height="200px"/>

HTTP 메소드

HTTP 메소드 중 GET/POST 메소드가 가장 보편적으로 사용된다. GET 방식은 URL에 유저가 입력한 데이터가 표시되고, POST 방식은 HTTP 메시지 바디 부분에 그 값이 나타나게 된다. POST 방식의 경우 HTTP 메시지 헤더에 content-type을 명시해줘야 메시지 바디 부분을 정상적으로 동작시킬 수 있다는 점을 유의해야 한다.

HTTP 상태 코드

서버는 클라이언트의 요청에 대한 결과를 HTTP 상태 코드를 통해 알려준다. 상태 코드는 3자리 숫자와 응답 문구로 이루어지고, 상세 분류는 아래와 같다.

  • 1xx : 정보
  • 2xx : 성공 e.g 200 OK, 정상처리
  • 3xx : 리다이렉션
  • 4xx : 클라이언트 에러 e.g 404 Not Found, 존재하지 않음
  • 5xx : 서버 에러

사용하는 웹 서버의 종류에 따라 에러 페이지가 다르게 나타나므로 상태 코드를 통해 서버의 종류를 추측할 수 있다.

728x90

'창고 3 > [Dev] My Readme' 카테고리의 다른 글

하드웨어 기초 1  (0) 2021.12.23
웹 기초 3  (0) 2021.12.22
웹 기초 1  (0) 2021.12.20
디자인 패턴 기초 1  (0) 2021.12.17
네트워크 기초 4  (0) 2021.12.16

댓글


loading