분류 전체보기 61

[TCP/IP가 보이는 그림책] 3. 애플리케이션 계층

애플리케이션 계층의 역할TCP/IP의 최상위 계층에 위치한 애플리케이션 계층의 주요 역할에 대해 소개합니다.애플리케이션 계층의 위치TCP/IP의 5계층 중에서 가장 위에 위치한 것이 애플리케이션 계층입니다. 컴퓨터끼리의 주고받기를 사용자가 이용할 수 있는 '통신 서비스'라는 형태로 만드는 것이 이 계층의 역할입니다.통신 서비스의 실현애플리케이션 계층의 역할은 통신 서비스를 실현하는 것입니다. 그래서 이 계층은 '송신측과 수신측'이 아니라 '클라이언트와 서버'라는 개념을 갖고 있습니다.애플리케이션 프로토콜애플리케이션 계층에는 통신 서비스를 하는 서버와 클라이언트가 주고받기로 정한 프로토콜이 있습니다. 이것을 애플리케이션 프로토콜이라고 합니다. 애플리케이션 헤더서버와 클라이언트의 주고받기에 필요한 정보는 애..

네트워크 2025.04.14

[TCP/IP가 보이는 그림책] 2. 통신 서비스와 프로토콜

서버와 클라이언트통신 서비스의 기본이 되는 것이 '서버'와 '클라이언트'의 개념입니다.서비스를 제공하는 측, 제공받는 측서비스를 제공하는 측을 서버, 서비스를 받는 측을 클라이언트라고 합니다. TCP/IP를 사용한 많은 서비스는 '서버와 클라이언트의 주고받기'라는 형태로 이루어집니다. 데이터가 어디 있지?서버에서 '이 데이터가 필요해'라고 요청할 때는 데이터가 있는 곳을 확실히 표시할 필요가 있습니다.URL이란?네트워크 상에 있는 특정 데이터 등을 표시할 때 사용되는 것이 URL입니다. URL 구조는 다음과 같습니다.URL : http://ww.cyber.co.kr:80/picbook/gabsoon/index.html스킴명 : http(서비스의 종류를 나타냅니다.)도메인 : www.cyber.co.kr(..

네트워크 2025.04.13

[TCP/IP가 보이는 그림책] 1. TCP/IP 개요

통신 프로토콜네트워크 상의 컴퓨터끼리 데이터를 주고받으려면 그에 맞는 구조가 필요합니다.통신 프로토콜데이터를 주고받으려면 송신측과 수신측의 컴퓨터가 미리 정해놓은 공통된 메뉴얼에 따라 연락을 취해야 합니다. 이 메뉴얼을 프로토콜이라고 합니다. TCP/IP란?TCP/IP는 전 세계적으로 공통된 통신 프로토콜입니다.TCP/IP만일 전세계적으로 공통된 통신 프로토콜이 있다면, 그 프로토콜만 사용하면 어떤 컴퓨터끼리든 데이터를 주고받을 수 있게 될 것입니다. 현재 전 세계 공ㅌ오 통신 프로토콜로 채택된 것이 TCP/IP입니다. 계층화TCP/IP는 송수신에 필요한 작업을 몇 개의 단계로 나눠서 수행합니다.단계로 나눠서 처리하기TCP/IP에서는 송수신과 관련된 일련의 작업을 몇 개의 단계로 나눠서 수행합니다. 각 ..

네트워크 2025.04.13

DNS(Domain Name Syetem)

DNS(Domain Name Syetem)웹사이트에 접속 할 때 우리는 외우기 어려운 IP 주소 대신 도메인 이름을 사용합니다.도메인 이름을 사용했을 때 입력한 도메인을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요합니다. DNS 구성 요소도메인 네임 스페이스(Domain Name Space)네임 서버(Name Server) = 권한 있는 DNS 서버리졸버(Resolver) = 권한 없는 DNS 서버도메인 네임 스페이스(Domain Name Space)DNS는 전세계적인 거대한 분산 시스템입니다.도메인 네임 스페이스는 이러한 DNS가 저장 관리하는 계층적 구조를 의미합니다.도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 ..

네트워크 2025.03.03

TCP/IP 4계층

TCP/IP 4계층Network Layer (OSI 7계층에서 물리+데이터링크 계층)알맞은 하드웨어로 데이터가 전달되도록 MAC주소를 핸들링 하는것 뿐 아니라, 데이터 패킷을 전기신호로 변환하여 선로를 통하여 전달할 수 있게 준비 해줍니다.물리적인 주소로 MAC을 사용합니다.Internet Layer (OSI 7계층에서 네트워크 계층)통신 노드 간의 IP패킷을 전송하는 기능과 라우팅 기능을 담당합니다.IP를 사용하여 데이터의 원천지(origin)과 목적지(destination)에 관한 정보를 첨부합니다.IP는 복잡한 네트워크 망을 통하여 가장 효율적은 방법으로 데이터의 작은 조각들을 되도록 빨리 보내는 일을 합니다.IP는 패킷 전달 여부를 보증하지 않고, 경로를 설정하여 어떻게든 빨리 보내도록 합니다.프..

네트워크 2025.03.01

OSI 7계층

OSI 7계층OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 의미합니다. OSI를 7계층으로 나눈 이유는 네트워크 통신의 흐름을 한 눈에 알아보기가 쉬우며, 통신의 이상이 생기면 어느 계층에 문제가 있는지 확인할 수 있고 대처도 유연하게 할 수 있기 때문입니다. OSI 7계층 종류물리 계층(Physical layer)이 계층에서는 단지 데이터를 전달만 할뿐 전송하려는(또는 받으려는)데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않습니다.주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송하는 물리적인 장비입니다.장비 : 통신 케이블, 리피터, 허브 등데이터 링크 계층(Data link layer)물리계층을 통해 송수신되는 정보의 오류와 흐름을 관..

네트워크 2025.02.28

Scanner, BufferedReader

알고리즘 문제를 풀이 할때 입력값을 받기 위해서 주로 Scanner와 BufferedReader를 사용했습니다. 그런데 최근에 메모리 초과가 발생했을 때 때 Scanner에서 BufferedReader로 교체를 하니 메모리 문제가 해결된 경험이 있습니다. 이를 계기로 Scanner와 BufferedReader에 대해 정리를 해보겠습니다.ScannerScanner 클래스는 입력받은 데이터(바이트)를 다양한 타입으로 변환하여 반환하는 클래스입니다. 간단하게 기본형과 String 타입을 정규표현식을 사용해 파싱할 수 있습니다.java.util 패키지에 속합니다. (java.util.Scanner)공백(띄어쓰기) 및 개행(줄 바꿈)을 기준으로 읽는다.(' ', '\t', '\r', '\n' 등) 원하는 타입으로..

[백준/Java] 11403 : 경로 찾기

https://www.acmicpc.net/problem/11403  문제에서 요구하는 바는 시작점으로 부터 갈 수 있는 목적지를 2차원 배열을 통해 표현하는 것 입니다. 여기서 중요한 점은 자기 자신으로 돌아올 수 있는지 체크하는 것도 중요합니다. 인접리스트를 통해 그래프를 구현하였으며, 모든 정점을 시작점에 놓아 갈 수 있는 지점을 배열에 체크 한 후에 값을 저장하면 쉽게 풀 수 있습니다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;import j..

알고리즘 2025.02.20

[백준/Java] 23326 : 홍익 투어리스트

https://www.acmicpc.net/problem/23326 이 문제에서 원하는 것은 현재 도현이의 위치로부터 가장 가까운 명소를 찾는 것인데, 무조건 시계 방향으로만 돌아야만 합니다. 그래서 명소를 관리하기 위해 TreeSet 자료구조를 사용하였습니다. 그 이유로는 TreeSet에서는 X보다 큰 값 중에 가장 작은 값을 반환해주는 함수를 제공해주기 때문입니다. 1. 1의 경우에는 TreeSet에 저장되어 있으면 삭제하고, 저장되어 있지 않으면 추가를 합니다. 2.  2의 경우에는 도현이의 위치를 옮겨주어야 하는데 아무리 큰 수가 오더라고 결국 한 바퀴를 돌게 되면 제자리이기 때문에 나머지를 계산해 최종적으로 움직여야 하는 칸을 계산하고 크기를 넘을 경우 N으로 나누어 주면 됩니다. 3.  3의 ..

알고리즘 2025.02.20

[백준/Java] 21939 : 문제 추천 시스템 Version 1

https://www.acmicpc.net/problem/21939  처음에 문제를 접했을 때 난이도 순으로 정렬을 하고 난이도가 같으면 문제 번호로 정렬을 하면 손쉽게 전체를 정렬할 수 있다고 생각하였습니다. 그래서 하나의 클래스를 만들고 이를 TreeSet을 통해 정렬을 했습니다. 그런데 solved 명령어를 해결하기 위해서는 문제 번호에 해당하는 TreeSet에 저장된 값을 알아야만 삭제를 O(Log N)에 할 수 있기 때문에 이를 관리하는 HashMap을 생성하였습니다. HashMap에 키로 문제 번호를 받고 값으로 TreeSet에 저장된 값을 저장하는 방식으로 풀이를 하였습니다. import java.io.BufferedReader;import java.io.IOException;import j..

알고리즘 2025.02.20