출처 : http://cafe.naver.com/sky82e.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1559

 

웹 서버는 클라이언트로부터 요청을 받아, 요청한 것을 넘겨주는 일을 한다.

 

웹 클라이언트는 사용자가 서버에 요청을 보낼 수 있는 기능을 제공한다. 요청을 보내고 난 다음, 서버가 요청의 결과를 화면에 출력하는 일도 클라이언트의 역할이다.

 

HTTP 프로토콜 : TCP / IP를 기반으로 하여, TCP/IP를 이용해서 한 지점에서 다른 지점으로 요청과 응답을 전송한다.

 

                          요청의 주요 구성 요소

                          HTTP 메서드 (실행할 액션을 말한다.),  접근하고자하는 페이지(URL),  폼 파라미터

 

TCP : 한쪽 노드에서 다른 쪽 노드로 파일을 보내는 놈.

 

IP :  한 호스트에서 목적지 호스트까지 패킷을 옮기고 이동하기 위한 기반(베이스) 프로토콜이다.

 

 

http://www.cafe.naver.com:80/yang/sky82e.html

  1                         2          3      4          5

 

1 : 프로토콜 ( 서버와 대화하기 위하여 사용하는커뮤니케이션 프로토콜)

2 : 서버 ( 이 이름은 IP주소와 매핑됨)

3 : 포트 : URL의 옵션

4 : 서비스 자원의 위치

5 : 자원 : 요청한 컨텐츠의 이름

 

 

TCP 포트

FTP : 21  /   TELNET : 23     /   SMTP : 25     /   Time : 37

HTTP : 80     /    POP3 : 110     /   HTTS : 443

 

GET 방식과 POST 방식의 차이점은 전송 방식에 있다.

 

폼 테스트의 예제의 경우

 

GET 방식은 요청 URL에 파라미터를 붙여서 전송한다.

 

<form action="Parameter.jsp" method="get"> 로 전송했을 경우 아래와 같이 주소가 나온다.

"http://localhost:8080/aa/index_sub.jsp?a_id=aa&b_id=003"

위와 같이 URL의 뒤 부분에 물음표(?)와 함께 파라미터를 붙여서 전송하는데, 파라미터를 전송하는 형식은 아래와 같다.

 ?이름1=값&이름2=값&....%이름N=값N

 웹 브라우저, 웹 서버 또는 웹 컨테이너에 따라 전송할 수 있는 파라미터 값의 길이에 제한이 있다.

 

 

POST 방식의 경우

 

<form action="Parameter.jsp" method="post"> 로 전송했을 경우 아래와 같이 주소가 나온다.

 

데이터 영역을 이용해서 데이터를 전송하기 때문에 웹 브라우저나 웹 서버 등에 상관없이 전송할 수 있는 파라미터의 길이에 제한이 없다.

 
"http://localhost:8080/aa/index_sub.jsp"

 

보충 : http://underclub.tistory.com/200 및 지식인

GET 방식


GET 방식은 서버에게 HTTP GET 요청을 보냅니다.
가장 단순한 메소드이지요.
단순히 서버에게 자원을 요청하는 일을 할 뿐입니다.
GET
방식도 서버에게 데이터를 보낼 수는 있지만,
데이터 전송시엔 POST 방식을 권해드립니다.

1. GET 방식으로 보낼 수 있는 글자수(데이터의 양)는 제한되어 있습니다.
2. GET
의 전송방식은 URL 주소 뒤에 데이터를 붙이는데, 이 데이터가 URL 주소창에
  
표시되기 때문에 주요 Data GET으로 보내면 안됩니다. ( : 암호 등 )
3.
하지만 GET URL 자체가 Data 가 되기 때문에 해당 페이지를 북마크 가능합니다.

 

GET 방식은 URL 주소뒤에 파라미터()을 붙이기 때문에
어디까지가 URL 주소이고 어디까지가 값인지 판단해야 겠지요?
구분자가 바로 저기에 보이는 "?" 표시 입니다.

구분자 뒤에 오는 것이 파라미터()이 됩니다.

파라미터 값이 여러개있다면 그 파라미터 개별적으로도 구분을 해야됩니다.
따라서 GET 방식에선 개별값의 구분자 "&" 를 사용합니다.

이처럼 GET 방식은 URL 자체에 데이터를 포함시키기 때문에,
URL
자체가 하나의 긴 문자열이 됩니다.


그럼 이제 HTTP GET 메소드가 HTTP 헤더에서 어떻게 표시되는지 볼까요?

참고글 : 2010/06/24 - [Programing/JSP & Servlet] - 브라우저에서 HTTP 헤더(Header) 정보 보기.




HTTP 헤더에도 GET 방식이라고 HTTP 메소드 부분에 표시되고 있습니다.

요청하는 프로토콜 버전이 표시됩니다. 여기에선 HTTP 프로토콜 1.1 버전이네요.


그 아래에 요청 헤더가 포함되어 있습니다.

POST 방식

POST 방식은 서버에게 요청시 필요한 정보를 URL 주소가 아닌,
요청헤더에 포함시켜 전송하는 방법 입니다.
따라서 GET 방식과는 다르게 길이에 제한이 없으며,
보안을 지킬 수 있다는 이점이 있습니다.


POST 방식의 HTTP 메소드 표시와, 요청 프로토콜버전, 그리고 요청헤더 부분입니다.
POST 전송방식에서 데이터(파라미터)값이 포함될 경우 이 요청헤더 부분 밑에
메시지 몸체에 포함되어 집니다.
POST 방식을 사용 하는 이유는 크게 3가지 입니다.

첫째 용량때문에...

많은 데이타는 get방식으로는 한계가 있습니다..

게시판에 글을 넘길때 get방식으로 넘길수는 없죠..

 

둘째 인코딩때문에...

get 방식으로 뛰어 쓰기포함된 문자열이나 특수 문자을 넘길때는 인코딩을 해줘야 합니다.

그러나 post는 그럴 필요가 없죠.

 

셋째 보안때문에..

로그인 부분에서 id password을 넘길때 get방식으로 넘기면 url에 보이기

때문에 보안상 문제가 됩니다..

그래서 로그인 부분은 모두 post 방식으로 넘깁니다.

 

-------------------------------------------------------------------------------------

GET  :

 

먼저 양식을 갖추고 있는 <form> 태그 안에 input을 통해서 value 라는 값을 가지게 됩니다

그리고 이 value는 위에주소에서 보면 ? 뒤에 dir_id(이것이 name)=10102(이것이 value)

바로 name=value라는 쌍을 이루어서 전달 됩니다.

value는 입력 양식에 넣은 값이고 name은 그 value CGI프로그램으로 전달하여 사용 되는 일종의

변수 역할, 그리고 & 는 여러개의 값을 전달할때 구분 짓는 구분자 입니다.

 

POST  :

 

양식을 갖춘 <form> 태그의 속성중 action을 통해 CGI프로그램 파일로 데이터를 전송 합니다.

이때 method=POST로 하고 데이터를 서브밋 하여 전송합니다.

 

** 두 방식의 차이점이라면

 

POST 방식은 폼태그에서 action을 통해 데이터를 서브밋 해야 하지만

 

GET 방식은 POST 와 같이 폼 태그를 사용 해서 전송도 하지만 링크에 직접 사용 해도 되고 주소창에 직접 입력 해도 전송 됩니다.

 

또다른 차이점은 GET 방식은 위에 주소와 같이 정보가 다 보이잖아요.

 

그러나 POST 방식은 정보가 숨겨저서 데이터를 전송 하기 때문에 눈으로 볼수는 없습니다.

 

그래서 중요한 것들 예를 들어 id나 패스워드는 POST 방식으로 사용 하는게 좋겠죠

 

그리고 GET 방식은 url 뒤에 데이터가 쿼리스트링으로 첨부 되기 때문에 길이도 제한 됩니다.

그렇기 때문에 예를들어 게시판 같은 곳은 내용 부분에 글을 많이 쓰잖아요 그런것도 GET 방식에서는

길이의 제한 때문에 사용 할수 없고 POST 방식을 사용 해야 합니다.

두 방식의 차이점이라면

POST 방식은 폼태그에서 action을 통해 데이터를 서브밋 해야 하지만

GET 방식은 POST 와 같이 폼 태그를 사용 해서 전송도 하고

링크에 직접 사용 해도 되고 주소창에 직접 입력 해도 전송 된다.

그러니깐 예를 들어 href="주소?name=value" 이런식으로....

또다른 차이점은 GET 방식은 위에 주소와 같이 정보가 다 보인다.

그러나 POST 방식은 정보가

숨겨저서 데이터를 전송 하기 때문에 눈으로 볼수는 없다.

그래서 중요한 것들 예를 들어 id나 패스워드는 POST 방식으로 사용 하는게 좋다.

그리고 GET 방식은 url 뒤에 데이터가 쿼리스트링으로 첨부 되기 때문에 길이도 제한 된다.

GET 방식은 용량이 작은 경우에 많이 쓰고 POST 방식은 용량이 큰 경우 쓴다.

 

GET : 서버에 있는 정보를 가져오기 위해 설계된 방법.

할 수 있는 데이터 크기는 최대 240바이트이다.

QUERY_STRING 환경변수를 통해 서버로 전달되며 형식은 다음과 같다.

http://www.xxx.co.kr/servlet/login?id=hj&name=hong , 보완문제 발생

POST : 서버로 정보를 올리기 위해 설계된 방법. 데이터 크기 제한 없다.

URL 파라미터 표시안됨

 

GET 전송 방식

전송할 데이터를 문자열 형태로 URL의 뒤에 인수로 붙여서

전송합니다. 따라서 보안성이 없어 누구나 전송 내용을

볼 수 있습니다.

Form 태그에서의 'GET'방식은 서버로 전송시 서버의 처리가

지연될 경우 중복해서 요청이 이루어 지는 문제가 있음으로

사용하지 않습니다.

 

POST 전송 방식

파일의 형태로 전송됨으로 URL상에 나타나지않아 보안성이 있습니다.

GET방식에 비해서 대용량의 데이터를 전송할 수 있습니다.

+ Recent posts