인프런 커뮤니티 질문&답변

alstjs님의 프로필 이미지
alstjs

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

3강. 네트워크란 무엇인가?!

도메인 이름

작성

·

256

·

수정됨

1

강의에서 이세계의 집 주소 별칭을 현실 세계의 도메인으로 빗대어 설명해 주신 부분에 대한 질문입니다.
1. 강의를 들을 때 '서울에 있는 컴퓨터' == 강의를 듣고 있는 내 노트북, '대전에 있는 컴퓨터' == 인프런 사이트의 서버 쯤으로 이해하는 게 맞을까요?

처음에는 간단하게 친구 컴퓨터와 내 컴퓨터 사이의 카카오톡으로 데이터를 주고 받는 상황 으로 이해 헀는데, '대전에 있는 컴퓨터'의 주소에 도메인 이름이 붙는 걸 보니 이해가 안 가더라구요. 내 컴퓨터에 spring.com 이라는 주소 이름이 붙을리가 없으니까요.친구 컴퓨터와 내 컴퓨터 사이의 카카오톡 통신은 '친구 노트북와 카카오 서버와의 통신' + '카카오 서버와 내 노트북의 통신' 으로 나뉜다고 이해하는 게 맞을까요?

 

만약 위에서 카카오톡을 예시로 든 내용이 맞는 내용이라면 추가로 더 궁금한 게 있습니다.

  1. 채팅 어플에선 어떤 HTTP Method를 사용하나요?

     

    내가 친구에게 카톡을 보낸다면 POST 같은 메소드를 쓸 수 있을 것 같긴한데, 그건 내가 '보내기' 버튼을 이용해서 카카오 서버에 요청하는 것으로 생각해봤습니다. 그런데 친구에게서 오는 카톡은 어떻게 나에게 오는 건지는 도무지 생각이 나질 않습니다. 내 컴퓨터에서 카톡 서버에 실시간으로 계속해서 GET과 같은 메소드로 요청을 하는 것은 아닌 것 같아서요.

  2. 카카오와 같은 서버가 내 컴퓨터로 요청하는 경우가 있다면, 내 컴퓨터는 따로 도메인 주소를 갖고 있지 않으니 그냥 내 컴퓨터 IP를 사용하나요?

답변 1

1

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요! alstjs님 좋은 질문 감사드립니다! 😊

하나씩 답변드려볼게요!! 👍

 

Q. 강의를 들을 때 '서울에 있는 컴퓨터' == 강의를 듣고 있는 내 노트북, '대전에 있는 컴퓨터' == 인프런 사이트의 서버 쯤으로 이해하는 게 맞을까요?

--> 네네! 핵심은 떨어져 있는 서로 다른 컴퓨터로 이해해주시면 될 것 같습니다.

 

Q. 내 컴퓨터에 spring.com 이라는 주소 이름이 붙을리가 없으니까요.

--> 사실 우리 컴퓨터에도 도메인을 붙일 수 있습니다! 🙂 (물론 우리 컴퓨터는 항상 켜둘 수 없으니 이렇게 잘 하지는 않죠! 하지만 가능합니다 ㅎㅎㅎ)

 

Q. 친구 컴퓨터와 내 컴퓨터 사이의 카카오톡 통신은 '친구 노트북와 카카오 서버와의 통신' + '카카오 서버와 내 노트북의 통신' 으로 나뉜다고 이해하는 게 맞을까요?

--> 네네 그렇게 생각하시면 좋을 것 같습니다. 다만, real-time 애플리케이션에 따라서는 친구 노트북과 내 노트북이 임의의 서비스를 통해 직접 통신하는 경우도 있습니다. 보통 Web RTC (https://wormwlrm.github.io/2021/01/24/Introducing-WebRTC.html) 기술이 사용됩니다!

 

Q. 채팅 어플에선 어떤 HTTP Method를 사용하나요? 내 컴퓨터에서 카톡 서버에 실시간으로 계속해서 GET과 같은 메소드로 요청을 하는 것은 아닌 것 같아서요.

 --> 크으~ 매우 좋은 포인트 이신데요~ 이런 경우는 web socket이라는 기술을 활용합니다. web socket 기술은 요청-응답 단건으로 이뤄지는 HTTP와 다르게 양방향으로 데이터를 주고 받을 수 있는 기술이에요. 다만, 이런 web socket도 HTTP를 기반으로 동작하긴 합니다.

 

Q. 카카오와 같은 서버가 내 컴퓨터로 요청하는 경우가 있다면, 내 컴퓨터는 따로 도메인 주소를 갖고 있지 않으니 그냥 내 컴퓨터 IP를 사용하나요?

--> 네네 맞습니다. 통신을 위해 연결이 맺어진 순간, 각자는 서로의 IP를 알 수 있어요. 그리고 이때 필요하다면, 다른 컴퓨터가 우리 컴퓨터의 IP를 이용해 데이터를 보내기도 합니다!

 

궁금증이 어느정도 해소 되셨으면 좋겠네요! 😊 혹시나 더 궁금한 부분 있으시면 편하게 말씀해주세요~~ 감사합니다!! 🙏

alstjs님의 프로필 이미지
alstjs
질문자

답변 감사합니다!! 답변을 받으니 추가적으로 계속 질문이 생기네요 ㅎㅎ

혹시 구글에서 공유 문서를 통해 다른 사람들과 같이 작업을 해보신 적 있으신가요??
각자 문서를 편집하는 내용을 실시간으로 확인할 수가 있는데요 협업툴에 속하는 피그마, 노션 등등은 모두 그런 기술을 쓰고 있더라고요! 사용자가 따로 새로고침을 하지 않으니 따로 GET 메소드를 사용하는 것 같진 않다고 생각합니다

답변 주신 것처럼 채팅 어플에서 web socket 기술을 사용하는 것처럼 이런 협업툴에서도 다른 기능을 사용하는지, 그 기능을 구현하는데에 있어서 난도는 어떤지 궁금합니다!

최태현님의 프로필 이미지
최태현
지식공유자

혹시 구글에서 공유 문서를 통해 다른 사람들과 같이 작업을 해보신 적 있으신가요??

네네 그럼요~~ ㅎㅎㅎ 이런 기능도 보통 web socket을 사용하고 있을거에요! web socket 기능을 구현하는 것 자체는 어렵지 않습니다! (인터넷에 있는 강의나 블로그 글을 통해 충분히 따라하실 수 있을거에요!) 다만 수천명, 수만명이 동시에 web socket 채널을 사용할 수 있게 하고 적절히 리소스를 관리하는게 어려울 수 있을 것 같아요. 🥺

 

추가적으로, 새로고침을 꼭 하지 않더라도 GET 메소드를 충분히 사용할 수 있고, 채팅방을 직접 구현해야 하는 경우에도 사용자가 적은 초기에는 HTTP만을 이용해 구현하기도 합니다! (web socket이 일반 API보다는 learning curve가 있기 때문이에요!)

감사합니다!!! 🙇

alstjs님의 프로필 이미지
alstjs

작성한 질문수

질문하기