공부한 이야기

    모두의 네트워크 III : 물리 계층

    III : 물리 계층 모두의 네트워크 을 읽고 정리한 문서입니다 ;) 모두의 네트워크 III : 물리 계층 데이터를 전기 신호로 변환하기 Lesson 9 : 물리 계층의 역할과 랜 카드의 구조 0과 1을 통해 네트워크 데이터를 송수신할 수 있도록 해주는 장비가 랜 카드이다. Lesson 10 : 케이블의 종류와 구조 네트워크의 데이터가 전송되는 경로로는 유선과 무선으로 나누어진다. 유선으로는 트위스트 페어 케이블, 광케이블 등이 있고, 무선으로는 라디오파, 마이크로파, 적외선 등이 있다. 트위스트 페어 케이블은 구리선을 꼬아 만드는 선으로서, UTP 케이블과 STP 케이블이 있다. UTP 케이블은 실드로 보호되어 있지 않은 선이기에 저럼하지만 노이즈의 영향을 더 받는다. 케이블의 종류로는 다이렉트 케이블..

    모두의 네트워크 II : 네트워크의 기본 규칙

    II : 네트워크의 기본 규칙 모두의 네트워크 을 읽고 정리한 문서입니다 ;) 모두의 네트워크 II : 네트워크의 기본 규칙 Lesson 7 : OSI 모델과 TCP/IP 모델 같은 회사의 컴퓨터끼리만 통신할 수 있는 시절이 있었기에, 이러한 문제를 해결하고자 ISO 국제표준화기구가 표준으로 규격을 만든 것이 OSI 모델 이다. 데이터의 송수신에 있어서 컴퓨터가 담당하는 여러 일을 일곱 개의 계층으로 나눈 계층, 즉 레이어들의 정의가 OSI 7 모델이다. 계층 이름 설명 7계층 응용계층 어플리케이션 서비스 제공 6계층 표현계층 데이터를 규격에 맞게 변환 5계층 세션계층 세션 체결과 통신 방식 동기화 4계층 전송계층 신뢰할 수 있는 통신 구현 3계층 네트워크계층 논리주소 설정 및 라우팅 2계층 데이터링크계..

    모두의 네트워크 I : 네트워크 첫걸음

    I : 네트워크 첫걸음 모두의 네트워크 을 읽고 정리한 문서입니다 ;) 모두의 네트워크 I : 네트워크 첫걸음 Lesson 1 네트워크의 구조 패킷은 네트워크를 통해 전송되는 데이터의 작은 조각을 의미한다. 거대한 데이터를 그대로 보내게 된다면, 그 데이터가 대역폭을 모두 차지해 버릴 테고, 에러 처리도 쉽지 않아진다. 하지만 이렇게 나눠서 관리하는 패킷 특성 상 수신 측에서는 순서에 맞게 기다리고 재배열해야 한다. 정리 컴퓨터 간의 연결을 컴퓨터 네트워크라고 한다 인터넷은 전 세계의 큰 네트워크부터 작은 네트워크까지 연결하는 거대한 네트워크이다. 패킷은 컴퓨터 간의 데이터를 주고받을 때 네트워크를 통해 흘러가는 작은 데이터 조각이다. Lesson 3 LAN & WAN 건물 안이나 특정 지역을 범위로 하..

    XI : 소켓 입출력 모델 II

    XI : 소켓 입출력 모델 II TCP/IP 윈도우 소켓 프로그래밍 을 읽고 정리한 문서입니다 ;) Overlapped 모델 (I) : Event 기반 Overlapped 모델은 10장에서 배운 소켓 입출력 모델과는 근본적으로 다른 입출력 방식으로 고성능을 제공한다. 원래 Overlapped 입출력 방식은 윈도우 운영체제에서 고성능 파일 입출력을 위해 제공하는데, 이를 소켓 입출력에도 사용할 수 있게 만든 것이 Overlapped 소켓 입출력 모델이다. 동기 입출력 동기 입출력은 전형적인 입출력 방식으로서, 프로그램은 입출력 함수를 호출한 후 입출력 작업이 끝날 때까지 대기한다. 입출력 작업이 끝나야 입출력 함수가 리턴한다. 10장의 Select 소켓 입출력 모델은 모두 동기 입출력 방식으로 소켓 입출력..

    X : 소켓 입출력 모델 I

    X : 소켓 입출력 모델 I TCP/IP 윈도우 소켓 프로그래밍 을 읽고 정리한 문서입니다 ;) 소켓 입출력 모델 개요 소켓 입출력 모델은 다수의 소켓을 관리하고 소켓 입출력을 처리하는 일관된 방식을 의미한다. 프로그래밍 복잡도는 높아지지만 시스템 자원을 적게 사용하면서도 다수의 클라이언트를 효율적으로 처리하는 서버를 만들 수 있게 된다. 소켓 모드의 종류 블로킹 소켓 소켓 함수 호출 시 조건이 만족되지 않으면 함수가 리턴하지 않고 스레드 실행이 정지된다. 논블로킹 소켓 소켓 함수 호출 시 조건이 만족되지 않더라도 리턴하고 다음 코드를 수행한다. 조건이 만일 만족되지 않는다면 WSAEWOULDBLOCK 코드를 리턴하므로 확인해야 한다. ioctlsocket() 함수를 호출하여 소켓 모드를 변경해야 논블로..

    IX : GUI 소켓 응용 프로그램

    IX : GUI 소켓 응용 프로그램 TCP/IP 윈도우 소켓 프로그래밍 을 읽고 정리한 문서입니다 ;) GUI 응용 프로그램 GUI 응용 프로그램의 핵심 특징은 메시지 구동 구조라는 것이다. 여기에서 메시지는 윈도우 운영체제가 응용 프로그램의 외부 혹은 내부에 변화가 발생했을 때 해당 응용프로그램에 알리는 데 사용하는 개념이다. 외부에서 메시지를 발생시키는 이벤트가 발생하면, 운영체제가 관리하는 시스템 메시지 큐에 정보가 저장된다. 이후 각 GUI 응용 프로그램은 자신의 응용 프로그램 메시지 큐를 이용해서 이 메시지를 전달받아, 하나씩 처리하고 메시지가 없을 때는 대기한다. 메시지를 받았을 때 동작을 결정하는 코드를 흔히 메시지 핸들러라고 부른다. 또 이 메시지 핸들러의 집합을 윈도우 프로시저 라고 부르..

    VIII : 소켓 옵션

    VIII : 소켓 옵션 TCP/IP 윈도우 소켓 프로그래밍 을 읽고 정리한 문서입니다 ;) 소켓 옵션의 종류와 관련 함수 소켓 프로그래밍은 소켓을 통해 TCP/IP, IrDA, Bluetooth와 같은 통신 프로토콜의 기능을 이용하는 응용 프로그램을 작성하는 일이다. 따라서 같은 소켓 함수를 호출하더라도 소켓 코드나 프로토콜 구현 코드의 동작이 달라질 필요가 있다. 이를 위해 소켓 옵션을 사용하면 소켓 함수의 기본 동작을 변경하고 제어할 수 있다. 소켓 옵션은 처리 주체에 따라 크게 두 종류로 구분할 수 있다. 소켓 코드가 처리하는 옵션 옵션을 설정하면 소켓 코드에서 해석하고 처리한다. 프로토콜 독립적인 성격이 있다. 프로토콜 구현 코드가 처리하는 옵션 옵션을 설정하면 프로토콜 구현 코드에서 해석하고 처..

    VII : UDP 서버-클라이언트

    VII : UDP 서버-클라이언트 TCP/IP 윈도우 소켓 프로그래밍 을 읽고 정리한 문서입니다 ;) UDP 서버-클라이언트 구조 TCP와 UDP는 전송 계층 프로토콜이라는 점에서 다음과 같은 공통점이 있다. 포트 번호를 이용해 주소를 지정한다. 데이터 오류를 체크해준다. 하지만 UDP는 비연결형 프로토콜이고 신뢰성이 없다는 점에서 다음 특징을 가진다. 연결 설정을 하지 않으므로 connect() 함수를 사용하지 않는다. 신뢰성이 필요하다면 응용프로그램 수준에서 이를 구현해야 한다. 다자간 통신을 쉽게 구현할 수 있다. 데이터 경계 구분을 위한 작업을 추가로 할 필요가 없다. UDP 서버의 동작은 클라이언트가 보낸 데이터를 recvfrom()을 통해 받고, 처리 후 sendto() 함수를 사용해 클라이언..