제이제이
article thumbnail

HTTP에 대한 이해

먼저 스프링부트의 동작방식에 대해서 살펴보기전 스프링부트에서의 요청과 응답은 HTTP 위에서 이루어지기에
먼저 HTTP에 대하여 살펴보고 본격적으로 이론을 살펴봅시다.

소켓


❓소켓이란?

🔥 운영체제에서 네트워크를 통해서 프로그램의 데이터를 주고 받을 수 있는 통신의 종착점을 의미합니다

 

다음의 그림을 통해 이해해봅시다.

 

위와 같이 AB가 있습니다.

만약 B에서 A에게 소켓을 이용해 메시지를 전달하고 응답 받고 싶다고 하면 어떻게 해야 할까요?

다음과 같은 과정을 거쳐 메시지를 주고 받습니다.

 

과정

1. B가 A와 통신을 하고 싶다면 A의 ip주소와 포트번호를 이용해 연결합니다.

 ex)

       A의 ip주소(ip주소): 5000번 포트(포트번호)

2. 연결되는 순간 A와 B는 메시지를 주고 받을 수 있습니다.

 

A와 B가 연결되어 메시지를 주고 받는 순간 C가 등장하여 A와 통신하고 싶다고 합니다.

 

❓C는 A와 통신할 수 있을까요?

→ A와 통신하지 못합니다.

 

❓왜 C는 A와 통신하지 못할까?

A와 B는 5000번 포트에서 연결되어 메시지를 주고 받는 중이기 때문에 C는 5000번 포트를 이용해 A에 연결하지 못합니다.

 

🔎 그럼 C를 A에 연결하는 방법은?

다음 그림을 살펴봅시다.

 

과정

1. 다음과 같이 B에서 A에 연결 요청을 합니다.

-> A에 연결이 되면 새로운 소켓을 생성한 다음 5001번 포트로 연결합니다.

(기존의 연결을 요청한 포트인 5000번과는 연결을 끊습니다.)

 

 

과정

1. 그다음 C에서 A에 연결 요청을 합니다.

2. A에 연결이 되면 새로운 소켓을 생성한 다음 이번에는 5002번 포트로 연결합니다.

(기존의 연결을 요청한 포트인 5000번과는 연결을 끊습니다.)

 

💡 해결방법

🔥 최초에 연결되는 A의 5000번 포트는 연결의 용도로 사용하며 연결된 이후 새로운 소켓을 생성하여
      해당 포트에 연결을 하는 방식으로 바꿉니다.

소켓 통신의 장, 단점

장점: 연결되는 프로그램 간 항상 연결이 되어 있습니다.

단점: 연결되는 프로그램이 계속 연결이 되어 부하가 크고 점차 스레드가 늘어날 수록 부하가 커지게 됩니다.

 

이때문에 웹 프로그래밍에서는 http 통신을 사용하게 되었습니다.

HTTP 통신

❓HTTP 통신이란?

🔥 연결을 지속하지 않고 응답을 받으면 연결을 끝어버리는 Stateless방식을 사용합니다.

Stateless방식

다음 그림을 통해 알아봅시다.

 

과정

1. A가 C에게 a.txt파일을 요청합니다.

2. C는 A에게 a.txt파일을 요청합니다.

3. a.txt파일이 전송되면 연결을 끊습니다.

4. 이번에는 B가 C에게 b.txt 파일을 요청합니다.

5. C는 B에게 b.txt 파일을 응답합니다.

6. b.txt파일이 전송되면 연결을 끊습니다.

정리

소켓통신의 장,단점과 http통신의 장, 단점을 다시 한번 더 살펴봅시다.

 

위의 단점들을 보안하기 위해 웹 서버가 등장하게 되었습니다.

📒 Reference(참고자료)


 

[무료] 스프링부트 개념정리(이론) - 인프런 | 강의

스프링부트를 공부하며 헷갈리는 개념이 많았던 분 스프링부트에 대해 공부하고 싶었던 모든 분, - 강의 소개 | 인프런...

www.inflearn.com

 

profile

제이제이

@아사비치즈스틱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!