사람과 사람이 대화를 하기 위해서도 몇 가지 규약이 필요합니다.
이와 마찬가지로 웹브라우저와 웹 서버 간에도 서로 통신하기 위해서는 규약이 필요합니다.
이때 사용되는 규약이 HTTP입니다.
인터넷의 이해
인터넷 기반의 대표 서비스 중 하나입니다.
물리적인 하나의 컴퓨터에는 여러 개의 서버가 동작할 수 있습니다.
각각의 서버들은 포트라는 값으로 구분되어 동작됩니다.
이름 |
프로토콜 |
포트 |
기능 |
WWW |
HTTP |
80 |
웹서비스 |
|
SMTP/POP3/MAP |
25/110/114 |
이메일 서비스 |
FTP |
FRP |
21 |
파일 전송 서비스 |
DNS |
TCP/UDP |
53 |
네임 서비스 |
NEWS |
NNTP |
119 |
인터넷 뉴스 서비스 |
인터넷은 수많은 네트워크의 결합체입니다.
이러한 인터넷은 보통 TCP/IP라는 약속으로 연결되어있습니다.
HTTP(Hypertext Transfer Protocol)란?
HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜입니다.
HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계가 되어있습니다.
예를 들어 이미지, 동영상, 오디오, 텍스트 문서 등 종류를 가리지 않고 전송할 수 있습니다.
우리가 브라우저로 이미지와, 동영상을 볼 수 있는 것은 http라는 프로콜이 어떤 종류의 데이터도 전송할 수 있기 때문입니다.
HTTP 작동방식
HTTP는 서버/클라이언트 모델을 따릅니다.
클라이언트가 요청을 서버에게 보내면 서버는 클라이언트에게 응답을 보내게 됩니다.
http는 무상태 프로토콜이라고 하는 데 클라이언트가 서버에게 요청하면 서버는 클라이언트에게 응답을 하는데
그전의 과정은 먼저 서버와 클라이언트를 연결을 하며 서버는 요청에 대한 응답을 하고 바로 클라이언트와 연결을 끊습니다.
이러한 방식은 장단점을 가지고 있습니다.
장점
불특정 다수를 대상으로 하는 서비스에는 적합합니다. 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버 간의 최대 연결수보다 훨씬 많은 요청과 응답을 처리할 수 있습니다.
단점
연결을 끊어버리기 때문에, 클라리언트의 이전 상황을 알 수가 없습니다. 이러한 특징을 무상태(Stateless)라고 말합니다.
이러한 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하게 되었습니다.
URL( Unoform Resource Locator)
인터넷 상의 자원의 위치
특정 웹 서버의 특정 파일에 접근하기 위한 경로 혹은 주소
http:// 접근 프로토콜
www.naver.com IP 주소 또는 도메인 이름
/docs 문서의 경로
/index 문서의 이름
하나의 물리적 컴퓨터에는 여러 개의 소프트웨어 서버가 동작할 수 있는데 이서 버는 포트 값이 다르게 동작해야 합니다.
이러한 포트 값은 0보다 큰 숫자 값입니다.
작동구조
1. 클라이언트와 서버가 연결을 합니다.
2. HTTP 요청 메시지를 서버에게 클라이언트가 보냅니다.
3. 서버는 요청에 대한 응답을 클라리언트에게 전송해주고 연결을 끊습니다.
보낼 때의 형식은 다음과 같습니다.
요청 헤더
요청 바디
응답 헤더
응답 바디
첫 번째 줄의 요청 메서드는 서버에게 요청의 종류를 알려줍니다.
각각의 메서드 이름은 다음과 같은 의미를 가집니다.
- GET : 정보를 요청하기 위해 사용됩니다. (SELECT)
- POST : 정보를 서버에 넣기 위해 사용합니다. (INSERT)
- PUT : 정보를 업데이트하기 위해서 사용합니다. (UPDATE)
- DELETE : 정보를 삭제하기 위해서 사용합니다. (DELETE)
- HEAD : HTTP 헤더 정보만 요청합니다. 해당 자원이 존재하는 혹은 서버에 문제가 없는지 확인하기 위해 사용합니다.
- OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청합니다.
-
TRACE : 클라이언트의 요청을 그대로 반환합니다.
'웹 프로그래밍 기초' 카테고리의 다른 글
HTML Layout 태그 와 구조설계 (0) | 2020.05.05 |
---|---|
웹 서버 와 WAS (0) | 2020.05.05 |
Browser의 동작 (0) | 2020.05.05 |
웹 FE 웹 BE (0) | 2020.05.05 |
웹 프로그래밍을 위한 프로그램 언어 (0) | 2020.05.05 |
댓글