Spring boot에서 WebSocket을 어떻게 사용할까? WebSocket이란? -- 웹소켓 (WebSocket)웹소켓은 무엇인가? HTTP 통신 --기본적으로 HTTP 통신은클라이언트가 서버에게 요청을 보내고,서버는 해당 요청에 대한 응답을 다시 보내는 "단방향 통신"으로 소통한다. 일반적인 기nijy.tistory.com-- 환경 --Spring Boot : 3.4.0build : GradleJava : 17-- SebSocket 의존성 추가 --build.gradleimplementation 'org.springframework.boot:spring-boot-starter-websocket'-- DTO (+ Enum) --WebSocketMessage..
전체 글
프로젝트 생성 후 실행 시 나오는 에러 문제 발생 --Spring Boot로 프로젝트를 시작하기 위해"spring initializr" 사이트에서 프로젝트를 생성 후해당 프로젝트 생성 설정Project : Gradle - GroovyLanguage : JavaSpring Boot : 3.4.0Packaging : JarJava : 17IntelliJ로 열어 바로 실행하면 아래와 같이 에러가 발생한다. -- 해결 방법 --IntelliJ의 좌측 상단에File -> Settings -> Build, Excution, Deployment -> Build Tools -> Gradle 경로로 이동하여 Build And run using과 Runtests using을기존 Gradl..
웹소켓은 무엇인가? HTTP 통신 --기본적으로 HTTP 통신은클라이언트가 서버에게 요청을 보내고,서버는 해당 요청에 대한 응답을 다시 보내는 "단방향 통신"으로 소통한다. 일반적인 기능들은 위와 같은 "단방향" 통신으로 구현이 가능하지만만약 실시간 채팅, 멀티 게임 등 실시간으로 통신을 해야 하는 경우에 한계가 존재한다. A와 B가 서로 채팅을 하고 있다고 가정하자.A가 메시지를 작성하여 전송하기 요청서버는 해당 요청에 대한 응답을 전달 (전송한 메시지 내용이 화면에 보이게)B는 서버로부터 최신값을 받지 못해서 A가 메시지를 전송했는지 확인 불가위 상황처럼A는 요청과 함께 서버로부터 최신 정보들을 받아와 화면이 변화한 것을 볼 수 있지만B는 서버에 요청을 하지 않아 서버로부터 최신 정보를 받..
HTTP 헤더는 무엇일까? HTTP 헤더 --HTTP 메시지에서필드 라인에 다양한 HTTP 헤더들이 명시된다. 요청 메시지에 주로 사용되는 헤더HostUser-AgentRefererAuthorization Host는요청을 보낼 호스트를 나타내는 헤더로,주로 도메인 네임으로 명시되며, 포트 번호도 포함될 수 있다.Host: www.google.com-- http://www.goolge.com/example/test에 요청 보낸 경우의 Host 헤더 값 User-Agent는웹 브라우저처럼 HTTP 요청을 시작하는 클라이언트 측의 프로그램을 나타내는 헤더로,요청을 보낸 클라이언트의 정보가 명시된다.즉, 요청 메시지를 생성하는데 관여한 클라이언트 프로그램과 관련된 다양한 정보가 명시된다.User-Ag..
HTTP는 무엇인가? HTTP (HyperText Transfer Protocol) --HTTP는응용 계층에서 정보를 주고받는 데 사용되는 프로토콜로,웹에서 클라이언트와 서버 간에 데이터를 주고받기 위한 프로토콜이다. HTTP의 중요한 특성요청과 응답을 기반으로 동작미디어 독립적상태를 유지하지 않음 (Stateless)지속 연결을 지원 요청-응답 기반 프로토콜HTTP는 클라이언트-서버 구조 기반의 요청-응답 프로토콜이다.클라이언트는 서버에게 요청 메시지를 보내고,서버는 클라이언트에게 응답 메시지를 보내는 방식처럼클라이언트와 서버가 서로 HTTP 요청 메시지와 응답 메시지를 주고받는 구조다.즉, 클라이언트는 리소스를 요청하고, 서버는 해당 요청에 따라 리소스를 제공하거나 결과를 반환한다. 그래서..
DNS는 무엇이고 어떻게 동작할까? 도메인 네임 & 네임 서버 --네트워크에서는 특정 호스트를 가리키기 위해 IP 주소를 사용한다.하지만 목적지 주소를 IP로만 사용하기에는 모든 호스트의 IP 주소를 기억해야 하며, 호스트의 IP 주소는 언제든 변경될 수 있듯이 많은 번거로움이 존재한다. 그래서 일반적으로는 특정 호스트를 IP 주소로 가리키지 않고 "도메인 네임(Domain Name)"을 많이 사용한다. 도메인 네임 (Domain Name)은호스트의 IP 주소와 대응하는 문자열 형태의 주소다.- www.naver.com- www.google.com "IP 주소"와 "도메인 네임"의 관계는전화번호부에 "전화번호"와 "이름"의 관계와 비슷하다.정석대로라면 특정 전화번호를 입력하여 통화를 해야 하지만..
TCP의 특징인 오류, 흐름, 혼잡 제어는 어떻게 동작할까? TCP의 오류 제어, 흐름 제어, 혼잡 제어 --TCP의 중간 과정인 데이터 송수신 과정에서발생하는 오류 제어, 흐름 제어, 혼잡 제어는모두 TCP의 신뢰성을 보장하기 위한 기능이다. TCP는 재전송을 기반으로 다양한 오류를 제어하고, 흐름 제어를 통해 처리할 수 있는 만큼의 데이터만을 주고받으며,혼잡 제어를 통해 네트워크가 혼잡한 정도에 따라 전송량을 조절하여 데이터를 안전하게 송수신할 수 있도록 한다.-- 오류 제어 (재전송 기법) --신뢰성을 보장하기 위해서는 "오류"를 제어할 수 있어야 하는데이를 위해 TCP는 잘못된 서그먼트를 재전송하는 방법을 사용한다. TCP 세그먼트에는 오류 검출을 위한 "체크섬" 필드가 존재하지만..
TCP와 UDP는 어떻게 통신할까? TCP 통신 (Transmission Control Protocol) --TCP는신뢰할 수 있는 통신을 위한 연결형 프로토콜이다. TCP 통신의 단계를 크게 3단계로 나눌 수 있다.통신하기 전에 연결하기데이터 통신 수행통신이 끝나면 연결 종료하기 MTU (Maximum Transmission Unit)은네트워크를 통해 전송할 수 있는 데이터의 최대 크기를 의미한다.여기서 "IP MTU"는 IP 네트워크에서 하나의 IP 패킷이 가질 수 있는 최대 크기를 의미한다.MSS (Mazimum Segment Size)는TCP에서 사용하는 개념으로 TCP로 한 번에 전송할 수 있는 최대 데이터 크기를 의미한다.해당 데이터는 TCP 세그먼트에서 실제 데이터(Payload)..