빅 엔디안(Big Endian) / 리틀 엔디안(Little Endian)
엔디안(Endianess)은 컴퓨터의 메모리 같은 1차원 공간에 대상을 배열하는 방법을 말한다.
빅 엔디안 - 상위 비트부터 바이트 단위로 저장하는 방식 ( 네트워크 )
리틀 엔디안 - 하위 비트부터 바이트 단위로 저장하는 방식 ( 인텔 계열 CPU )
ex) 네트워크 포트 128.2.194.242
표현법
128.2.194.242
→ 0x8002C2F2
종류 | 표현 |
---|
빅 엔디언 | 80 02 C2 F2 |
리틀 엔디언 | F2 C2 02 80 |
HTTP
HyperText Transfer Protocol의 약자. 문서를 전송하기 위한 프로토콜.
서버-클라이언트 프로그래밍 모델에서 어떤 식으로 메세지를 교환할지 정해놓은 규칙이다.
주요 메소드 규칙
요청 | 동작 |
---|
GET | 리소스 조회 |
POST | 리소스 등록, 요청한 데이터에 대한 처리 |
PATCH | 리소스에 대해서 부분 변경을 수행. |
PUT | 해당 데이터를 덮어쓴다. 데이터가 없으면 생성. |
DELETE | 리소스 삭제 |
응답 코드
1xx ( 정보전달 : Information Response )
요청을 받았고, 작업을 진행 중이라는 의미.
- 100 ( Continue ) : 임시 응답으로 클라이언트가 요청을 계속하거나 요청이 완료된 경우 응답을 무시해야함을 의미
- 101 ( Switching Protocol ) :
Upgrade
클라이언트의 요청 헤더에 대한 응답으로 전송되며 서버가 전환하는 프로토콜을 의미 ex) HTTP 1.1
-> HTTP 2.0
, HTTP
-> HTTPS
- 102 ( Processing ) : 서버가 요청을 수신하여 처리중.
- 103 ( Early Hints ) : 최종 응답에 대한 해더를 먼저 받고, 완성된 응답은 나중에 받게 된다. 리소스의 링크를 먼저 전달하여 완성된 응답을 받기 전에 해당 리소스에 대한 로딩을 먼저 진행할 수 있다. 웹 최적화에 주로 사용
2xx ( 성공 : Successful Response )
작업이 성공적으로 끝났고,받아들여졌다는 의미.
- 주요 코드
- 200 ( OK ) : 성공적으로 처리했을 때. 가장 일반적으로 볼 수 있는 HTTP 형태. 성공의 의미는 Method에 따라 다르다.
- 201 ( Created ) : 요청에 성공했으며 새로운 리소스가 생성됐음을 의미. POST나 PUT에 의한 응답 코드.
- 204 ( No Content ) : 해당 요청에 대해서 보낼 리소스가 없지만 응답 헤더를 유용하게 사용할 수 있음
3xx ( 리다이렉션 : Redirection Message )
요청을 완료하기 위해 리다이렉션이 이루어져야함을 의미.
- 300 ( Multiple Choices ) : 요청에 대한 응답이 2개 이상인 경우, 둘 중하나를 선택해야하는 상태를 의미.
- 301 ( Moved Permanently ) : 요청한 리소스의 URL이 영구적으로 변경된 경우. 새 URL이 응답에 포함되어 전달됨.
- 302 ( Found ) : 요청한 리소스의 URI가 일시적으로 변경되었음을 의미.
- 303 ( See Other ) : GET 요청을 통해 다른 URI를 통해 리소스를 가져오도록 지시. GET메소드가 아닌 다른 메소드로 요청을 보냈더라도 GET 메소드를 무조건 써야함.
- 304 ( Not Modified ) : 캐싱 목적으로 사용. 응답이 수정되지 않았음을 알려 클라이언트가 동일한 버전의 응답을 사용하고 있음을 보장.
- 307 ( Temporary Redirect ) : 요청한 리소스가 임시로 다른 URI가 있음을 의미. 303과 달리 요청에 사용한 메소드를 그대로 사용해서 재요청을 보내야함.
- 308 ( Permanent Redirect ) : 리소스가 다른 URI에 영구적으로 위치함을 의미. HTTP 메서드를 변경하지 않고 다른 URI에 보내야함을 의미.
4xx ( 클라이언트 오류 : Client Error Resposne )
요청이 올바르지 않은 경우. 브라우저에 직접 표출된다.
- 400 ( Bad Request ) : 클라이언트 오류로 인식되는 사항으로 인해서 요청을 처리하지 않거나, 할 수 없는 경우
- 401 ( Unauthorized ) : 인증을 위한 자격증명에 실패했거나, 자격 증명이 필요한 경우
- 403 ( Forbidden ) : 클라이언트가 접근하려는 콘텐츠에 대한 권한이 없는 경우
- 404 ( Not found ) : 서버가 요청한 리소스를 찾을 수 없는 경우. 브라우저에서는 URL이 인식되지 않음을 의미하고, API의 경우 유효한 엔드포인트지만 리소스 자체가 없는 경우를 의미한다. 403 에러코드를 사용하는 경우 권한이 없음을 숨기기 위해 404를 대신 사용하기도 한다.
5xx ( 서버 오류 : Serever Error Response )
서버가 응답할 수 없는 경우를 의미.
- 500 ( Internal Server Error ) : 서버에서 처리방법을 알 수 없는 상황인 경우
- 501 ( Not Implemented ) : 요청한 방법이 서버에서 지원되지 않아 처리할 수 없는 경우.
이 이외에도 비표준 응답으로서 서버에 따라 맞춤 코드가 전달될 수 있다.
Reference
FTP ( File Transfer Protocol )
TCP/IP 네트워크 상 컴퓨터들이 파일을 교환하기 위해 사용되는 통신 규약. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었음. 예) 대표적인 FTP 서비스 - FileZila
FTP는 클라이언트-서버 프로토콜로서, 기본적으로 클라이언트가 파일을 요청하면 서버가 파일을 제공한다. 그래서 프로토콜 연결에 있어 두개의 채널이 필요하다.
- 명령 채널(Command Port): 명령을 시작해 어떤 파일에 엑세스할 것인지 기본 정보를 전달.
- 데이터 채널(Data Port): 파일 데이터 전송.
FTP에서는 일반적인 기본 통신 모드로 21번포트를 활용한다. 그리고 FTP의 연결 모드에는 능동 모드, 표준 모드 두가지가 존재한다.
- 능동 모드 : 데이터 요청을 클라이언트가 서버에게하는 방식
- 수동 모드 : 데이터 요청을 서버가 클라이언트에게 접속 요청을 하는 방식
( 클라이언트의 방화벽에 영향을 받음 )
장/단점
- 장점 - 동시에 여러 파일 전송이 가능, 연결이 끊긴 후 전송 재개 가능, 전송 일정 예약 가능
- 단점 - 보안 프로토콜에 의해서 개발되지 않았기 때문에 보안에 취약
→ FTP의 대안으로 SFTP를 사용. (SSH 데이터 스크림을 통해 파일 전송시 높은 수준으 파일 보호를 실현하는 프로토콜)
Reference
https://cafe24.zendesk.com/hc/ko/articles/5729931658649-FTP는-어떻게-사용하나요
https://experience.dropbox.com/ko-kr/resources/what-is-ftp
MIME
- MIME(Multipurpose Internet Mail Extentsions)은 다양한 유형의 정보를 식별하기 위한 표준.
- MIME으로 인코딩한 파일은 Content-type 필드를 헤더에 담게 되고, 이를 통해 전송된 자원의 형식을 표현할 수 있다.
- 초기 메일 컨텐츠에 주로 사용되었지만, HTTP에서 웹 서버가 전달하는 컨텐츠의 유형을 분류하는 기준으로서 사용된다.
- 브라우저에서는 파일 확장자가 아닌 전달받는 MIME 유형을 통해서 처리방식을 결정하기 때문에 웹 서버에서
Content-type
에 유형을 정확하게 보내는 것이 중요하다.
구조
/
를 기준으로 type(파일의 종류)과 subtype(파일의 포맷)으로 나뉨
type/subtype
추가적인 세부정보 제공을 위해 매개변수가 사용될 수 있음.
type/subtype;parameter=value
유형
Discrete - 단일 파일이나 매체를 나타내는 유형
- application
- audio
- example
- font
- image
- model
- text
- video
Multipart - 여러 구성 요소 부분으로 구성된 문서를 나타내며 각 부분은 고유한 개별 MIME 유형을 가질 수 있음.
Reference