전체 글 121

[네트워크 전송계층] UDP/TCP 특징 차이

OSI 7계층 중 Layer 4에 해당하는 전송계층에서 사용되는 프로토콜에 대해서 알아보고자 한다. 전송계층은 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층인데 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당한다. 이러한 전송계층에서 사용되는 프로토콜이 바로 TCP와 UDP이다. ✅ TCP (Transmission Control Protocol) TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다. 일반적으로 TCP와 IP가 함께 사용되는데, IP가 데이터의 전송을 처리한다면, TCP는 패킷 추적 및 관리를 하게 된다. 연결 지향적인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼..

Computer Science 2023.01.11

[python]백준 8979번: 올림픽(implementation)

# 8979 올림픽 https://www.acmicpc.net/problem/8979 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 코드 n, k = map(int, input().split()) grade = [] for _ in range(n): list_ = list(map(int, input().split())) grade.append(list_) grade = sorted(grade, key = lambda x : (-x[1], -x[2], -x[3])) for i in ran..

Algorithm 2023.01.10

TCP 프로토콜 연결 / 종료 과정

✅ TCP란? TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다. ✅ TCP 3-Way HandShake란? TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정. 데이터를 주고받기 전에 서버와 클라이언트가 확인 패킷을 3단계로 교환하여 연결을 맺는다. Flag 설명 SYN(연결 요청 플래그) - TCP에서 세션을 성립할 때 가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 시퀀스 번호를 보내게 된다. ACK(응답플래그) - 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷 - 다른 플래그와 같이 출력되는 경우도 있음 - 받는 사람이 ..

Computer Science 2023.01.10

[네트워크] 웹 사이트에 접속하는 과정

웹사이트에 접속하는 과정을 간단하게 정리하면 다음과 같다. URL 입력 => 브라우저가 URL 해석 => DNS 서버를 통해 도메인 이름을 IP주소로 변경 => HTTP or HTTPS 프로토콜 방식으로 요청 및 응답 => 브라우저가 서버에게서 받은 자료를 바탕으로 렌더링 => 사용자에게 화면 제공 1. URL 입력 => 브라우저 URL 해석 www.google.com 을 입력하면 입력한 URL 주소 중, 도메인 이름에 해당하는 google.com을 DNS 서버에 검색하는데 검색하기 전에 캐싱된 DNS 기록들을 먼저 확인한다. 만약에 해당 도메인 이름에 맞는 IP주소가 존재하면 DNS서버에 해당 도메인 이름에 해당하는 IP주소를 요청하지 않고 캐싱된 IP주소를 바로 반환한다. 일치하는 IP주소가 존재하지..

Computer Science 2023.01.09

디자인 패턴(Design Pattern)이란?

✅ 디자인 패턴(Design Pattern)이란? 소프트웨어 개발 방법으로 사용되는 디자인 패턴(Desigin Pattern)은 과거의 소트프웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 즉 효율적인 코드를 만들기 위한 방법론이다. - SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. - 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방법론 - 자주 반복되는 문제에 해결책 -> 재사용과 팀원과의 의사소통 - 23가지 디자인 패턴이 존재 - 연관되는 개념으로는 SOLID 원칙과 클린 코드(Clean Code) ✅ 디자인 패턴 종류 디자인 패턴은 목적에 따라 3가지로 구분할 수 있다..

Computer Science 2023.01.08

[python]백준 9461번: 파도반 수열(DP)

# 9461 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 코드 T = int(input()) for _ in range(T): n = int(input()) dp = [0] * 101 dp[1] = 1 dp[2] = 1 dp[3] = 1 dp[4] = 2 dp[5] = 2 dp[6] = 3 for i in range(5, n+1): dp[i] = dp[i-1] + dp[i-5] print(dp[n]) 📝 풀이 그림과 같이 정삼각형의 ..

Algorithm 2023.01.08

예술작품 중개 서비스, NES(22.11.24 ~ 22.12.14)

✅ 2022.11.24 ~ 22.12.14 (3주) 약 3주간 진행했던 3번째 프로젝트도 끝이 났다. 이번 프로젝트에서는 이전 프로젝트와 다르게 프론트와 백엔드 역할을 확실하게 나눠서 진행했었다. 5명에서 3명이 프론트 2명이 백엔드를 맡았고, 나는 백엔드를 맡았다. 이전에 했던 2개의 프로젝트에서는 각자 프론트+백엔드를 맡아서 했기 때문에 앱별로 구분지어서 코드를 짰다고 한다면 이번 프로젝트에서는 백엔드에서 기초 코드를 작성하고 프론트 팀원들이 디자인을 입히는 작업을 했다. 기획 단계에서는 서비스 방향성을 정했다. 우리는 예술대학 졸업생들의 작품을 판매하려는 판매자와 구매자를 연결해주는 중개 플랫폼을 진행하기로 했다. 서비스의 방향성을 정한 후에는 위와 같이 ERD Cloud와 피그마로 화면설계를 진행..

프로젝트 2023.01.07

[python]백준 2589번: 보물섬(BFS)

# 2589 보물섬 https://www.acmicpc.net/problem/2589 2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 코드 import sys input = sys.stdin.readline from collections import deque r, c = map(int, input().strip().split()) graph = [] for _ in range(c): graph.append(list(input())) # 상하좌우 dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0]..

Algorithm 2023.01.07

컴파일러란? (feat. 인터프리터)

✅ 컴파일러(Compiler) 컴파일러란 사람이 이해할 수 있는 언어를 기계어로 변환해주는 작업이다. 사람이 이해할 수 있는 언어는 우리가 사용하는 C언어, Java, Python 등의 프로그래밍언어로 작성된 소스코드를 의미한다. 그리고 이러한 프로그래밍 언어를 하위 수준 언어로 변환하여 실행가능한 프로그램을 만드는 작업을 컴파일러(Compiler)라고 한다. 물론 소스코드를 실제 실행 파일로 변환하는 컴파일 작업에는 위와 같이 많은 단계들이 있지만 간단하게 살펴보려고 한다. ✅ 컴파일 과정 컴파일 과정은 4가지 단계(전처리 과정 - 컴파일 과정 - 어셈블리 과정 - 링킹 과정)으로 나누어 진다. 이 4가지 단계를 묶어서 컴파일 과정, 빌드 과정이라고 부르기도 하고 컴파일 과정과 링킹 과정을 따로 나눠서..

Computer Science 2023.01.06

세션 vs 토큰(JWT) 인증의 차이

✅ 인증(Authentication)과 인가(Authorization) 세션과 토큰에 대해 알아보기 이전에 인증과 인가가 무엇인지 부터 알아야할 필요가 있다. 인증과 인가는 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. ✅ 인증 (Authentication) 인증은 쉽게 말해 로그인이다. 클라이언트가 자신이라고 주장하고 있는 사용자가 맞는지를 검증하는 과정이다. 내가 로그인 화면에서 emhaki와 패스워드를 입력해 제출하면 서버에서는 내가 emhaki 유저가 맞는지 확인한다. ✅ 인가 (Authorization) 인가는 인증 이후에 행해지는 작업으로, 인증된 사용자에 대한 자원에 대한 접근 확인 절차를 의미한다. 인증을 해서 로그인이 되었다면, 유저는 다양한 활동을 하게 될 것이..

Computer Science 2023.01.06
728x90