Home 웹 프로그래밍 기초 다지기
Post
Cancel

웹 프로그래밍 기초 다지기

HTTP


  • 웹 브라우저와 웹 서버 사이의 데이터 통신 규칙

HTTP 모니터링


  • 웹 브라우저와 웹 서버 사이에 주고받는 데이터를 들여다보려면 HTTP 프록시 프로그램이 필요함.

  • 웹 브라우저 <-> HTTP 프록시 <-> 웹서버

프록시 서버는 클라이언트와 서버 사이에서 통신을 중계해 주는 컴퓨터나 프로그램.


  • 빠른 전송을 위하여 서버의 응답 결과를 캐시에 저장
  • 데이터를 검사하여 특정 단어 포함된 자료 송,수신 차단 (보안)

HTTP Request-Line [메서드, 요청 URI, HTTP 버전]


  • 메서드 : GET POST HEAD PUT DELETE …
  • 요청 URI : 요청하는 자원의 식별자. 즉 HTML이 있는 가상의 경로
  • HTTP 버전 : 1.0, 1,1, 2.0 ..

HTTP Request-Header [헤더이름/헤더 값]


  • 헤더 일반헤더 요청헤더 또는 응답헤더 엔티티 헤더

  • 요청헤더 중 User-Agent는 클라이언트의 정보를 서버에게 알려주어 요청자의 OS와 브라우저를 구분할 수 있음.

공백 라인과 요청 데이터(message-body)


  • GET 요청은 공백라인으로 끝나고, POST 요청은 공백 라인 다음에 서버에 보낼 데이터(message-body)가 옴.

상태 라인(Status-Line)


[HTTP버 전/상태코드/상태설명] ex) HTTP1/1200_OK

상태코드


  • 200 : 요청이 성공적으로 처리되었다.
  • 301 요청한 자원이 이동되었다. 헤더 정보에 이동 위치를 알려줄테니 다시 요청하라.
  • 304 : 클라이언트가 임시 보관한 응답결과와 다르지 않다.
  • 400 : 잘못된 요청이다.
  • 404 : 요청한 자원을 못 찾았다.
  • 500 서버 내부에서 오류가 발생하였다.

응답 헤더


  • Content-Type 헤더는 서버가 웹브라우저에게 보내는 데이터의 형식
  • Content-Length는 웹 브라우저에게 보내는 데이터(message-body)의 크기(Byte)이다.

공백라인과 응답 데이터(message-body)


  • 15번 라인은 메시지 헤더와 응답 데이터를 구부하기 위한 공백 라인.
  • 16번 라인부터 응답데이터.

주요 프로토콜


  • FTP : 클라이언트와 서버 간에 파일을 주고받기 위해 만든 통신 규약.
  • Telnet 프로토콜 : 인터넷이나 LAN 상에서 문자 기반으로 원격의 컴퓨터를 제어하기 위해 만든 통신 규약. 요즘은 보안때문에 SSH 많이 사용.
  • XMPP: 인스턴트 메시지 및 접속 상태정보를 교환할 목적으로 만든 규약. ex) Google Talk
  • SMTP : 인터넷 상에서 메일을 보내기 위한 통신 규약. POP3는 이메일을 가져오는데 사용. 이메일을 가져온 후 서버의 메일 삭제.
  • IMAP : POP3와 달리 이메일을 가져온 뒤에 서버의 메일을 지우지 않으며, 여러 대의 장비에서 이메일을 조회하는데 적합.
  • LDAP : 디렉터리 서비스에 등록된 자원들을 찾는 통신 규약
  • IRC : 실시간 채팅을 위해 만든 통신 규약.

GET 특징


  • URL에 데이터를 포함 (데이터 조회에 적합)
  • 바이너리 및 대용량 데이터 전송 불가
  • 요청라인과 헤드 필드의 최대크기

GET 요청 방법


  • 웹브라우저 주소창에 URL을 입력하는 경우
  • 링크를 클릭하는 경우
  • 입력 폼의 method 속성값이 get인 경우

GET 요청 데이터 전달 형식


  • 서버에 보낼 데이터를 URI에 붙임.
  • “?” 문자는 서비스 주소와 데이터를 구별하는 구분자,
  • “&” 문자는 데이터들을 구별하는 구분자.
  • “=“ 문자는 매개변수 이름과 값을 구별하는 구분자.

GET 요청의 쓰임새


  • 자료를 검색한다거나, 게시글의 상세 정보를 본다거나, 특정 상품의 정보를 조회하는 것과 같이 데이터를 조회하는 경우에 적합.

GET 문제점과 개선방안


  • 보안에 좋지 않다.
  • 바이너리 데이터를 전송할 수 없다. (URI나 헤더 정보가 너무 크면 웹 서버에서 처리 불가)

POST 특징


  • URL에 데이터가 포함되지 않음 –> 외부 노출 방지
  • 메시지 본문에 데이터 포함 –> 실행 결과 공유 불가
  • 바이너리 및 대용량 데이터 전송 가능

문제점과 개선 방안


  • GET과 마찬가지로 데이터를 전달할 때 ‘이름=값&이름=값’ 형태로 전송.
  • 이미지나 동영상과 같은 바이너리 데이터를 보낼 때 문제가 발생할 수 있음.
  • 멀티파트 전송방식의 Content-Type 헤더를 사용하면 됨. (Content-Type : multipart/form-data; boundary=—Web … Pyz)
This post is licensed under CC BY 4.0 by the author.