- 하나의 컴퓨터에는 여러개의 서버가 존재 할 수 있으며 각각의 서버는 포트라는 값으로 구분되어 동작한다.
- 인터넷은 한마디로 네트워크들의 네트워크라고 한다. TCP/IP로 연결되어 있다.
- HTTP(Hypertext Transfer Protocol)이란?
- 팀 버너스리와 그가 속한 팀에서 HTML 뿐만 아니라 웹 브라우저, 웹 브라우저 관련 기술과 HTTP를 발명했다.
- HTTP는 서버와 클라이언트가 인터넷 상에서 데이터를 주고받기 위한 프로토콜이다.
- HTTP는 어떠한 종류의 데이터도 전송할 수 있기 때문에 인터넷으로 동영상을 보고 파일을 다운로드 할 수 있다.
- 현재 HTTP/2 버전까지 나와있는 상태이다.
- 네트워크 통신 방식에는 유상태 통신 방식과 무상태 통신 방식이 있다.
- 유상태(Statefull)은 서버와 클라이언트가 계속 연결된 형태이기 때문에 지속적으로 데이터를 넘겨받을 수 있다. (채팅, 온라인게임에 적합), 하지만 서버가 동시에 접속을 유지할 수 있는 수는 정해져 있어서 클라이언트가 많아지면 서버의 수도 많아져야한다.
- 무상태(Stateless)는 필요한 경우에만 응답을 받아 빠르게 데이터를 넘겨 받는다. 즉, 하나의 서버가 굉장히 많은 요청을 받을 수 있다.
- HTTP는 서버/클라이언트 모델을 따른다.
- 클라이언트가 요청을 서버에게 보내면, 서버는 클라이언트에게 응답을 보낸다.
- 장점 : 불특정 다수를 대상으로 하는 서비스에 적합. 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버간의 최대 연결수보다 훨씬 많은 요청과 응답을 처리할 수 있다.
- 단점 : 연결을 끊어버리기 때문에, 클라이언트의 이전상황을 알 수 없다. 이러 한 특징을 무상태라고 한다. 이러한 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하게 되었다.
- URL(Uniform Resource Locator)
- 웹 상에서 자원들의 위치를 나타내기 위해 사용
- 접근 프로토콜:// IP주소 or 도메인 이름/문서경로/문서이름 http://www.naver.com/docs/index/html
- 하나의 물리적인 컴퓨터에는 여러개의 소프트웨어 서버가 동작 할 수 있는데, 서버는 포트값(0보다 큰)이 다르게 동작해야한다.
- HTML의 기본 포트값은 80
사진 출처 : 네이버 부스트코스 강의 中
- 웹의 동작
1. 클라이언트가 원하는 서버에 접속
2. 클라이언트가 서버에 요청
3. 요청에 따른 응답결과를 다시 클라이언트에게 전달 (전달하고 나면 연결이 끊김 Stateless)
-이 요청한 데이터들은 그냥 전송되는게 아니고 요청데이터포맷이라는 형식에 맞춰 전달이 된다.
-HTTP 요청 메시지는 헤더, 빈줄, 바디 3부분으로 나뉘게 된다.
Get(요청메소드), servletjquery?a=10&b(요청 URI, 요청하는 자원의 위치를 명시), HTTP/1.1(웹 프로토콜의 버전)
- 요청메소드 : 서버에게 요청의 종류를 알려주기 위해 사용한다.
- GET : 정보를 요청하기 위해 사용(SELECT)
- POST : 정보를 밀어넣기 위해 사용(INSERT)
- PUT : 정보를 업데이트하기 위해서 사용(UPDATE)
- DELETE : 정보를 삭제하기 위해서 사용(DELETE)
- HEAD : (HTTP)헤더 정보만 요청. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해 사용.
- OPTIONS : 웹 서버가 지원하는 메서드의 종류를 요청.
- TRACE : 클라이언트의 요청을 그대로 반환. 주로 echo 서비스로 서버 상태를 확인하기 위한 목적으로 사용.
* GET 방식의 경우 요청 URI를 가져가기 때문에 요청 바디부분이 비어있음.
* POST나 PUT을 사용했을 때 요청바디 부분이 들어온다.
- 응답 데이터 포맷
요청 데이터 포맷과 마찬가지로 3부분으로 이루어져있다.
헤더부분 첫줄은 응답HTTP프로토콜 버전, 응답코드, 응답메시지로 이루어져 있다.
- 번외
HTTP와 HTTPS의 차이점은?
- HTTPS는 HTTP의 보안이 강화된 버전이고 Port번호는 443번이다.
'웹 프로그래밍' 카테고리의 다른 글
Request, Response 객체 이해하기 (0) | 2018.05.02 |
---|---|
Servlet 이란? (0) | 2018.05.02 |
웹 서버와 WAS (0) | 2018.05.01 |
browser의 동작 (2) | 2018.05.01 |
웹 Front-End 와 웹 Back-End (0) | 2018.04.30 |
댓글