밍경송의 E.B

[네트워크] HTTP, HTTP request message 본문

CSE/정보통신공학

[네트워크] HTTP, HTTP request message

m_gyxxmi 2023. 4. 20. 18:40

우왕 나 시험 내일이다.~! 큰잉났지만 괜찮아요 해부자해보자.. 파팅 

오늘은 HTTP에 대해서 알아보는 시간을.. 준비했습니다. 시간이 없으니까 빨리 하겠다

 

 

 

HTTP란?

: HyperText Transfer Protocol의 약자로, 웹 어플리케이션 아키텍처에서 Client와 Server가 이를 통해 소통합니다.

 

이전 포스팅에서도 다룬 적 있지만, HTTP을 중심으로 Client/Server 모델에 대해서 한 번 더 정리해보겠습니다.

Client/Server model- HTTP

Client: 요청을 보내고 응답을 받는 browser / displays Web object의 일도 함

*Web object에는 HTML file, JPEG images, audio file.. 등이 포함됨.

 

Server: Client의 요청에 응답하기 위해 HTTP를 이용해 object를 보내는 일을 함.

 

**HTTP uses TCP**

-> client는 server(port 80)에 TCP connection을 요청함 (소켓 생성)

-> server는 TCP connection을 수신, 수립함

-> brower(HTTP client)Web server (HTTP Server)사이에서 HTTP messages의 교환이 이루어짐.

->TCP connection close

 

**HTTP is "stateless" **

-> server maintains NO information about past client request (과거 있었던 클라이언트의 요청에 대한 정보를 저장X)

->HTTP는 통신 규약일 뿐이다!

(근데 past history들을 전부 저장해두려면 매우.. 복잡하긴 할듯)

 

**HTTP is "connectionless"**

-> HTTP는 실제로 요청을 주고 받을 때만 연결을 유지하고 응답을 주고나면 서버와의 연결을 끊는다.

 


HTTP  Message

1 request - Client가 보내는

2 response - Server가 보내는

 

 

1 Request(요청) Message

request line: 3가지 요소[HTTP method, 요청대상(URL 등)이나 도메인의 절대경로, HTTP버전] 로 구성됨

Header lines: Request headers, General headers, Entity headers

Body: 구조의 마지막의 위치, 모든 요청에 필요하진 않음(GET, HEAD, DELETE, OPTIONS 등). POST나 PUT에 사용

 

HTTP Request message의 기본 FORMAT

+Request Method 종류

1 POST method: 유저의 input을 서버에게 보낼 때.(form 형식)

2 HEAD method: header (line)에 대한 정보만 얻고 싶을 때. data 없이 보냄

3 GET method: 서버에게 데이터를 보낼 때 사용. URL field에 유저의 데이터를 포함함 ('?' 뒤에)

4 PUT method: 새로운 object를 서버에게 업로드할 때 사용.

 

2 Response(응답) Message

Status line: 1 현재 프로토콜의 버전, 2 상태 코드(요청의 결과), 3 상태 텍스트(상태 코드에 대한 설명)

Header lines: request 헤더와 동일. General header, Response headers, Entity headers

Body: 구조의 마지막의 위치, 모든 응답에 필요하진 않음(201, 204 상태 코드)

 

++Status Codes(상태 코드)

-200: OK

-301: Moved Permanently

-400: Bad Request

-404: Not Found

-505: HTTP version not supported

 


  Cookies - maintaining user/server states    

: 웹 사이트와 클라이언트 브라우저는 cookie를 이용해 사용자의 정보를 기억합니다.

 

1. cookie header line of HTTP response message 우왕 새로운 client!

2. cookie header line in next HTTP request message 엇 얘는 정보가 없어?

3. cookie file kept on user's host, managed by user's browser new id(UNIQUE) 할당해주자 

4. back-end database at Web site 다음부터 얘가 오면 그 id로 기록하도록 해

 

그림으로 이해해봅시다.

client 마다 고유한 ID를 부여해줬기 때문에, 그 client가 뭘 검색하고 무슨 일을 했는지 그 ID의 database에 기록해둘 수 있는 것이죠. 우리가 쇼핑몰 사이트에 들어가서 장바구니에 상품을 담아두는 것을 생각해보면 쉽습니다. 물론 사용자의 활동을 기록하는 것이다보니 privacy의 문제점이 발생할 수도 있습니다. ㅠ 조심


Proxy servers (WEB caches) -satisfy client request without involving origin server

: Client가 자신을 거쳐 다른 네트워크에 접속할 수 있도록 중간에서 대리해주는 서버를 말합니다. 우리가 컴퓨터구조 시간에 배우는 Cache와 동일한 역할을 해준다고 생각하면 되겠습니다.

Web cache는 client이자 server의 역할을 한다는 것을 아래 그림을 통해 확인할 수 있겠죠.

 

이러한 대리 서버는 왜 필요할까요?

- client 요청에 대한 response time을 줄이기 위해 (cache가 클라이언트에 더 가까우니까 빠르겠죠)

- traffic을 줄이기 위해

..!

 

 

 

그럼 다음 시간에는 이어서 Email에 대해서 다루겠습니다 뿅