HTTP 요청과 응답 과정
- TCP socket 생성 (TCP를 사용하는 HTTP의 경우)
- GET 메시지 전송 (클라인언트 -> 서버)
- HTTP 응답 메시지 전송 (서버 -> 클라이언트)
- 요청 객체 전송 (서버 -> 클라이언트)
클라이언트가 요청한 객체(컨텐츠 또는 리소스)는 서버가 전송한 응답 메시지(3번 과정)의 body 부분에 포함되어 있음
HTTP 요청 메시지
서버 푸시(HTTP/2~), 웹 소켓(양방향 통신, 채팅), 푸시 알림(백그라운드 작업 또는 서비스 업데이트 알림) 등의 경우를 제외하면,
클라이언트가 서버에게 요청을 보내는 것이 일반적이다.

- 요청 내용: GET / HTTP/1.1 -> 이게 핵심!
- 나머지 부분은 헤더
- 요청 내용과 헤더 필드는 반드시 <CR><LF>로 끝나야 함 (빈 줄)
여기서 '<CR><LF>'는 '\r\n'과 같음
CR: Carriage Return, LF: Line Feed - 보통 POST, PUT, PATCH 등 리소스를 업데이트 하는 경우 요청 메시지에 body 부분이 포함됨
GET은 데이터를 서버에 전송하지 않고 리소스를 요청하므로 URL 파라미터에 요청 데이터를 담아 보냄 -> body 불필요
HTTP 응답 메세지
서버는 클라이언트로부터 요청받은 것에 대한 응답 메시지를 전송한다.

- 상태표시 행 (status line) - status code와 reason message를 포함
ex. HTTP/1.1 302 Found -> status code: '302', reason message: 'Found'
HTTP/1.1 200 OK -> status code: '200', reason message: 'OK'
* 302 -> 리소스가 일시적으로 새로운 위치로 이동되었음을 나타냄 (위의 사진에서 클라이언트가 요청한 URL은 "http://www.tistory.com"이지만 올바른 주소인 "https://www.tistory.com"으로 리다이렉션 됨), Location으로 리다이렉션 된 URL을 알려줌
* 200 -> 요청이 성공적으로 처리되었음을 나타냄 - 헤더 필드
- 요청 메시지와 마찬가지로 상태표시 행과 헤더 필드는 반드시 <CR><LF>로 끝나야 함 (빈 줄)
- body에는 실제 리소스 데이터 포함
'23-2 > 컴퓨터 네트워크' 카테고리의 다른 글
| [컴퓨터 네트워크] Internet 성능 (0) | 2023.10.22 |
|---|---|
| [컴퓨터 네트워크] IP Address (0) | 2023.10.21 |
| [컴퓨터 네트워크] Internet Protocol (0) | 2023.10.21 |
| [컴퓨터 네트워크] HTTP 데이터 관리 (0) | 2023.10.19 |
| [컴퓨터 네트워크] HTTP (1) | 2023.10.19 |
댓글