1. HTTP

  1. [설명]
    1. 브라우저와 서버가 통신할 수 있도록 만들어주는 여러 프로토콜 가운데 한 종류입니다
    2. 웹 브라우저와 웹 서버 사이에 HTML문서를 주고 받는데 쓰이는 통신 프로토콜이라 불립니다
  2. [History]
    1. 초기에는 HTTP파일을 전송하기 위한 목적으로 만들어 졌었습니다
    2. 현재에는 JSON, Image 파일 등 또한 전송할 수 있게 되었습니다
  3. [Protocol 특징]
    1. 클라이언트가 서버에 요청 메세지를 보내고 서버는 클라이언트의 요청에 대한 응답을 반환해줍니다
    2. 연결 상태를 유지하지 않는 비연결성 프로토콜이며, 요청과 응답 방식으로 동작합니다
      1. 무상태성
        1. 연결상태를 유지하지 않는 다는 것은 서버는 응답 메시지를 반환한 후에 클라이언트의 상태를 저장하지 않는 다는 의미입니다
        2. 즉, HTTP Protocol은 상태가 없는 Protocol이라고 합니다
    3. 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 말이며, 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 의미입니다
  4. [Request, Resposne]
    1. [Client = Request]
      1. 요청을 보내는 쪽을 의미하며 일반적으로 웹 관점에서는 브라우저를 뜻합니다
    2. [Server = Response]
      1. 요청을 받는 쪽을 의미하며 일반적으로 데이터를 보내주는 원격지의 컴퓨터를 의미합니다
  5. [Request]
    1. [구조]
      1. Request Line, Header Lines, Body 구조로 구성되어 있습니다!
    2. [Request Line]
      1. Http method(Get, Post등)를 사용해 서버가 수행해야 할 동작을 나타냅니다
      2. 요청 타켓(url, protocol, port, domain)을 나타내며, 요청 컨텍스트에 의해 특정 지어집니다
      3. Http버전이 들어가며, 응답 메시지에 사용할 Http버전을 알려주는 역할을 합니다
    3. [Header]
      1. 요청에 들어가는 Http Header는 Http Header 기본 구조를 따릅니다
      2. 대소문자 구분 없는 문자열 다음 콜론( : )이 붙으며, 뒤에 오는 값은 Header에 따라 달라집니다
      3. Header를 세분화하면 General, Request, Entity로 나눠 집니다
    4. [Body]
      1. Request의 마지막 부분에 들어가며, 모든 요청에 들어가지는 않으며, Get, Head, Delete, Options처럼 리소스를 가지고 오는 요청은 대부분 본문을 필요로 하지 않습니다
      2. 단일 리소스 본문(Single-Resource Bodies), 다중 리소스 본문(Multiple-Resource Bodies)로 나눠집니다
  6. [Response]
    1. [구조]
      1. Status Line, Header Lines, Body로 구성이 되어 있습니다
    2. [Status Line]
      1. 프로토콜 버전, 보통 HTTP/1.1로 나타냅니다
      2. 상태 코드, 요청의 성공 여부를 나타냅니다 [표기] (200, 404, 302 등의 코드)
      3. 상태 텍스트, 짧고 간결하게 상태 코드에 대한 설명을 글로 나타냅니다 ⇒ [표기] (Not Found)
    3. [Header]
      1. 응답에 들어가는 HTTP Header는 요청과 마찬가지로 HTTP Header의 기본 구조를 따릅니다
      2. 대소문자 구분 없는 문자열 다음 콜론 (' : ')이 붙으며, 그 뒤에 오는 값은 Header에 따라 달라집니다
      3. Header를 세분화하면 General Header, Request Header, Entity Header으로 나눌 수 있습니다
      4. [General Header]
        1. [설명]
          1. Request과 Response에 모두 적용되지만, Data와는 관련이 없는 Header라고 합니다
        2. [Option]
          1. Date, Connection(클라이언트와 서버 간의 연결에 대한 옵션을 말합니다)
      5. [Request Header]
        1. [설명]
          1. Request하는 Client에 대한 자세한 정보를 포함하는 Header라고 합니다
        2. [Option]
          1. Host, User-Agent, Cookie등이 있습니다
      6. [Response header]
        1. [설명]
          1. Server 자체에 대한 정보, Response에 대한 부가적인 정보를 포함하는 Header라고 합니다
        2. [Option]
          1. Server, Allow, ETag, Access-Control-Allow-Origin등이 있습니다
      7. [Entity Header]
        1. [설명]
          1. 콘텐츠의 길이나 MIME 타입과 같이 Entity Body에 대한 자세한 정보를 포함하는 Header라고 합니다
        2. [Option]
          1. Content-Type, Content-Length등이 있습니다
    4. [Body]
      1. response의 마지막 부분에 들어갑니다
      2. 모든 응답에 들어가지는 않으며 201, 204 같은 상태 코드를 가진 응답에는 보통 본문이 없습니다
      3. response body는 이미 길이가 알려진 단일 파일로 구성된 헤더 두 개(Content-Type, Content-Length)를 가진 단일-리소스 본문, 길이를 모르는 단일 파일로 구성된 단일-리소스 본문, 서로 다른 정보를 담고 있는 멀티파트로 이루어진 다중-리소스 본문 이렇게 크게 3가지로 나눌 수 있습니다
  7. [HTTP Method]
  8. [HTTP StatusCode]

2. TCP/IP(Socket통신)

  1. [설명]
    1. 일반적으로는 전송 계층 프로토콜로 TCP를 사용하고 네트워크 계층 프로토콜로 IP를 사용합니다
    2. IP주소를 사용해서 통신할 컴퓨터를 결정하고, 포트 번호를 사용해서 해당 컴퓨터의 어떤 프로그램과 통신할지를 결정합니다
    3. 컴퓨터 사이의 통신 표준 및 네트워크의 라우팅 및 상호연결에 대한 자세한 규칙을 지정하는 프로토콜 스위트라고 불립니다
  2. [기능]
  3. [명령]
  4. [특징]

3. 통신프로토콜

  1. [설명]
  2. [구성]