반응형

분류 전체보기 285

컴퓨터 네트워크 - Transport Layer

Transport Layer Transport layer의 서비스와 프로토콜은 송수신 호스트상의 응용프로세스간의 논리적인 연결을 제공한다. Tranport 프로토콜은 송수신 종단 단말(end-system)에서만 수행된다. 중간의 라우터 스위치와 같은 네트워크 장비에는 physical, data link, network layer까지 구현될 수 있으나, tranport와 application layer는 종단 단말에서만 수행된다. 송신측: application layer에서 전달되어진 메시지를 세그먼트(segments) 단위로 나누어 네트워크층으로 전달한다. 수신측: 전달받은 세그먼트들을 메시지로 재결합하고 application layer로 전달한다. 인터넷에서 주로 사용하는 대표적인 transport p..

[백준 Baekjoon] 1504번 특정한 최단 경로 - JAVA

백준 Baekjoon 1504번 특정한 최단 경로 - JAVA 문제 풀이 1 -> v1 -> v2 -> N 1 -> v2 -> v1 -> N 위의 두 가지 방법 중에 최단거리로 N까지 가는 방법을 구하는 문제이다. 다익스트라 알고리즘을 사용하여 각 이동(예, 1->v1, v1->v2, 1->v2)의 최단거리를 구하고, 두 가지 방법 중에 최단 경로를 출력하면 된다. 각 이동에 대해 다익스트라를 사용하여 총 6번 해도 되지만, 편의상 1, v1, v2에서의 모든 정점과의 최단거리를 구하여 사용하였다. min[0] = 1에서 모든 정점의 거리 min[1] = v1에서 모든 정점의 거리 min[2] = v2에서 모든 정점의 거리이다. 두 방법의 최단경로는 아래의 값을 비교해주어 구한다. min[0][v1](1..

[백준 Baekjoon] 1238번 파티 - JAVA

백준 Baekjoon 1238번 파티 - JAVA 문제 풀이 다익스트라 알고리즘을 사용하여 푸는 문제이다. 주로 양방향 그래프가 주어지고 다익스트라 알고리즘을 활용하여 푸는 문제들이 나왔는데, 이번에는 단방향 그래프가 주어졌다. 모든 마을에서 다익스트라를 사용하여 최단거리를 구하는 방법도 존재하지만, X를 출발지로 지정하면 다익스트라 알고리즘을 두번만 사용하여 구할 수 있다. 정방향과 역방향 그래프와 각각의 최단 거리를 저장할 배열이 필요하다. 주어진 단방향 그래프를 그대로 입력받고 다익스트라를 사용하면 모든 마을에서 X까지의 최단거리를 구할 수 있다. 하지만 반대로 X에서 마을로 돌아오는 길을 구하기 위해서는 입력 받는 그래프를 역으로 바꿔 저장한 다음 다익스트라를 사용하여 구해야 한다. 소스 코드 i..

컴퓨터 네트워크 - Socket program - TCP(Web) & UDP

Socket 프로세스 간에 메시지 송수신시에 소켓을 통해 전달한다. 소켓은 애플리케이션 프로세스와 종단 Transport protocol(TCP or UDP)의 데이터 전달 통로의 역할을 한다. 프로세스는 소켓을 통해 Transport 층으로 데이터를 보내고 인터넷을 통해 전달이 되면 Transport층에서 소켓을 통해 프로세스로 전달하게 된다. Socket program Socket(소켓) 프로그래밍이란 네트워크 상에서 두 개의 애플리케이션 프로세스가 특정 포트를 통해 메시지를 주고받는(양방향 통신)이 가능하도록 만들어주는 방법이다. 서버와 클라이언트는 특정 포트를 통해 연결을 유지하고 있어 실시간으로 양방향 통신하는 것을 소켓 프로그래밍이라 한다. 실시간으로 데이터를 주고받는 상황에서 사용되며 실시간..

[백준 Baekjoon] 2616번 소형기관차 - JAVA

백준 Baekjoon 2616번 소형기관차 - JAVA 문제 풀이 다이나믹 프로그래밍과 누적합을 사용하여 푸는 문제이다. 제한사항의 기관차의 수가 그리 크지 않어 dfs탐색으로도 풀 수는 있을거 같지만, 시간이 오래걸리고 문제에서 원하는 풀이 방식은 아닌듯 했다. 누적합을 사용하여 뒤에 DP에서 기관차가 끌 수 있는 최대 객차의 수의 승객의 합을 쉽게 구할 수 있다. DP의 점화식은 다음과 같다. dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j - max] + sum[j] - sum[j - max]) i를 1 ~ 3 범위로 증가 시키며 각 숫자의 기관차가 운송할 수 있는 최대의 손님 수를 구한다. j를 i * max의 범위부터 시작하는데, 예시로 주어진 문제를 예로 들어..

컴퓨터 네트워크 - P2P applications

P2P (Peer to Peer, Peer-Peer) P2P는 단말(end system = peer) 간에 양방향 파일 전송 시스템이다. 각 단말이 서버이면서 동시에 클라이언트의 역할을 한다. P2P에서 파일 전송은 망을 구성하는 peer들의 성능에 의존되는 통신망이다. P2P를 사용하는 대표적인 프로그램으로 비트토렌트, 소리바다 등이 있다. 클라이언트 서버구조에서는 클라이언트(peer)가 늘어날수록 전송 속도가 선형적으로 증가하는 반면, P2P 구조에서는 Peer가 증가하더라도 비선형적으로 전송 속도가 크게 늘어나지 않는다. P2P가 큰 네트워크에서도 파일 전송에 더 적은 시간이 걸리며 확장성이 있다. Pure P2P Pure P2P 구조에서는 always-on 서버(중앙 서버)가 존재하지 않고 pee..

컴퓨터 네트워크 - DNS: Domain Name System

DNS (Domain Name System) 인터넷 프로토콜의 장비들(라우터, 링커)이 통신하기 위해서는 IP 주소를 알아야 한다. 32 bit로 이루어진 이 주소는 사람이 기억하거나 해석이 어려워 사람이 사용하기 쉬운 이름을 붙인 것이 Domain Name이다. 하지만 Domian name은 소프트웨어가 인식할 수 있는 이름이 아니다. 사람에게는 IP 주소를 Domain name으로 소프트웨어에게 Domain name을 IP 주소로 바꿔주는 것(resolve)이 DNS이다. DNS 계층 구조 DNS는 많은 name 서버들의 계층 구조로 구현된 분산 데이터베이스로 이루어져 있다. 중앙 집중식(centralized) 서버의 경우 공격을 받거나 문제가 생기면 전체 웹 서비스가 멈출 수 있기 때문에 분산한다...

컴퓨터 네트워크 - E-mail (SMTP, POP3, IMAP)

E-mail (Electronic Mail) E-mail에는 대표적으로 user agents, mail servers, SMTP 3가지 컴포넌트가 있다. 이 세 가지의 컴포넌트들이 E-mail 전송에서 필요로 한다. User agents (mail reader) 메일 메세지를 작성, 수정, 읽기 등의 기능을 한다. End system(Host)에 존재하며 대표적으로 Outlook, elm, Mozilla Thunderbird 등이 있다. 이를 관장하는 메일 서버가 존재하여 전송 및 수신되는 메시지들은 서버에 저장된다. User agents는 메시지를 읽을 때에 서버에서 메일 메시지를 꺼내와 읽게 된다. 대표적인 메일 접근 프로토콜로 POP, IMAP, HTTP가 있다. Mail Server 메일 서버에는..

컴퓨터 네트워크 - FTP

FTP (File Transfer Protocol) 클라이언트와 서버 간에 파일 저장, 전송, 공유 등에 사용되는 프로토콜이다. TCP 통신을 사용하며 파일 전송을 위해서는 2가지의 연결을 맺어야 한다. 서버의 21번 포트에 파일을 가져오는 명령, ID, password 전송, 디렉토리 검색 등을 위한 연결(control connection)과 20번 포트에 실제 데이터를 전달하는 연결(data connection)을 맺어야 한다. 21번 포트에 TCP 연결 후 파일 전송 요청을 받으면 20번 포트에 TCP 연결을 맺고 파일 전송을 수행한다. 하나의 파일을 전송한 뒤, 21번 포트 data connection을 닫는다. 매 파일 전송 마다 data connection을 열고 닫으며, control con..

컴퓨터 네트워크 - Cookie & Cache

Cookies 쿠기에 대해 알아보기 앞서 HTTP의 stateless 속성에 대해 알아야 한다. HTTP는 stateless의 속성을 가져 사용자의 요청에 대한 기록을 서버에서 저장하지 않는다. 그렇기 때문에 사용자의 행위에 대한 기록을 서버에 남겨, 다음 행위에서 이전 기록을 통해 무언가를 하고자 할 때에 쿠기가 사용된다. Stateless 한 HTTP에서 stateful 한 성격을 구현하는 것이 쿠키이다. 쿠기는 클라이언트가 서버에 접속 시에 서버가 쿠키값을 생성하여 클라이언트에 부여한다. 쿠키 값은 서버에서 생성하여 부여하되, 보관은 클라이언트와 서버 양쪽에서 한다. 클라이언트는 쿠키 값을 받아 저장한 뒤, 동일한 서버에 다시 접속 시에 쿠키값을 같이 전송한다. 이 쿠키값을 가지고 서버는 클라이언트..

반응형