본문 바로가기

전체 글

(126)
[컴퓨터 네트워킹]3장 트랜스포트 계층 - 2 3장 트랜스포트 계층 3.5 연결지향형 트랜스포트: TCP 3.5.1 TCP 연결 TCP 특징 연결지향형(connection-oriented) 전이중(full-duples) 서비스 점대점(point-to-point) : 1대1 통신 부정 확인 응답 (NAK) 사용 x 타임 아웃 시 확인 응답이 안 된 가장 작은 순서 번호를 가진 세그먼트를 재전송 TCP 단일 타이머 사용 세 방향 핸드셰이크(three-way handshake) : TCP 연결 설정 절차 1. 클라이언트가 먼저 특별한 TCP 세그먼트를 보낸다. 2. 서버는 두 번째 특별한 TCP 세그먼트로 응답한다. +처음 2개의 세그먼트에는 "페이로드"(애플리케이션 계층 데이터)가 없다. 3. 세 번째 세그먼트는 페이로드를 포함할 수 있다. 추가자료 [..
[컴퓨터 네트워킹]3장 트랜스포트 계층 - 1 3장 트랜스포트 계층 3.1 트랜스포트 계층 서비스 및 개요 논리적 통신 : 애플리케이션의 관점에서 보면 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보인다는 것을 의미 세그먼트(segment) : 트랜스포트 계층 패킷 트랜스포트 계층 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현 3.1.1 트랜스포트 계층과 네트워크 계층 사이의 관계 트랜스포트 계층 프로토콜 : 프로세스들 사이의 논리적 통신 제공 네트워크 계층 프로토콜 : 호스트들 사이의 논리적 통신 제공 - 트랜스포트 계층 프로토콜들은 종단 시스템에 존재 - 트랜스포트 계층이 제공할 수 있는 서비스는 하위 네트워크 계층 프로토콜의 서비스 모델에 의해서 제약받는다. - 그럼에도 불구하고 하위 네트워크 프로토콜이 상응하는 서비스를 제공하..
[컴퓨터 네트워킹]2장 애플리케이션 정리 - 2 2장 애플리케이션 계층 2.5 P2P 파일 분배 P2P 아키텍처 - P2P는 always-on 서버가 없다. ==> 서버 사용하는 P2P도 있긴 한데 서버의 역할이 서버와 클라이언트 사이의 통신이 아닌 peer들을 관리하기 위한 서버이다. - 임의의 end system(클라이언트들, peer들) 끼리 직접적으로 소통한다. - peer들은 항상 켜져있지 않고, IP주소가 고정되어 있지 않다. P2P 구조 확장성 : 분배 시간 client-server vs P2P "F 사이즈의 파일을 한 서버로 부터 N개의 peer들에게 distribute 하는데 얼마나 시간이 걸릴까?" -> peer의 업로드/다운로드 용량은 정해져 있다. + us : 서버의 파일을 네트워크로 업로드 하는데 걸리는 전송 속도(업로드 속도)..
[컴퓨터 네트워킹]2장 애플리케이션 정리 - 1 2장 애플리케이션 계층 2.1 네트워크 애플리케이션의 원리 2.1.1네트워크 애플리케이션 구조 클라이언트-서버구조(client-server architecture) 항상 켜져 있는 호스트(서버, 서비스 제공자)와 서비스 사용자(클라이언트)의 상호작용으로 이루어진 구조 데이터 센터 : 많은 요청을 처리하기 위한 많은 수의 서버를 가진 서버 P2P(peer to peer) 구조 피어간의 상호 통신을 통해 이루어지는 구조 피어(peer) : 간헐적으로 연결된 호스트 - 각 피어는 클라이언트이며 서버의 역할을 수행한다. - 자기 확장성을 가진다. - 비용 효율적이다. - 보안, 성능, 신뢰성의 약점 2.1.2 프로세스 간 통신 2개의 다른 종단 시스템(다른 os)에서 프로세스는 컴튜터 네트워크를 통한 메시지 교..
[컴퓨터 네트워킹]1장 컴퓨터 네트워크와 인터넷 정리 1장 컴퓨터 네트워크와 인터넷 1.1 인터넷이란 무엇인가? 1.1.1 구성 요소로 본 인터넷 호스트(Host), 종단 시스템(end System) 인터넷에 접속하는 전통적인 데스크톱 PC, 리눅스 워크스테이션 그리고 서버, 점차적으로 증가하고 있는 랩톱, 스마트폰, 테블릿, TV, 게임 콘솔, 가전 제품, 시계 등과 같은 비전통적인 인터넷 "사물들"과 같은 모든 장치 종단 시스템은 통신 링크와 패킷 스위치(교환기)의 네트워크로 연결된다. 통신 링크 : 정보를 송수신할 목적으로 2지점간을 맺는 물리적인 수단 Ex) 동축케이블, 구리선, 광케이블, 라디오 스펙트럼 패킷 스위치(교환기) 종류 -> 1. 라우터(router) 2. 링크 계층 스위치(Link-layer switch) --> 역할 : 최종 목적지 ..
[알고리즘] 이분탐색 이분탐색은 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다. 리스트의 모든 값을 비교하는 완전 탐색의 경우에는 O(n)의 시간 복잡도를 가지는 반면에 이분탐색은 O(logn)의 시간 복잡도를 가져 빠른 탐색이 가능하다. 이분탑색을 사용하기 위해서 필요조건이 있다. 1. 리스트의 데이터가 정렬되어야 한다. -> 정렬이 되어있지 않으면 원하는 데이터가 어느 범위에 있는 특정 짓을 수가 없기 때문이다. 2. 무작위 접근이 가능해야한다.(Random Access) -> 원하는 인덱스의 값을 얻기위해서 O(1) 접근이 불가능한 연결 리스트의 경우에는 이분탐색의 의의가 퇴색되기 때문이다. 기본적인 이분탐색의 알고리즘은 아래의 그림과 같다. 값이 포함된 범위 [left, right]에서 그 중간 값이니 mid..
해쉬 충돌 백준 알고리즘 7453번 문제를 해결하는 와중에 해쉬를 이용하여 해당 문제에 접근하였으나 시간초과로 생각한 개념이 적용이 되지 않았다. 문제의 원인을 해결하기 위해서 구글링을 한 결과 해쉬를 사용할 때는 해쉬 충돌을 고려해야한다는 것을 알 수 있었다. 해시 충돌이란 해시 함수가 서로 다른 두 개의 입력값에 대해 동일한 출력값을 내는 상황을 의미한다. 해시 함수가 무한한 가짓수의 입력값을 받아 유한한 가짓수의 출력값을 생성하는 경우, 비둘기집 원리에 의해 해시 충돌은 항상 존재한다. 다시말해 입력 값의 집합과 해쉬 함수의 출력 값의 집합의 관계가 1:1이어야만 탐색시 O(1)의 성능을 발휘할 수 있다는 것이다. 1:1관계가 성립하지 않는다면 해당 값의 위치를 해쉬의 저장된 키 값을 모두 탐색해야하므로 탐색..
apache api 사용(kotlin) 영어 단어를 읽어올 파일로써 처음에는 csv파일을 사용하고자 하였다. 하지만 csv파일은 일반적인 사람들은 잘 들어보지 못한 파일 확장자이기에 범용성이 너무 떨어진다고 생각이 들어서 조금 더 대중적인 파일을 사용하는 앱을 개발하고자 마음을 먹었다. 따라서 엑셀파일을 사용하기로 했다. 액셀 파일을 사용하기 위해서는 apache api를 사용해야한다. 엑샐 파일의 확장자가 xls이지만 xlsx를 비롯하여 여러가지 다양한 확장자가 존재하였다. 엑셀의 버전에 따라 지원하는 클래스의 명이 다르기 때문에 해당 사이트에서 사용법을 참고해야했다. https://poi.apache.org/ Apache POI - the Java API for Microsoft Documents Apache POI - the Java A..