면접 예상 질문 - HTTP, HTTP 메소드, TCP/IP, OSI 7계층

김명주·2023년 6월 3일
0
post-thumbnail
post-custom-banner

HTTP란?

텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다.

HTTP 동작

클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.
예를 들면, 우리가 특정 웹 사이트로 접속하면 서버에 GET 요청을 보내게 된다. 우리는 상태 코드를 통해 우리의 요청 결과를 응답 받을 수 있다. 요청을 받은 서버는 그 응답으로 HTML, JS, CSS등을 반환하며 웹 브라우저는 이를 화면에 출력하게 된다.

HTTP 특징

  1. HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.

  2. TCP/ IP를 이용하는 응용 프로토콜이다.
    (컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜)

  3. HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.(무상태성) -> 클라이언트는 HTTP로 서버에 연결한 뒤에 응답을 받으면 그 연결을 끊어버린다. 서버 입장에서는 접속 유지에 대한 요구가 적어 불특정 다수를 대상으로 하는 서비스에 적합하다.
    ex) 상품확인 -> 장바구니 -> 결제의 과정이 시스템적으로 상태 정보로 기록되지 않는다.
    (이러한 단점을 해결하기 위해 Cookie와 Session이 등장하였다.)

  4. HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.

  5. Keep-alive 기능 지원한다. 하나의 웹 사이트에 방문하면 대개 수십개의 파일을 제공하는데 TCP 통신 과정 중 연결 수행/해제 에서 리소스가 많이 소요되는데 Keep-alive 기능은 이러한 파일을 하나씩 받기 위하여 매번 연결을 맺고 끊는것을 방지한다.

HTTP 메시지


HTTP messages는 클라이언트와 서버 사이에서 데이터가 교환되는 방식이다. 요청(request)과 응답(response) 두가지 유형이 있으며, 몇줄의 텍스트 정보로 구성된다.
이러한 텍스트 정보는 개발자가 직접 작성할 필요가 없으며 구성 파일, API, 기타 인터페이스에서 HTTP messages를 자동으로 완성한다.

  1. start line
  • start line에는 요청이나 응답의 상태를 나타낸다.
  • 항상 첫 번째 줄에 위치한다.
  • 응답에서는 status line이라고 부른다.
  1. HTTP headers
  • 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합이다.
  • start line과 HTTP headers를 묶어 요청이나 응답의 헤드(head)라고 이야기한다. payload는 body라고 이야기한다.
  1. empty line
  • 헤더와 본문을 구분하는 빈 줄이 있다. 그 줄을 말한다.
  1. body
  • 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함한다.
  • 요청과 응답의 유형에 따라 선택적으로 사용한다.

Requset

클라이언트가 서버에게 연락하는 것을 요청이라고 하며 요청을 보낼때는 요청에 대한 정보를 담아 서버로 보낸다.
Requset Method의 종류로는 GET(요청), POST(생성), DELETE(삭제), PUT(수정)이 있다

  1. 시작줄 (첫 번째 줄)
    첫줄은 메소드 구조 버전으로 구성되어 있다

  2. 헤더 (두 번째 줄부터)
    두번째 줄부터는 헤더이며 요청에 대한 정보를 담고 있다. User-Agent, Upgrade-Insecure-Requests 등등이 헤더에 해당되며 헤더의 종류는 매우 많다.

  3. 본문 (헤더에서 한 줄 띄고)
    본문은 요청을 할 때 함께 보낼 데이터를 담는 부분이다.

Response

서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 응답이라고 한다. 상태 코드에는 굉장히 많은 종류가 있다. 모두 숫자 세 자리로 이루어져 있으며, 아래와 같이 크게 다섯 부류로 나눌 수 있다.

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.
  1. 시작줄 (첫 번째 줄)
    첫 줄은 버전 상태코드 상태메시지로 구성되어 있다

  2. 헤더 (두 번째 줄부터)
    두 번째 줄부터는 헤더로 응답에 대한 정보를 담고 있다.

  3. 본문 (헤더에서 한 줄 띄고)
    응답에는 대부분의 경우 본문이 있다. 보통 데이터를 요청하고 응답 메시지에는 요청한 데이터를 담아서 보내주기 때문이다.

HTTP 메소드

  1. GET
  • 데이터를 읽거나(Read) 검색(Retrieve)할 때에 사용되는 메소드
  • 자원의 상태를 변경시키지 않아 safe method라고 불리고, 멱등성을 띈다
  • 멱등성이란 여러번 수행해도 결과가 같음을 의미한다. 즉, 호출로 인하여 데이터가 변형이 되지 않는다는 것을 의미한다.
  1. POST
  • 새로운 리소스를 생성(create)할 때 사용
  • 서버의 상태를 변경시켜 비멱등성을 띈다
  1. PUT
  • PUT는 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용
  • 존재하는 자원을 전체적으로 변경할 때 사용
  • 자원이 존재하지 않는 경우, API는 자원을 생성할 수 있으며 이 경우 201코드
  1. PATCH
  • 한 자원의 데이터를 부분적으로 변경할 때 사용
  • PUT과 마찬가지로 자원을 변경하지만, 자원의 데이터를 부분적으로 변경할 때 사용
  1. DELETE
  • 지정된 리소스를 삭제
  • 멱등성 성질을 띈다고 할 수 있다. DELETE 메소드를 요청했을 때 자원을 삭제한 후 반복적으로 요청하게되면 404에러코드를 받게 되므로 멱등성의 성질을 띈다고 할 수 있다.

TCP/IP


TCP/IP란 TCP 프로토콜과 IP 프로토콜을 아울러 지칭하는 용어이다. TCP 프로토콜은 신뢰성 있고 무결성을 보장하는 연결을 통해 데이터를 안전하게 전달해주는 전송 프로토콜이고, IP 프로토콜은 패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜이다.
즉 TCP/IP란, 컴퓨터와 컴퓨터간의 지역네트워크(LAN) 혹은 광역네트워크(WAN)에서 원할한 통신을 가능하도록 하기 위한 통신규약(Protocol) 으로 정의할 수 있다

TCP/IP 4계층

TCP/IP 는 총 4개의 계층으로 이루어져 있고, 각 계층이 하는 역할이 명확히 구분되어 있다.

  • 4계층 : 응용 계층 (Application)
  • 3계층 : 전송 계층 (Transport)
  • 2계층 : 인터넷 계층 (Internet)
  • 1계층 : 네트워크 인터페이스 계층 (Network Interface)

송신 호스트에서 데이터를 보내기 위해서는 4계층으로부터 1계층 까지 순차적으로 거쳐가며 데이터를 캡슐화해야 하고, 최하 계층인 네트워크 인터페이스 계층은 이름에서 알 수 있듯 직접적으로 네트워크에 전기적 신호로 패킷을 전송하기 위한 액세스 계층이다. 따라서 네트워크 액세스 계층이라고도 부른다.

그리고 수신 호스트에서 이를 수신받아 1계층부터 4계층까지 순차적으로 거쳐가며 데이터를 역캡슐화해가며 최상 계층인 응용 계층에서 데이터를 수신받아 적절히 활용하게 된다.
각 계층 하나를 지나갈 때마다 헤더가 하나씩 늘어난다. 얼핏 보면 무의미하게 늘어만 가는 데이터라고 볼 수 있지만, 이것들은 해당 패킷을 수신 호스트까지 효율적으로 전송하기 위한 정보들을 담고 있는 각 계층에서 주입하는 유의미한 정보이다.

OSI 7계층


Open System Intercon-nection의 약자이며 시스템 상호 연결에 있어 개방(열려있다, 표준)모델을 뜻한다.
실제 인터넷에서 사용되는 TCP/IP OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순하된 현실화의 과정에서 채택된 모형이다.
OSI 7계층의 목적은 표준과 학습도구로써, 표준화를 통해 장비별 이직적인 포트, 프로토콜을 구별하기 위해, 그리고 OSI 계층별 기능과 통신의 과정을 정립하여 교육하기 위한 목적으로 사용하기 위해서다.

즉 OSI 7계층은 네트워크 통신 과정을 7개의 계층으로 구분한 산업 표준 참조 모델이라고 할 수 있다.

PDU

OSI 7계층에서는 PDU 개념을 중요시 하는데 PDU(Process Data Unit)란 각 계층에서 전송되는 단위이다. 이는 데이터 통신에서 상위 계층이 전달한 데이터에 붙이는 제어정보를 뜻한다. 각 계층별 PDU는 다음과 같다.

  • 1계층 : Bits
  • 2계층 : Frames
  • 3계층 : Packets
  • 4계층 : Segments
  • 5~7계층 : Data

쉽게 생각하면, 사용자는 Data 라고 부르고, TCP는 Segment 라고 부르고, IP는 Packet 이라고 부르고, 데이터링크는 Frame, 컴퓨터 하드웨어는 그것을 Bit 로 연산하고 다루게 되는 것.

OSI 7 Layer별 Protocol과 기능

1계층: 물리 계층

물리계층은 OSI 모델의 최하위 계층에 속하며, 상위 계층에서 전송된 데이터를 물리 매체(허브, 라우터, 케이블 등)를 통해 다른 시스템에 전기적 신호를 전송하는 역할을 한다.
즉, 기계어를 전기적 신호로 바꿔서 와이어에 실어주는 것이다.

  • 비트(Bit)단위의 PDU, 1(On)/0(Off)의 인코딩 전압 및 케이블 사양 핀의 수 등을 정의한 계층
  • 단지 데이터 전달의 역할
  • 1계층 장비 : 케이블, 리피터, 허브

2계층: 링크 계층

링크계층은 네트워크 기기들 사이의 데이터 전송을 하는 역할을 한다. 시스템 간의 오류 없는 데이터 전송을 위해 패킷을 프레임으로 구성하여 물리계층으로 전송한다. 3계층에서 정보를 받아 주소와 제어정보를 헤더와 테일에 추가한다.

  • 프레임(Frame)단위의 PDU, MAC주소와 제어정보를 전송, 헤더를 통해 캡슐화 또는 캡슐화 해제
  • 정보의 오류와 흐름을 관리하여 안정된 정보를 전달
  • 2계층 장비 : 브릿지, 스위치

3계층: 네트워크 계층

네트워크계층은 기기에서 데이터그램(Datagram)이 가는 경로를 설정해주는 역할을 한다. 라우팅 알고리즘을 사용하여 최적의 경로를 선택하고 송신측으로부터 수신측으로 전송한다. 이때, 전송되는 데이터는 패킷 단위로 분할하여 전송한 후 다시 합쳐진다. 2계층이 노드 대 노드 전달을 감독한다면, 3계층은 각 패킷이 목적지까지 성공적이고 효과적으로 전달되도록 한다.

  • 중계 노드를 통해 전송하는 경우 어떻게 중계할 것인가를 규정
  • 패킷(Packet)단위의 PDU, 패킷은 목적지까지 경로를 설정, 헤더를 통해 캡슐화 또는 캡슐화 해제
  • 데이터를 목적지까지 가장 안전하고 빠르게 전달.
  • IP(Internet Protocol), 라우팅(Routing), OSFP, BGP 등등
  • 3계층 장비 : 라우터, L3 스위치

4계층: 전송 계층

발신지에서 목적지(End-to-End) 간 제어와 에러를 관리한다. 패킷의 전송이 유효한지 확인하고 전송에 실패된 패킷을 다시 보내는 것과 같은 신뢰성있는 통신을 보장하며, 헤드에는 세그먼트가 포함된다. 주소 설정, 오류 및 흐름 제어, 다중화를 수행한다.

  • 세그먼트(Segement)단위의 PDU, 종단 간의 에러복구와 흐름제어 담당, 헤더를 통해 캡슐화 및 캡슐화 해제
  • TCP(Transmission Control Protocol), UDP(User Datagram Protocol) 등등
  • 4계층 장비 : L4 스위치

5계층: 세션 계층

통신 세션을 구성하는 계층으로, 포트(Port)번호를 기반으로 연결한다. 통신장치 간의 상호작용을 설정하고 유지하며 동기화한다. 동시송수신(Duplex), 반이중(Half-Duplex), 전이중(Full-Duplex) 방식의 통신과 함께 체크 포인팅과 유후, 종료, 다시 시작 과정 등을 수행한다.

  • 연결 세션에서 데이터 교환과 에러 발생 시의 복구를 관리. 즉, 논리적인 연결을 담당
  • 헤더를 통해 캡슐화 및 캡슐화 해제
  • 4계층과 5계층을 경계가 모호함

6계층: 표현 계층

표현계층은 송신측과 수신측 사이에서 데이터의 형식(png, jpg, jpeg...)을 정해준다. 받은 데이터를 코드 변환, 구문 검색, 암호화, 압축의 과정을 통해 올바른 표준방식으로 변환해준다.

  • 데이터 표현에 차이가 있는 응용처리에서 제어 구조를 제공
  • 전송하는 데이터의 인코딩, 디코딩, 암호화, 코드 변화
  • 헤더를 통해 캡슐화 및 캡슐화 해제

7계층: 응용 계층

응용계층은 사용자와 바로 연결되어 있으며 응용 SW를 도와주는 계층이다. 사용자로부터 정보를 입력받아 하위 계층으로 전달하고 하위 계층에서 전송한 데이터를 사용자에게 전달한다.
파일 전송, DB, 메일 전송 등 여러가지 응용 서비스를 네트워크에 연결해주는 역할을 한다.

  • 사용자와 가장 밀접한 계층, 인터페이스(Interface) 역할
  • 응용 프로세스 간의 정보 교환
  • 전자메일, 인터넷 서비스, 동영상 플레이어 등의 어플리케이션
profile
개발자를 향해 달리는 사람
post-custom-banner

0개의 댓글