CURL 이란?


서버와 통신할 수 있는 커맨드 명령어 툴이다. 웹개발에 매우 많이 사용되고 있는 무료 오픈소스이다 curl의 특징으로는 다음과 같은 수 많은 프로토콜을 지원한다는 장점이 있다.

다양한 지원 프로토콜들
DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet, TFTP

또한 SSL 인증 방식 역시 가능하다.


여기서 내가 가장 잘 알고 있는 프로토콜은 역시나 HTTP와 HTTPS이다. 

HTTP 통신은 프로젝트에서도 많이 사용해 봤기 때문에 익숙하다.


가장 많이 사용하는 프로토콜들 몇 가지를 알아보겠다.




첫 번째, HTTP 프로토콜이다.


HTTP: HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜 이다. 애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동한다.

가장 성공적인 인터넷 프로토콜이다. HTTP가 없었다면 인터넷은 지금과는 전혀 다른 모습이였을거다.

HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계돼 있다. 인터넷상에서 흔히 볼수 있는 HTML로 작성된 문서는 HTTP로 보낼 수 있는 데이터의 한 종류일 뿐이다. 이미지, 동영상, 오디오, 텍스트 문서들 아무튼 종류를 가리지 않는다.

Transfer라는 해석 그대로 데이터를 전송하겠다라는 의미로 앞에 Hypertext 가 붙은 이유는 하이퍼텍스트 기반으로 데이터를 전송하겠다는. 간단히 말해서 링크기반으로 데이터에 접속하겠다는 의미가 되겠다.


HTTP는 서버/클라이언트 모델을 따른다. 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)한다.

  1. 클라이언트 : 서버에 요청하는 클라이언트 소프트웨어가 설치된 컴퓨터. chrom, firefox, ie등의 클라이언트 소프트웨어를 이용한다. 클라이언트는 URI를 이용해서 서버에 접속하고, 데이터를 요청할 수 있다.
  2. 서버 : 클라이언트의 요청을 받아서, 요청을 해석하고 응답을 하는 소프트웨어가 설치된 컴퓨터. Apache, nginx, IIS, lighttpd 등이 서버 소프트웨어다.

웹서버는 보통 표준포트인 80번 포트로 서비스한다.




두 번째, FTP 프로토콜이다.


Fileile Transfer Protocol의 줄임말이다. 하나의 호스트에서 다른 호스트로 파일을 옮기기 위한 TCP기반 프로토콜이다. 보통 FTP는 웹상에 파일을 올리기 위한 목적으로 널리 사용되고 있다. FTP는 서버&클라이언트 모델을 따른다. 클라이언트는 서버에 연결해서 파일 업로드 및 다운로드 요청을 하고, 요청을 받은 서버가 응답 데이터로 파일을 전송하거나 수신한다. 




세 번째, STMP 프로토콜이다.


간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP)은 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜이다. 사용하는 TCP 포트번호는 25번이다. 상대 서버를 지시하기 위해서 DNS의 MX레코드가 사용된다. RFC2821에 따라 규정되어 있다. 메일 서버간의 송수신뿐만 아니라, 메일 클라이언트에서 메일 서버로 메일을 보낼 때에도 사용되는 경우가 많다.

SMTP는 텍스트 기반의 프로토콜로서 요구/응답 메시지뿐 아니라 모든 문자가 7bit ASCII로 되어있어야 한다고 규정되어 있다. 이 때문에 문자 표현에 8비트 이상의 코드를 사용하는 언어나 첨부파일과 자주 사용되는 각종 바이너리는 마임(MIME)이라고 불리는 방식으로 7비트로 변환되어 전달된다.

SMTP는 메시지를 생성하는 방법을 규정하지 않는다. 메시지 생성을 위하여 로컬 편집이나 단순한 전자 우편 응용이 사용된다. 메시지가 생성되면 호출된 SMTP가 메시지를 받고 TCP를 이용하여 다른 호스트의 SMTP에게 전달한다.



네 번째, TELNET이다.


텔넷.tele network의 준말. 멀리 떨어진 컴퓨터에 연결해 이쪽 컴퓨터를 그쪽에 연결된 터미널로 만들어 주는 인터넷 표준 프로토콜이다. 흔히 컴퓨터 통신을 할 때 쓰는 이야기 등과 같은 터미널 에뮬레이터를 생각하면 된다. 다만 텔넷은 인터넷을 통해서 연결된다는 점만이 다르다. 실제로 하이텔이나 천리안 등 PC통신도 인터넷에 연결하면 텔넷으로 들어갈 수 있다. 텔넷 접속을 하기 위해서는 일반 통신프로그램이나 텔넷 전용 프로그램이 필요하다.



'서버 > 기술' 카테고리의 다른 글

Http 통신 vs Socket 통신  (0) 2019.01.06
restful api  (0) 2018.12.03

 REST의 정의

UTTP URI로 잘 표현된 리소스에 대한 행위를 HTTP Method로 정의한다. 리소스의 내용은 json, xml, yaml

등의 다양한 표현 언어로 정의된다.


REST의 특징

 1)Uniform (유니폼 인터페이스)

Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처

스타이를 말한다.


 2)Stateless (무상태성)

REST는 무상태성 성격을 갖는다. 다시 말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다. 세션

정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단수히 처리하면

된다. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.


 3)Cacheable (캐시 가능)

REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그래도 사용하기 때문에, 웹에서 사용하는 기존 인프라

를 그대로 활용이 가능하다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능하다. HTTP 프로토콜 표준에서

사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.


 4) Self-descriptiveness(자체 표현 구조)

REST의 또 다른 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해 할 수있는 자체 표현 구조로 되어

있다는 것이다.


 5)Client - Server 구조

REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각

각의 역할이 확실히 구분되기 떄문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이

줄어들게 된다.


 6)계층형 구조

REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘

수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 한다.




 RESTFUL API의 장점

 1) rest api 메시지 자체를 읽기만 하는 것으로도 메시지의 본래 의도를 파악할 수 있을 정도로 쉽게 이해가 된다. HTTP 인프라를 그대로

이용하기 때문에 REST를 사용하기 위해 별도의 인프라를 요구할 필요가 없다.

 2)리눅스 서버에 있는 웹서버에 윈도우에서 동작하는 웹 브라우저가 붙어서 동작할 수 있다.


RESTFUL API의 단점

 1)HTTP 메소드의 한계에 묶인다.

간단한 수준의 메소드만 지원할 수 있다.

 2)표준이 없어서 관리하기 어렵다.

어떤 가이드는 특정한 REST API에는 맞지만 또 다른 곳에는 맞지 않을 수 있다.

 3)RDBMS와 어색한 관계

REST API를 RDBMS에 적극적으로 사용하기 위해서는 RESTful한 테이블 구조가 필요하게 되는데, 이것보

다는 NoSQL쪽이 더 잘맞는 추세다.


참고 : https://meetup.toast.com/posts/92

'서버 > 기술' 카테고리의 다른 글

Http 통신 vs Socket 통신  (0) 2019.01.06
CURL 이란?  (0) 2018.12.22

public static void main(String[] args)에서 각각의 의미


main 함수는 프로그램의 시작부터 끝까지 있는 함수이다.


1. public을 사용하는 이유?

다른 클래스들의 메소드들을 호출해서 사용하는데, main 자체가 다른곳에서 접근을 허용하지 않으면 문제가 발생하기

때문에 public 사용


2. static을 사용하는 이유?

static의 특징으로는 따로 인스턴스화 하지 않아도 되고, 시작과 동시에 메모리에 호출되어진다는 점이다.

즉, 프로그램이 종료될 때까지 계속 유지가 되는데, static이 있기 때문에 계속 참조할 수 있고, GC(garbage collector)에

의해서 사라질 염려가 없기에, static을 사용해야한다.


3. void를 사용하는 이유?

main 함수 자체가 시작과 끝을 의미하는 것인데, 종료되는 시점에서 무슨 값을 반환한다 해서 의미가 있다고 생각하지

않는다. 그렇기 때문에 void로 설정해야한다.


4. args[]를 사용하는 이유?

처음 프로그램을 실행하는 순간 외부 값을 가져와서 프로그램 안에 사용하고자 할 때, 메모리에 저장할 공간을 미리 선언

해 두기 위해서 사용

'프로그래밍 > JAVA' 카테고리의 다른 글

싱글턴 패턴 사용하는 이유  (0) 2019.01.06
abstract와 Interface  (0) 2019.01.04
java exe 파일 만들기  (0) 2018.09.01
자바 OutputStream 줄바꿈  (0) 2018.08.31
JAVA 파일입출력  (0) 2018.08.30

+ Recent posts