티스토리 뷰
1. 웹 브라우저 여행은 URL 입력부터 시작한다
- URL은 http 뿐만 아니라 ftp, file, mailto로 시작하는 것 등 여러 가지가 있다.
- 웹 서버에 접근할 때는 http, FTP 서버에 접근할 때는 ftp 라는 식으로 여러 종류의 URL이 준비되어 있다.
- 모든 URL에는 공통점이 있는데, 맨 앞에 있는 문자열에서 엑세스하는 방법을 나타낸다는 것이다.
* HTTP 프로토콜로 웹 서버에 엑세스하는 경우
http://user:password@www.cyber.co.kr:80/dir/file1.htm
* FTP 프로토콜로 파일을 다운로드하거나 업로드하는 경우
ftp://user:password@ftp.cyber.co.kr:21/dir/file1.htm
* 클라이언트 PC 자체의 파일에서 데이터를 읽어오는 경우
file://localhost/c:/path/file1.zip
* 메일을 송신하는 경우
mailto:tone@cyber.co.kr
* 뉴스그룹의 기사를 읽는 경우
news:comp.protocols.tcp-ip
2. 브라우저는 먼저 URL을 해독한다
* URL의 요소
http: + // + 웹 서버명 + / 디렉토리 명 + / + .... + 파일명
* 예시
http://www.naver.com/dir1/kim0914/index.html
* 요소
프로토콜: http
//: //
웹 서버명: www.naver.com
파일 경로: /dir1/kim0914/index.html
- URL은 몇 개의 요소를 나열한 것입니다. 그래서 URL을 해독할 때는 요소를 따로따로 분해한다.
3. 파일명을 생략한 경우
/
로 끝나는 URL을 볼 수 있다. 예를 들면http://www.lab.cyber.co.kr/dir/
- URL의 규칙에는 이와 같이 파일명을 생략해도 좋다.
- 파일명을 생략한 경우 어느 파일에 접근해야할지 모르기 때문에 서버에서는 미리 설정해둔다.
- 이때 주로 설정해두는 값은
index.html
,default.htm
이다. - 따라서
www.lab.cyber.co.kr
은www.lab.cyber.co.kr/index.html
처럼 읽혀진다.
4. HTTP의 기본 개념
- URL을 해독하면 어디에 접근해야 하는지 판명된다.
- HTTP 프로토콜은 먼저 클라이언트에서 서버를 향해 요청(리퀘스트) 메세지를 보낸다.
- 요청 메세지안에는
무엇을
,어떻게
에 대한 내용이 담겨있다.무엇을
을 URI라고 하는데, 보통 페이지 데이터를 저장한 파일의 이름이나 CGI 프로그램의 파일명을 URI로 슨다. 예를 들어/dir1/file1.html
이나/dir/program1.cgi
- 뿐만 아니라 http:로 시작하는 URL을 그대로 쓸 수도 있다.
- 즉, 다양한 엑세스 대상을 쓸 수 있으며, 이러한 액세스 대상을 통칭하는 말이 URI이다.
어떻게
에 해당하는 것이 메소드로, 이 메소드에 의해 웹 서비스에 어떤 동작을 하고 싶은지 전달한다.- HTTP 메서드
5. HTTP 요청(리퀘스트) 메시지를 만든다
- 리퀘스트 메시지의
첫 번째 행에 요청(리퀘스트)라인
을 작성한다. 여기서 중요한 것은 맨 앞에 있는 메소드다. - 이것을 통해 웹 브라우저는 웹 서버에 어떻게 할 것인가를 전달한다.
* **요청 메세지**
<메소드><공백><URI><공백><HTTP 버전> -> 요청 라인
<필드명>:<필드값>
.
.
.
<공백 행>
<메시지 본문> -> 메시지 본문의 내용은 POST, PUT
* **응답 메세지**
<HTTP 버전><공백><상태 코드><공백><응답 문구>
<필드명>:<필드값>
.
.
.
<공백 행>
<메시지 본문>
- 브라우저 윗부분에 있는 URL 입력 상자에 URL을 입력하고, 해당 페이지를 표시한다.
- 또한 웹 페이지 안에 포함된 하이퍼링크를 클릭하거나, 폼에 데이터를 기입해 ‘송신’ 버튼을 누를 때와 같은 몇 가지 경우가 있다. 메소드의 종류는 이런 경우에 따라 달라진다.
* method='GET'
GET /cgi/sample.cgi?Field1=ABCDEFG&SendButton=SEND HTTP/1.1
* method='POST'
POST /cgi/sample.cgi HTTP/1.1
Field1=ABCDEFG&SendButton=SEND
두 번째 행부터는 메시지 헤더
라는 행이 이어진다.- 요청에 대한 자세한 정보가 필요한 경우에 메시지 헤더에 담을 수 있다. 날짜, 클라이언트가 취급하는 데이터 종류, 언어, 압축 형식, 클라이언트나 서버의 소프트웨어 명칭과 버전, 데이터의 유효기간, 최종 변경 일시 등 다수의 항목이 사양으로 정해져있다.
- 메시지 헤더 종류
- 1. 제너럴 헤더
- 2. 리퀘스트 헤더
- 3. 응답 헤더
- 4. 엔티티 헤더
6. 요청 메시지를 보내면 응답이 돌아온다
- 응답 메시지의 포맷도 기본적인 개념은 요청 메시지와 같다.
- 다른 점은 첫 번째 행이 다르다.
- 응답의 경우 정상 종료됐는지, 오류가 발생했는지, 즉 요청의 실행 결과를 나타내는 상태 코드와 응답 문구를 첫 번째 행에 작성해야한다.
- 상태코드는 200, 400, 500등 숫자로 나타낸 값이며 실행 결과를 알려주는 것이 목적이다.
- 응답문구는 문장으로 작성되어 있으며 사람에게 실행결과를 알리는 것이 목적이다.
- 상태코드
- 1xx: 처리의 경과 상황을 통지
- 2xx: 정상 종료
- 3xx: 무언가 다른 조치가 필요함을 나타냄
- 4xx: 클라이언트 오류
- 5xx: 서버 오류
'Network' 카테고리의 다른 글
[Network] DNS 서버 동작 방법 (0) | 2023.04.21 |
---|---|
[Network] DNS 서버에 IP 주소 조회 (0) | 2023.04.20 |
[HTTP] Request 요청 데이터를 전달하는 방법 (0) | 2022.01.29 |
[HTTP] 헤더 - 캐시, 조건부 요청 (0) | 2022.01.10 |
[HTTP] HTTP BODY (0) | 2022.01.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 우테코
- 런칭 페스티벌
- 우테코 회고
- 백준
- 회고
- ZNS
- 알림개선기
- 파이썬
- 피움
- 8주차 회고
- CI/CD
- 네트워크
- 프로젝트
- ZNS SSD
- 3차 데모데이
- 스프링 프레임워크
- 5주차 회고
- 알림기능개선기
- 2차 데모데이
- 스프링 부트
- 환경 별 로깅 전략 분리
- 스프링MVC
- 팀프로젝트
- jpa
- dm-zoned
- dm-zoned 코드분석
- 스프링 Logback
- Spring
- 피움 6주차 회고
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함