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