목록Network (16)
Rootable의 개발일기
Ubuntu 환경에서 단체 채팅방을 C와 MySQL을 통해 구현했다. MySQL은 채팅 내용을 저장하는 용도로 사용한다. 📜 기능 목록 모든 사용자에게 채팅 메시지가 전달된다.최초 접속하면 최근 10개의 채팅을 볼 수 있다.채팅 내용은 MySQL에 저장한다. 📌 클라이언트 동작 흐름 MySQL 커넥션 초기화 및 연결서버와 통신할 소켓 생성소켓에 연결할 서버 주소 정보 바인딩서버에 연결 요청DB로부터 최근 10개 레코드 조회 후 각 클라이언트 화면에 출력데이터 전송시간 정보, 사용자 이름, 채팅 메시지 등을 포맷팅 하여 서버에 전송클라이언트가 'exit' 명령을 입력하면 로그아웃으로 간주하여 close 수행데이터 수신서버에서 작성한 메시지가 있다면 읽어온 후 출력 📌 서버 동작 흐름 MySQL 커넥션..
🤔 소켓이란 네트워크에서 데이터를 송수신할 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부 네트워크에 연결하기 위한 소켓은 정해진 규약, 즉 통신을 위한 프로토콜에 맞게 만들어져야 한다. 보통 OSI 7 계층 중 4 계층인 TCP 상에서 동작하는 소켓을 주로 사용하며, 이를 TCP 소켓 또는 TCP/IP 소켓이라고 부른다. 마찬가지로 UDP에서 동작하는 소켓을 UDP 소켓이라고 부른다. 소켓은 크게 프로토콜, IP 주소, 포트로 정의된다. 🚩 용어 정리프로토콜(Protocol)컴퓨터 사이에서 메시지를 주고 받는 데 필요한 양식, 약속이나 규약IP 주소(IP Address)각 장치(호스트)를 식별하기 위한 고유 주소. 송신자와 수신자를 식별포트(Port)IP 주소를 통해 도착한 호스트에서 어..
세션 방식으로 구현했던 SSR 서버에 JWT를 적용하면서 느낀 점을 정리하고자 한다. 💥 문제점 🚨 Stateless 하지 않다. SSR 서버는 매 요청마다 비즈니스 로직을 수행하고 컨트롤러를 통해 렌더링 한다. 이것은 매 요청마다 인증 토큰을 생성한다고 해석할 수 있다. Stateless 특징을 가지는 JWT를 사용할 때 서버의 발급은 1회고, 그 이후에는 검증만 수행한다. 결과적으로 Stateless 하지 않다고 볼 수 있다. JWT 방식은 클라이언트 스토리지에 저장되기 때문에 쿠키를 통해 구현할 수 있다. 아래 코드는 세션 방식과 쿠키를 통해 JWT를 구현한 코드이다. @PostMapping("/login") public String login(@Valid @ModelAttribut..
📌 데이터 처리 모델 데이터를 받는 방식 데이터를 받는 방식에는 동기식 처리와 비동기식 처리 모델이 존재한다. 🔍 동기(Synchronous) 데이터의 요청과 응답이 한 자리에서 동시에 일어나는 통신 방식 🗨 대표 예시1. 웹 페이지 새로고침을 예로 들 수 있으며, 화면 전체가 다시 로딩되는 특징이 있다.2. Form 제출사용자의 입력을 받아 서버에 전송하는 역할을 하는 Form을 제출하면 서버로부터 새로운 웹 페이지를 받아서 화면에 표시하게 된다. 마찬가지로 화면을 다시 로딩해 주며, 클라이언트는 응답을 대기하게 된다. 😀 장점 요청과 응답이 순차적이므로 코드 및 설계가 간결하고 직관적이다.요청과 응답의 순서를 보장요청과 응답이 연결되어 있어 에러 처리가 쉬울 수 있다. 🙄 단점 전체 페이..