본문 바로가기

카테고리 없음

HTTP

HTTP (Hypertext Protocol)

서버와 클라이언트 간의 TCP/IP 통신 위에서 메시지를 교환하기 위해 사용되는 프로토콜이다.

 

잠깐! 프로토콜 이란?

네트워크를 통해 통신 가능한 기기 간 데이터 통신을 원할하게 하기 위한  일종의 규칙이다. 

이러한 프로토콜을 통해 각 규칙들은 규칙의 역할에따라 TCP/IP 4계층으로 나눠 분류한다. 

 

TCP/IP 란?

인터넷 통신의 대부분은 패킷통신으로 이루어져 있는데 패킷 통신 규약중 하나이다.

TCP(전송제어프로토콜) 과 IP 를 아울러 지칭하는 용어.

 

*패킷: 네트워크에서 사용하는 작게 분할된 데이터 조각으로 네트워크에서 전송되는 데이터의 기본단위 

 

 

IP 는 컴퓨터의 주소 라고 생각하면된다. 

메시지가 목표로 하는 컴퓨터에 잘 도착할 수 있는 역할을 한다. 

 

컴퓨터의 위치를 찾아서 잘 전송을 했다면 TCP 는 메시지를 확인 할수 있게 만들어주는 역할을 한다. 

TCP 는 서버와 클라이언트 사이의 통신 연결을 제어 한다. 

 

 

네트워크 통신을 할때 메시지를 통째로 보내는게 아니라 패킷단위로 작게 나누어서 보낸다. (바이트 스트림 서비스 라고 함)

이 작게 나누어진걸 TCP가 재조립해서 손상되거나 손실된 패킷이 있다면 재요청을 한다.  

 

이때 정확하게 전송되었는지 확인하는 기술이 있는데 이걸 쓰리웨이 핸드 셰이킹 이라고 한다. 

 

1.  클라TCP   -->  SYN(요청: 여보세요~ 저는 ~~입니다 잘 들리세요??)      -->  서버 TCP 

2.  클라 TCP. <-- SYN+ACK (응답+ 요청:  네 잘들립니다~  말씀하세요 ~)  <--    서버 TCP 

3. 클라 TCP -->  ACK (응답:  네 ~ 지금부터 말할게요 ~ )  --> 서버 TCP 

 

 

이러한 TCP의 특징으로 신뢰성있고 무결성을 보장하는 연결을 통해 데이터를 안전하게 전송한다. 

 

이런걸 연결지향형 이라고 표현 할수 있음

 

반대로 UDP는 비연결지향형 인데 유튜브에서 동영상 재생을 예로 들수 있음 

데이터가 완벽하지 않아도 일단 수신받음 

 

다시 돌아가서 

 

클라이언트가 리소스를 HTTP를 통해 요청하면  TCP, IP 프로토콜을 걸쳐 서버쪽의 HTTP까지 요청이 도달합니다. 

이에 대한 응답을 다시 서버에서 HTTP로 보내면 TCP,IP 프로토콜을 통과해 반대편의 클라이언트 까지 응답이 도달한다. 

 

클라이언트 요청 

HTTP -> TCP -> IP -> 네트워크 ->   [리소스 이동]  -> 네트워크 -> IP -> TCP -> HTTP 

서버에 요청이 도달 

 

 

요청(Request)

리소스를 요청할떄는  프로토콜에 따라 구성된다. 

메서드,URI, 프로토콜 버전, 헤더 바디로 구성되어있음 

 

응답(Response)

응답은 프로토콜 버전, 상태코드, 상태 코드에 대한 설명, 헤더 , 바디로 구성되어있다. 

 

 

HTTP 의 특징

1. HTTP는 stateless 특징을 가진다. 

상태가 없어 과거정보를 남기지않고 새로운 리퀘스트를 보낼 때 마다 새로운 리스폰스를 보낸다. 

그래서 상태를 보관하고 싶을때는 세션과 쿠키 같은 기술이 함께 쓰이고 있다. 

 

2. 리퀘스트에서 URI 로 리소스를 식별한다. 

(1) 리퀘스트에 URI 포함

(2) 호스트 헤더 필드에 네트워크 로케이션 포함하기 

(3) 자신에게 송신하는 경우에는 와일드 카드 지정 

HTTP 메서드 

-GET: 특정한 리소스를 가져오도록 요청,  데이터를 가져올때 사용 

-POST: 대상 리소스에게 리퀘스트의 본문을 해당 리소스의 시맨틱에 따라 처리하도록 요청하는 메서드 

-PUT: 리소스 수정 시 사용, 대상 리소스가 없다면 생성하고 있으면 본문대로 교체하는데 사용됨 

-PATCH: 리소스 수정시 사용, 리소스으 일부를 수정하는데 사용된다. 

-DELETE: 지정한 리소스를 삭제

-HEAD: get으로 요청했을때 응답 헤더만 가져옴 

-OPTIONS: 해당 리소스의  통신 옵션을 알려줌 

 

HTTP 상태코드 

- 1xx : 처리중

- 2xx: 처리성공

- 3xx: 딴데 물어봐 

- 4xx: 잘못된 요청

- 5xx: 서버 이상함