티스토리 뷰

네트워크

HTTP 프로토콜

tioon 2023. 5. 13. 01:31
HTTP 프로토콜이란?

-HTTP는 인터넷에서 데이터를 주고받기 위해 사용되는 프로토콜입니다. HTTP는 클라이언트-서버 모델을 따르며, 통신에 사용됩니다. TCP기반의 프로토콜 스택을 사용하여 데이터를 전송하지만 Stateless한 프로토콜이라 쿠키, 세션과 같은 기술을 사용해야합니다.

 

Stateless란?

-상태를 유지하지 않는다 라는 의미로,  클라이언트와 서버간의 통신에서 이전 요청에 대한 정보를 유지하지 않습니다.
따라서 각각의 요청이 독립적으로 처리되며, 그전의 정보는 유지하지않아 서버에 대한 부하를 줄일 수 있습니다.
하지만,서버가 이전 요청과 현재 요청이 같은 클라이언트의것임을 알 수 없기 때문에 세션,쿠키와 같은 방식으로 클라이언트의  정보를 구별할 수 있습니다.

 

 

HTTP request types
  • GET
    - 서버로부터 정보를 요청하기 위한 메서드이며,  URL뒤 (요청매개변수)에 데이터를 포함시켜 전송합니다. 보낼 데이터가 없기에 HTTP BODY가없습니다.

  • POST
    - 서버에 데이터를 전송하기 위한 메서드이며, 요청한 리소스를 변경하거나, 서버의 DB에 데이터를 추가할때 사용합니다. POST요청은 BODY에 전송할 데이터를 포함시켜 전송합니다.

  • PUT
    - 서버에 데이터를 업데이트하기 위한 메서드이며, BODY에 업데이트할 데이터를 포함시켜 전송합니다.
    (해당 데이터가 없으면 생성)

  • DELETE
    - 서버로부터 데이터를 삭제하기위한 메서드입니다.

  • PATCH
    - 리소스의 부분적인 수정을 요청하는 메서드입니다. 리소스의 일부분을 수정하거나 업데이트할 수 있습니다.
    PUT과 유사하지만 PATCH는 데이터의 전체가 아닌 일부분만 수정하는 것도 가능합니다.

 

 

 

HTTP 구조

- 클라이언트와 서버가 HTTP로 서로 통신을 할때 HTTP의 구조가 있습니다.

 

  • Start Line
    요청인 경우 Request Message, 응답인 경우 Response Message가 들어가며 HTTP 정보를 가지고 있음.
    클라이언트가 요청할때는 요청라인(Request Line)이고, 서버가 응답 할때는 상태라인(Status Line)입니다.

  • Header
    HTTP헤더는 요청이나 응답에 대한 부가적인 정보를 가지고 있으며, 전송에 필요한 부가정보를 담고 있음.
    Content-Type -> http body의 타입을 지정합니다. 주로 HTML, JSON, Form-data 타입을 나타냅니다.
    Content-Length -> http body의 길이를 나타냅니다.
    User-Agent -> 사용자 에이전트 식별자를 제공합니다.
    Host -> 요청한 URL의 호스트 주소를 나타냅니다.
    Cookie -> 클라이언트가 서버로 보낸 쿠키 정보를 담고 있습니다.

  • Body
    HTTP BODY는 요청과 응답에 대한 실제 전송할 데이터를 담고 있음. (HTML 문서, 이미지, 영상, JSON)등....

 

 

 

HTTP 예시

 

클라이언트 POST방식 전송

POST /submit-form(쿼리파라미터 추가가능) HTTP/1.1  //Start Line
Host: example.com  //HTTP HEADER
Content-Type: application/x-www-form-urlencoded
Content-Length: 25   

name=John&age=30&email=john@example.com   //HTTP BODY

 

서버 응답

HTTP/1.1 200 OK   //Start Line
Content-Type: text/html  //HTTP HEADER
Content-Length: 1274   

<!DOCTYPE html>   //HTTP BODY
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
   <h1>Hello, world!</h1>
   <p>This is a sample web page.</p>
</body>
</html>

 

 

HTTP 응답 코드
  • 200번대 (Successful) - 요청 정상 처리
    200 - 요청이 성공적으로 처리되었음.
    201 - 요청이 성공적으로 처리되었으며, 새로운 리소스가 생성됨.
    204 - 요청은 성공했지만 응답에 리턴할 내용은없음.

  • 300번대 (Redirection) - 리다이렉션 , 요청 완료를 위해 추가 처리 필요
    301 - 요청한 리소스가 새로운 URL로 영구적 이동됨.
    302 - 요청한 리소스가 일시적으로 다른 URL로 이동됨.

  • 400번대 (Client Error) - 클라이언트 오류
    400 - 클라이언트의 잘못된 요청으로 인해 서버가 요청을 받지못함.
    403 - 요청이 서버에 의해 거부되었음을 나타냄.
    404 - 요청한 리소스를 서버에서 찾을 수 없음.

  • 500번대 (Server Error) - 서버 오류
    500 - 서버가 요청을 처리하는 동안 내부 오류가 발생함.
    503 - 서버가 일시적으로 요청을 처리할 수 없음.

 

 

 

리다이렉션이란?

-클라이언트가 요청한 URL이 다른 URL로 변경되었음을 나타내는 것을 말합니다. 즉, 웹페이지나 다른 리소스의 위치가 영구적 또는 임시적으로 변경되었을 때, 클라이언트가 새로운 위치로 요청을 다시 보내도록 유도하는 과정을 말합니다.

'네트워크' 카테고리의 다른 글

네트워크 보안 (공개키, 대칭키)  (0) 2023.05.13
HTTPS프로토콜이란? (SSL,TLS)  (0) 2023.05.13
DHCP란?  (0) 2023.05.12
버추얼 박스 네트워크 설정(NAT,Bridged.....)  (0) 2023.05.12
DNS서버란?  (0) 2023.05.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함