목록분류 전체보기 (91)
눈송이의 개발생활
TCP TCP 3-way handshake가 완료되면 데이터 교환 시작 데이터 전송의 신뢰성을 확보하기 위해 흐름 제어, 혼잡 제어, 재전송 제어를 조합해가며 전송 unreliable network의 4가지 문제 손실 : packet 손실되는 문제 순서 바뀜 : packet의 순서 바뀌는 문제 congestion : 네트워크 혼잡 overload : 수신측(receiver)이 overload되는 문제 흐름 제어(Flow Control) 수신측(receiver) 단말이 수행하는 흐름(데이터 전달 속도) 양 조정 송신측(sender)이 수신측(receiver)보다 속도가 빠른 경우 문제가 발생 수신특에서 제한한 저장 용량을 초과한 이후 도착하는 데이터는 손실될 수 있음 위험을 줄이기 위해 수신측에 맞춰 송신..
네트워크 계층 중 전송 계층에서 사용하는 프로토콜 전송 계층 : 데이터의 전달 담당. 송신자와 수신자 연결하는 통신 서비스 제공 TCP(Transmission Control Protocol) 데이터를 메시지와 함께 보내기 위해 IP와 함께 사용하는 프로토콜 IP : 데이터 배달 처리 TCP : 패킷 추적 및 관리 연속성보다 신뢰성있는 전송이 중요할 때 신뢰성 : 데이터를 순차적으로 안정적이게 전달 전송 : 포트 번호에 해당하는 프로세스에 데이터 전달 TCP 특징 연결형 서비스(양방향 통신) → 가상 회선 방식 제공 3-way handshaking : 연결 설정 4-way handshaking : 연결 해제 흐름제어 제공 데이터 송신하는 곳/수신하는 곳의 데이터 처리 속도 조절해서 수신자의 버퍼 오버플로우..
TCP 3-way Handshake TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결 설정하는 과정 TCP 접속을 성공적으로 성립하기 위해 반드시 필요 양쪽 모두 데이터 전송할 준비 되었다는 것 보장 데이터 전달 전, 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있게 함 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션 수립하는 과정 seq num은 왜 랜덤? 오류가 나서 동시에 패킷을 2개 보내는 경우, 구별이 안되기 때문에 3-way handshake는 왜 하는걸까? 데이터를 전송하기 전에 정확한 전송을 보장하기 위해서 신뢰성을 보장하기 위해서 A(client) 가 B(server)에 연결을 요청하는 경우 1️⃣ A → B : SYN A가 연결 요청 메시지 전송 (SYN) (sequ..
REST란? REST : Representational State Transfer → 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 탄생 대규모의 고성능 통신 안정적으로 지원할 수 있음 쉽게 구현하고 수정할 수 있음 → 모든 api 시스템 파악 & 여러 플랫폼에서 사용 가능 웹의 기존 기술 & http 프로토콜 사용 HTTP URI를 통해 자원을 명시하고 HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것 REST 구성 요소 HTTP URI : 자원 모든 자원은 고유 ID를 갖고 있고, 자원은 server에 존재 자원을 ..
OSI모델과 TCP/IP모델 초기에 컴퓨터들은 자신의 업체 장비들끼리만 연결되어 있어 통신이 불가능했다. 모든 시스템이 상호 연결되어 데이터를 주고 받기 위해서는 통신 규격이 필요했는데, OSI 모델과 TCP/IP 모델이 대표적이다. TCP/IP 프로토콜은 OSI 모델보다 먼저 개발되었다. 그러므로 TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지 않는다. 두 모델 모두 계층형 이라는 공통점을 가지고 있으며 TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수인 반면, OSI 7 Layer는 표준이 되기는 하지만 실제적으로 구현되는 예가 거의 없어 신뢰성이 저하되어있다. OSI 7 Layer는 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면에 실 질적인 통신 자..
문제 https://www.acmicpc.net/problem/2467 코드 import sys input = lambda : sys.stdin.readline().strip() n = int(input()) arr = list(map(int, input().split())) min_n = sys.maxsize ans_s, ans_e = 0, len(arr)-1 s, e = 0, len(arr)-1 while s 0: e -= 1 elif summ < 0: s += 1 else: break print(arr[ans_s], arr[a..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42584 내 코드 - 효율성 테스트 실패 def solution(prices): answer = [] while prices: temp = prices.pop(0) cnt = 0 for i in range(len(prices)): if prices[i] >= temp: cnt += 1 else: cnt += 1 break answer.append(cnt) return answer 다른 사람 풀이 from collections import deque def solution(prices): answer = [] p = deque(prices) while p: temp = p.popleft() cnt..
SpringBoot로 코드를 작성하고 Test를 진행하면서 401 오류가 떴다. assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); 통신에 문제가 있을거라고 생각돼서 상태 메시지를 찾아 보았다. 401 UNAUTHORIZED 서버가 인식할 수 없는 잘못된 로그인 자격 증명 제공했을 때 ❗URL 확인하기 ❗로그인 자격 증명 확인 ❗브라우저 기록 삭제 및 쿠키 삭제 알고 보니까 Spring Security때문에 발생하는 문제였다. → Spring Security는 스프링은 위한 인증, 접근 관리 프레임워크. → build.gradle에 의존성 추가하고 localhost:8080에 접속하면 로그인을 해야 함. 프로젝트 파일 세팅을 다른 플..