전체 글 119

GDSC Solution Challenge 일지 -1

한동안 바빴었기에 이제야 글을 쓴다.. 공부하랴, 뒤늦게 개발자 준비하랴, 연애하랴, 운동하랴 너무 바쁘다.. 글을 쓰는 지금도 바쁘지 않은 것은 아니지만 방학이기도 하고, 내가 해온 기록들을 짧게나마 착실히 남기고 싶다. 작년에 교내 GDSC에 합류해서 활동하다가 이번에 Solution Challenge에 참여하게 됐다! 팀빌딩이 완전 자유였던 데다 지인이 거의 없어서 어찌해야 할지 몰랐지만 다행히 자기 PR을 좋게 봐준 학우가 러브콜을 보내주었다. ㅠㅠ 그렇게 백엔드 2명, 프론트엔드 1명, PM 1명인 4인조가 정해졌다. 팀원 3명 모두 재능있고, 성격 좋고, 열정 넘치는 친구들이다. 함께 해서 영광이고 이번 기회에 서로 많은 것을 얻어가고 좋은 인연으로 남았으면 좋겠다! 각설하고, 솔챌 이야기를 ..

네트워크 프로그래밍

네트워크 network 네트워크란? 서로 데이터를 주고 받을 수 있는 컴퓨터 및 장치들의 집합이다. 네트워크 내에서 통신의 주체가 되는 장비를 ‘노드(node)’라고 한다. 노드는 컴퓨터, 프린터, 라우터, 브릿지, 게이트웨이와 같은 네트워크 장비이기도 하다. 노드 중에서 일반적인 컴퓨터를 호스트라고 부른다. 네트워크 주소 network address 모든 네트워크 노드(장비)들은 각각의 고유한 네트워크 주소를 갖고 있다. Java 프로그래밍에서 네트워크 주소 네트워크 주소는 바이트 목록(byte[])이다. Java의 기본 숫자 타입(int, long, float)은 네트워크 주소를 저장하기에 적당하지 않다. Java의 int 타입 변수는 4바이트이지만 바이트의 순서는 big-endian이기 때문이다. ..

글쓰기 머신이 필요하다면? Freewriter, Pomera

Portable Smart Typewriter 디지털 타자기 이전에 집필에 사용할 프로그램을 소개한 적이 있다. 이번에는 전자기기를 소개할 것이다. 상술할 전자기기는 글쓰기에 특화돼 있다. 더 정확히 표현하자면 '들고 다니며 장소와 시간의 제약을 최소화하여 글쓰기에 집중할 수 있도록 돕는 기기'다. 언제 어디서든 아이디어가 떠올랐다면 이 기기를 꺼내고 시간 단위로 집중할 수 있다. 이들은 과거 오직 글쓰는 것만이 목적이었던 워드프로세서에서 발전을 거듭해 현재에 이르러서 오늘날의 마니악하면서 심플한 모습을 갖추었다. 그럼 각설하고, 글쓰기 머신에 대한 소개와 기기 그 자체에 대한 주관적 견해를 곁들여서 적어보겠다. 포메라 DM250 포메라 DM250은 일본의 전자 문구류 회사인 킹짐에서 만든 디지털 메모 ..

네트워크(11) - 전송층

전송층은 네트워크층과 응용계층 사이에 위치해 있다. 이는 네트워크층으로부터 서비스를 제공받고 응용계층에게 서비스를 제공할 의무가 있다. 전송층 서비스 전송층은 다음과 같은 서비스를 제공한다. 프로세스 대 프로세스 통신 제공 전송층 서비스를 사용하는 실행중인 프로그램이다. 메시지를 적절한 프로세스에 전달할 책임을 갖는다. 포트번호 프로세스끼리는 클라이언트/서버로 통신한다. 프로세스 통신을 위해서는 로컬호스트, 로컬프로세스, 원격호스트, 원격프로세스가 필요하다. 전송층은 프로세스 통신에서 포트번호의 역할을 한다. 로컬호스트와 원격호스트는 IP주소를 사용하고 프로세스는 포트번호를 사용한다. 소켓 주소 : 각 종단점을 연결하기 위해 필요한 주소이다. IP주소 + 포트 번호를 합해서 만든다. 흐름제어 단어 그대로..

네트워크(10) - 인터넷 제어 메시지 프로토콜 ICMP

이전에 IP 프로토콜에서는 문제점이 있었다. 신뢰성이 없고 비연결형 데이터그램을 전달하고, 최선의 노력만 하며, 오류 보고 및 수정 기능과 오류제어와 해결 매커니즘이 없다. 또한 라우터나 다른 호스트가 동작하고 있는지 알 필요가 있다. 이 모든 문제를 보완하기 위해 설계된 것이 ICMP다. ICMP의 메세지는 두 가지 유형으로 나뉜다. 오류 보고 메시지 : 라우터나 호스트가 IP패킷을 처리하는 중에 발견되는 문제를 보고한다. 질의 메시지 : 호스트나 네트워크 관리자가 다른 라우터나 호스트로부터 특정 정보를 획득할 때 사용한다. 8바이트 헤더와 가변 길이의 데이터 부분을 가지고 있다. 코드 code 필드는 메시지의 유형의 이유를 지정한다. 헤더의 나머지 부분은 각 메시지 별로 다르다. 데이터 부분은 오류와..

네트워크(9) - 인터넷 프로토콜 IP

IP는 TCP/IP 프로토콜이 사용하는 전송 메커니즘으로, 신뢰성이 없고 최선의 노력으로 전달 서비스를 제공한다. 이 말인 즉슨, 데이터 전달에 최선을 다하기는 하나 오류가 생기거나 폐기되는 것에 대해 책임을 지지 않는다는 의미다. 데이터 그램 방식의 패킷 교환망을 위해 설계된 비연결형 프로토콜이기도 하다. 네트워크층에서 경로설정, 주소지정 등의 역할을 한다. 데이터그램 IP계층의 패킷을 의미한다. 길이는 가변적이며, 헤더와 데이터 부분으로 구성되었다. 헤더는 20~60바이트이며, 경로지정과 전달에 필요한 정보를 포함하고 있다. TCP/IP에서는 4바이트 단위로 표시한다. 헤더 내 필드는 다음과 같다. 버전 VER : 4비트로 구성되었으며, IP의 버전을 표시 헤더 길이 HLEN : 4비트로 구성, 데이..

네트워크(8) - 주소 변환 프로토콜 ARP

주소 변환 논리는 주소는 호스트나 라우터가 사용하는 32비트 길이의 전세계적으로 유일한 주소다. 물리주소는 로컬 네트워크에서 만 유효한 주소이다. 하드웨어로 구현된다. 패킷을 호스트나 라우터로 전달하기 위해 논리 및 물리 주소가 필요하며, 논리 주소를 물리 주소로 변환하거나 그 반대의 행위가 필요하다. 정적 변환 : 논리와 물리 주소 연관 테이블을 생성하여 필요 시 테이블에서 검색해 찾아내는 것. 동적 변환 : 논리나 물리 주소 중 하나만 알면 프로토콜을 이용해 다른 하나를 알아내는 것이다. ARP는 논리에서 물리 주소로 변환하는 것이고 RARP는 그 반대이나 현재는 사용하지 않는다. ARP는 논리주소를 물리주소로 변환시킨다고 하였다. 이는 네트워크층에 ICMP와 함께 자리해 있다. ARP 요청은 브로드..

네트워크(7) - 유선 이더넷

근거리 통신망 LAN 지역적으로 제한된 지역에서 독립적인 장치들이 서로 통신할 수 있는 데이터 통신 시스템을 일컫는다. 오늘날 LAN들은 대부분 WAN(광역 통신망)이나 인터넷에 연결한다. IEEE 표준 이더넷 무선 통신을 전제로 해서 단일 주파수 통신을 하는 무전기처럼 타인에게 이야기하는 동안은 그 상대방은 수신만 가능하다. CSMA/CD(충돌검출)방식을 사용한다. 논리 링크 제어 LLC : 흐름제어, 오류제어, 프레임 생성 일부분의 역할을 처리하는 부계층이다. 서로 다른 LAN 사이에 연결성을 제공하기도 한다. 매체 접근 제어 MAC : 프레임을 만드는 기능의 일부나 토큰에 대한 방식을 정의하는 기능을 담당한다. 이더넷 II 프레임 형식 프레임은 다음과 같은 6개 필드로 구성된다. 프리엠블 목적지 주..

알고리즘(17) - NP-완비

NP 완비 NP-complete 요약하자면, 현실적인 시간 내에 답을 얻을 수 있는 해법이 존재하는 것을 말한다. 여기서 이제까지 다룬 모든 알고리즘은 다항식 시간, 즉 입력 크기가 n일 때 최악의 경우에도 수행시간이 O(n^k)의 시간이 걸리는 알고리즘들이었다. 하지만 모든 문제를 컴퓨터로 다항식 시간에 풀 수 있지 않다. 정확히는 풀 수 있으나 현실적인 시간 내에 풀 수 없는 문제가 있고, 아무리 시간이 주어져도 풀 수 없는 문제가 존재한다. 간혹 들어보는 표현 중에 "슈퍼 컴퓨터로 몇 십년 이상 걸리는 문제"가 그것이다. P 는 polynomial이란 의미로, 문제가 주어졌을 때, 대답을 다항식 시간에 할 수 있는 문제이다. NP는 yes라는 근거만 주어지면 다항식 시간에 풀 수 있는 문제이다. N..

네트워크(6) - IP 패킷 전달과 포워딩

연결형 서비스 패킷을 보내기 전, 발신지의 네트워크층 프로토콜은 목적지의 프로토콜과 연결을 설정한다. (네트워크층의 경로설정) 연결 설정 이후, 패킷들을 순서대로 하나씩 전송한다. 모든 패킷을 전송하고 나면 연결이 해제된다. 비연결형 서비스 각 패킷이 독립적으로 처리되며 패킷 사이에 아무런 연관이 없다. 물론 목적지가 같더라도 다른 경로도 전달될 수도 있다. 패킷 포워딩 패킷 포워딩이란 패킷을 전달하는 방법을 의미한다. 포워딩 자체는 뒤에서 살펴보도록 하자. 네트워크층은 패킷이 목적지까지 갈 수 있도록 경로를 지정하여 관리한다. IP패킷을 목적지까지 보내기 위해 경로를 지정하는 방법이 필요한데, 다음 두 종류가 있다. 직접 전달 : 목적지가 전달자와 같은 네트워크에 위치한 호스트에게 전달하는 것을 의미한..

728x90
반응형