[Network] 내가 만든 웹 서비스 WireShark로 패킷 분석하기 - 7계층 분석
·
CS/Network
개요내가 만든 웹 서비스 WireShark로 패킷 분석하기 1편에 이어서, 2편에서는 본격적인 WireShark 패킷 내용을 살펴보자. 현재 서버는 로컬 컴퓨터에서 spring boot를 IntelliJ로 실행하고, 포트포워딩하여 15001 포트로 클라이언트가 접속할 수 있도록 세팅되어있다.서버 위주의 패킷을 분석하고, 특정 상황에서는 서버와 클라이언트 양측의 패킷을 각각 분석한다. 유저 시나리오는 다음과 같다.클라이언트의 접속(채팅방 이용자)유저 1의 채팅방 만들기유저 2의 채팅방 접속(다대다 채팅 가능)서로 채팅하기방 나가기이메일 전송하기클라이언트 브라우저 접속 종료 S1# 클라이언트(채팅방 이용자)의 메인 화면 접속  [서버 측 패킷] 두 클라이언트(51115, 51116)의 요청과 서버의 응답에 ..
[Network] 내가 만든 웹 서비스 WireShark로 패킷 분석하기 - Spring WebSocket & STOMP
·
CS/Network
1편 - 소켓 통신 프로젝트 기능 구현 소개 2편 -  패킷 분석 내용 소개  개요WireShark 패킷 분석을 위한 애플리케이션인 만큼, 소켓 통신을 구현하여 서버와 클라이언트, 클라이언트끼리의 통신이 잘 보이는 채팅 서비스를 구현하였다. 소켓 통신은 KAU 멋쟁이 사자처럼 고기의 소켓통신 세션을 참고하였고, SMTP 프로토콜 통신을 캡처하기 위해 이메일 전송을 추가하였다.소스코드는 해당 깃허브에서 확인 가능하다. 기능 구현은 크게 다음과 같다.WebSocket 통신구글 SMTP 서버를 통한 메일 발송  WebSocket 통신 구현에 사용된 기술 크게 3가지로 분류된다.- WebSocket(HTTP와 비교)- STOMP- Message Broker   WebSocket이란? HTTP와 다른 점은 뭘까?..
[AWS] Cloud Watch Agent 설정하기 | Configuration validation second phase failed 해결
·
카테고리 없음
개요진행하는 프로젝트의 로그 작업을 위해 CloudWatch를 설정하였다.CloudWatch를 통해 로깅하기 위해서는 로그를 측정할 Agent를 따로 설치해야 한다.  해당 문서에서는 IAM 관련 설정은 생략한다.CloudWatch Agent 다운로드해당 문서에서 서버 OS에 맞는 명령어를 찾아, 설치한다. 필자는 ubuntu 서버를 사용 중이므로, 다음과 같은 과정을 통해 설치하였다.  1. EC2에 agent 다운로드 wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb  2. 패키지 설치 sudo dpkg -i -E ./amazon-cloudwatch-agent.deb  A..
[AWS] AWS 하나의 LB로 여러 서비스 운영하기
·
DevOps/AWS
개요지난 포스팅에서 하나의 로드밸런서로 여러 서브도메인, 서비스를 운영하는 것을 GCP를 통해 구축해보았다. (GCP를 사용하지 않더라도 앞의 글을 읽는 것을 추천한다.)  [DevOps] 하나의 LB로 여러 서비스 운영하기개요로드 밸런서는 운영관리 입장에서 상당히 많은 편의성을 제공한다.그래서 그런지 규모가 작은 프로젝트 즉, "부하 분산"이 필요없는 프로젝트임에도 불구하고 정말 많은 사람들이 로드 밸cobinding.tistory.com 이번에는 AWS의 로드밸런서와 라우팅 설정을 통해서 하나의 LB로 서브도메인을 구분하는 것을 세팅해보도록 한다.  AWS로 구축할 웹사이트는 user와 admin이 구별되어있다. user-main.example.com  admin-main.example.com 이 두..
[GCP] GCP 하나의 LB로 여러 서비스 운영하기
·
DevOps/GCP
개요로드 밸런서는 운영관리 입장에서 상당히 많은 편의성을 제공한다.그래서 그런지 규모가 작은 프로젝트 즉, "부하 분산"이 필요없는 프로젝트임에도 불구하고 정말 많은 사람들이 로드 밸런서를 활용한다. 그런데 나의 경우, 작은 프로젝트에 LB를 쓰는게 그 기술의 취지에 맞지 않고, 그렇기에 많은 자원이 낭비가 된다는 생각에 쓰기가 싫었다. (뭔가 괜히 패배하는 기분이랄까..?) 여기서부터 지옥 시작이었다.  포트로 분리된 서버에 LB 없이 하나의 서버로 각각의 포트에 SSL을 적용하는 테스크를 진행 (이 가설엔 논점이 굉장히 많은데, 다른 포스팅에서 다뤄보겠다.)했는데, 사실 이건 로드 밸런서로 뚝딱뚝딱 1-2시간이면 할 수 있는 업무다. [사건의 발단🥹] 그런데 위와 같은 이유로 로드밸런서를 사용하기 ..
[BackEnd] API의 멱등성을 고려하여 개발하기
·
Dev/Backend
개요내가 개발한 기능을 쓰는 사람이 Admin 관리자였는데, 개발 과정/구현 내용을 모르다보니 이걸 쓰다가 문제가 생겼다. 이 문제의 핵심은 API의 멱등성을 고려하지 않아서 발생한 것또한, 사용자 관점에서 테스트를 진행해야 한다는 깨달음을 얻었다. API 멱등성이라는 것에 대해 전혀 몰랐고,, 코드 리뷰를 통해 알게 되었다. 따라서 이 포스팅에서는 API의 멱등성에 대해 다루어 앞으로 의식하고 적용할 수 있도록 해볼 것이다! 멱등성(Idempotency)멱등성은 수학 용어로, 여러 번 연산을 적용해도 결과는 달라지지 않는 성질을 말한다.한자도 덮을 멱, 무리 등인데 무리(swarm)의 효과를 덮어버린다! 라는 뜻이다.절댓값 함수1을 계속 곱하는 것 HTTP의 멱등성기본적으로 HTTP 메소드의 GET, ..
[Network] Transport Layer, Mux & Demux
·
CS/Network
개요TCP Keywordsreliable data transferflow controlcongestion controlTransport Layer가 하는 일서로 다른 host의 프로세스 간 Logical communication 제공프로토콜은 End System 즉, host에서 돌아간다.Network 계층의 라우터들을 거쳐서 데이터들이 전달되지만, Transport 계층은 이 거쳐가는 과정은 보이지 않고 두 엔드 시스템(프로세스) 사이의 Logical Communication에만 집중한다.Sender: App Layer의 메시지를 segment 단위로 메시지를 잘라서, Transport Layer의 헤더를 붙이고 Network Layer로 전송Receiver: 받은 segment를 합쳐서 메세지를 만들..
[네트워크] DNS, DNS 쿼리, DNS recode 종류
·
CS/Network
개요프로세스가 서로 통신할 때 알아야 하는 두 가지 정보 → IP, PortIP: 프로세스가 돌고 있는 머신의 Network Interface Card에 부여된 Identity → IPv4, host name(domain name)Port: 실행 중인 프로세스에 접근할 수 있는DNSIP 주소를 hostname으로 매핑(라우팅)해주는 역할→ Network Layer에서 해야하는 일을 App-Layer에서 함⇒ Network Layer는 빠르게 전송만 하면 돼서, 복잡한 연산을 App-Layer에서 처리하는 것distributed database → not centralize가용성, 중요한 서비스는 분산시킨다.application layer protocol   DNS가 하는 일host name-IP addr..
[네트워크] TCP/IP 5계층 | Application Layer
·
CS/Network
TCP/IP 5계층ApplicationFTP, HTTP, SMTP 등의 프로토콜TransportTCP, UCPNetworkIP, 스위치Link이더넷Physical 여기서 7계층되면…Application - Transport 계층 사이에 두 계층 추가Presentation 인코딩, 디코딩, 암호화/복호화Session: 애플리케이션 간 연결 지원(SSL, TLS 등)계층 간 이동 ⇒ Encapsulation각각의 계층을 이동하면서 프로토콜 헤더를 붙이게 된다.캡슐화: 송신 측에서 응용계층부터 각 계층을 들리면서 헤더 추가, 물리 계층까지 가면 최종적으로 전기 신호로 변환되어 수신 측에 도착  Applciation Architectur..
[Algorithm] 이중 포문 조정 - 구간합
·
PS/Algorithm
개요 시간복잡도 줄이는 법을 학습하면서 해본 정리 코드트리를 참고하였다! 어떤 배열에서 특정 합을 만족하며 가장 크기가 큰 구간의 크기를 찾기 위해 완전탐색을 하면 다음과 같다. 완전탐색 - O(N**3) # 이 배열에서 특정 구간을 골라서, # 합이 10이 넘지 않아야 하고, # 배열의 크기가 가장 커야 한다. 이때의 배열 크기는? arr = [0,6,3,2,4,9,1] n = len(arr) target=10 # 무식하게 구해보기 for i in range(1, n+1): for j in range(i, n+1): total = 0 for k in range(i, j+1): total += arr[k] if total target : break ans = max(ans, j-i+1) *이 경우, j는..
[DB] DB스튜디오 과제 리뷰 2 | 데이터 모델링과 개념적 설계
·
DB/DB 설계 과제
개요지난 1편에 이어서, 이번 과제도 배울 점이 많아 리뷰를 작성한다. 요구사항 1  지금까지 과제에서는 DATABASE 설계 명목 하에 개체와 속성이 뚜렷하게 보이는 식으로 요구사항이 정의되었다.그런데 원래 요구사항은 대화하는 방식으로 주어진다. 이번 과제부터 자연어 요구사항이 주어졌고.. 이러한 경우는 "모호성 제거" 단계를 거쳐야 한다.     내 설계는 위와 같은데, 피드백을 받으면서 느낀 점은 다음과 같다. 요구사항이 빠졌는지에 대해 면밀히 검토하는 것은 좋다. 그런데 개체 간의 단순한 관계의 의미를 넘어서 응용 관점을 검토해보는 태도가 필요하다. 그러니까 위 설계같은 경우는 Customer와 Book 사이에 order라는 관계는 의미상으로는 완벽하다. 하지만 다음 질문에 답하기 어려운 설계다...
[AWS] public & private subnet 분리로 서버 운영하기
·
DevOps/AWS
개요AWS 서비스를 조금 더 보안성 있게 운영하고자 한다면, 한 VPC 내의 subnet을 분리하여 사용하는 방법이 있다.이번 프로젝트는 앞으로 동아리에서 쭉 사용할 서비스이므로 처음부터 보안에 유의하여 설계를 해야겠다 다짐했다!!  그래서 이 포스팅을 통해 어떤 과정을 겪었는지 정리해보려 한다.AWS에서 자체적으로 해주는 것이 많아서 생각보다 많이 간단했다. VPC 만들기AWS 계정을 생성하고 나면 기본 VPC는 존재한다. 별도의 퍼스널 서브넷 세팅을 위해 새로 VPC를 생성하자. 생성할 리소스 옵션 중 VPC만/VPC 등 두 가지가 있는데, private subnet에 RDS를 두려면 반드시 후자를 선택해야 한다. RDS 생성 시에도 RDS subnet을 세팅하게 되는데 이때 subnet은 두 개 이..
[백준/1063] 킹 | 구현 실수 방지를 위한 경우의 수 체크하기
·
PS/BOJ&Programmers
킹 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net 알고리즘 킹이 움직인다. 이때 체크해야할 조건은 다음과 같다. 격자 안에서만 움직여야 한다. 돌이 있는 곳으로 움직일 경우, 돌과 함께 움직여야 한다. 이때 돌 또한 격자 안에서 움직여야 한다. 돌이 격자 밖으로 나가는 경우도 체크하되, 이때 킹이 격자 내에서 움직인다면 상관없이 움직인다 이를 코드로 나타내면 다음과 같다. # 격자 내에서 해결해야한다. if (0
[DB] DB스튜디오 과제 리뷰 | 데이터 모델링과 개념적 설계
·
DB/DB 설계 과제
개요DB 스튜디오 과목에서 매주 요구사항에 맞게 데이터 모델링을 하고, 개념적 설계를 진행한다.각각의 팀이 설계한 과제물에 대해 게시판을 통해 1차 토의하고, 강의시간에 교수님과 2차 토의를한다.토의에서 나왔던 내용을 중심으로 과제에 대한 리뷰를 작성해보도록 한다. 요구사항첫 설계의 요구사항은 다음과 같다. 하나는 UNIVERSITY DB로, 일반적으로 대학교에서 학생, 학부, 과목 등을 관리하는 요구사항이다. 두 번째는 MAIL_ORDER DB로, 쉽게 말해 구매 서비스다. 개체와 속성, 관계 추출먼저 ERD를 그리기 전, 텍스트로 개체와 속성, 관계를 추출하는 과제를 수행하였다. 이때 composite, complex attribute 등의 속성 특징과 관계를 속성으로 나타내는 것을 활용하였다. 특히..
[개발일지] 배포 삽질기 | 심볼릭 링크, 리눅스의 Capacities, ufw, netstat
·
회고 & 후기/개발 일지
개요새로운 프로젝트 배포 테스트를 하는 과정에서 했던 삽질에 대해 기록한다.하나의 도메인 내에서 여러 포트를 사용하고, 또 여러 웹서버를 사용하는데 제대로 서버/네트워크를 파악하지 못할 시 시도해볼만한 것들이다. 내가 진행한 서버의 개략적인 상황은 다음과 같다. HTTP/HTTPS 요청80, 8085, 8080 - Tomcat, Apache, java application이 중에서 8080은 서버(platform) 역할을 한다.8081 - Node.js(React), Nginx  일단 Ningx 웹서버 위에 React 프로젝트를 올리는 건 따로 포스팅할 예정이다. 여기서는 정말 내가 했던 삽질, 날 것을 다룬다...까먹지 않으려고 기록하는 용이고 필요하다면 키워드를 통해 다른 사람도 활용할 수 있도록 정..
sebinChu
'분류 전체보기' 카테고리의 글 목록 (2 Page)