익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
Network Programming 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
Network Programming
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[컴퓨터 시스템]], [[컴퓨터 네트워크]] ==개요== 네트워크 애플리케이션은 컴퓨터 시스템의 많은 개념에 의존한다. 예를 들어, [[Process|프로세스(process)]], [[Signal|시그널(signal)]], [[Endianness|바이트 순서(byte ordering)]], 메모리 매핑(memory mapping), 동적 저장소 할당(dynamic storage allocation) 등이 모두 중요한 역할을 한다. 또한 application layer에서의 개념, [[Application Layer#Client-server architecture|클라이언트-서버(client-server)]] 구조 등에 대한 개념도 필요하다. 즉, 네트워크 프로그래밍은 네트워크 그 자체는 물론, 컴퓨터 시스템과도 땔려야 떌 수 없는 사이이다. 이 모델에서는, 하나의 애플리케이션이 서버 프로세스(server process)와 하나 이상의 클라이언트 프로세스(client process)로 구성된다. ==The Client-Server Programming Model== 거의 모든 네트워크 애플리케이션은 클라이언트-서버 모델에 기반한다. 이 모델에서는, 하나의 애플리케이션이 서버 프로세스(server process)와 하나 이상의 클라이언트 프로세스(client process)로 구성된다. '''서버는 어떤 자원(resource)을 관리'''하고, 이 '''자원을 적절히 다루어서 클라이언트에게 서비스를 제공'''한다. Figure 1에 나타나 있듯이, 클라이언트-서버 모델에서 기본적인 동작은 '''트랜잭션(transaction)'''이다. 이는 다음의 네 단계로 구성된다:[[파일:A client-server transaction.png|대체글=Figure 1. A client-server transaction|섬네일|Figure 1. A client-server transaction|가운데|500x500픽셀]] # 클라이언트가 트랜잭션을 시작하기 위해<ref>서비스를 받기 위함이다.</ref> 서버에 요청(request)을 보낸다. #* 예를 들어, 웹 브라우저가 파일을 필요로 할 때, 웹 서버에 요청을 보낸다. # 서버는 요청을 수신하고(receive), 이를 해석하고(interpret), 적절한 방식으로 자원을 조작(manipulate)한다. #* 예를 들어, 웹 서버가 브라우저로부터 요청을 받으면, 디스크 파일을 읽는다. # 서버는 클라이언트에게 응답(response)을 보낸 다음, 다음 요청을 기다린다. #* 예를 들어, 웹 서버는 파일을 클라이언트에게 전송한다. # 클라이언트는 응답을 수신하고, 이를 사용한다. #* 예를 들어, 웹 브라우저가 서버로부터 페이지를 수신한 후, 이를 화면에 표시한다. 이때 주의할 점은, 클라이언트와 서버는 프로세스이지, 호스트(host), 즉 실체적인 기계가 아니라는 것이다. 하나의 호스트는 서로 다른 여러 클라이언트와 서버를 동시에 실행할 수 있으며, 클라이언트와 서버 간의 트랜잭션은 동일한 호스트 내에서 일어날 수도, 서로 다른 호스트에서 일어날 수도 있다. ===Hardware organization of a network host=== [[파일:Hardware organization of a network host.png|대체글=Figure 2. Hardware organization of a network host|섬네일|Figure 2. Hardware organization of a network host]] Figure 2는 호스트가 어떻게 하드웨어적으로 구성되어 있는지를 보여준다. # '''CPU chip''' #* 내부에 레지스터 파일(Register file)과 ALU(Arithmetic Logic Unit, 산술논리연산장치)가 있다. #* Bus interface를 통해 시스템의 다른 부분과 연결된다. #* System bus를 통해 CPU는 외부의 I/O bridge로 데이터를 주고받는다. # '''I/O bridge''' #* 시스템의 중심적인 연결 지점이며, System bus 와 Memory bus, 그리고 I/O bus 사이를 연결해주는 다리 역할을 한다. #* CPU와 메인 메모리 및 다양한 주변장치들 간의 데이터 흐름을 조정한다. # '''Main memory''' #* Memory bus 를 통해 I/O bridge에 연결되며, CPU가 직접 읽고 쓰는 기본적인 저장공간이다. #* 네트워크로부터 수신된 데이터나, 네트워크로 보낼 데이터도 여기에 저장된다. # '''I/O bus''': 다양한 입출력 장치들을 연결하는 버스이며, I/O bridge를 거쳐 CPU 및 메모리와 통신한다. # USB controller: 마우스나 키보드 같은 장치를 USB를 통해 연결하고 제어한다. # Graphics adapter: 모니터와 연결되어 화면 출력(Display)을 담당한다. # Disk controller: 파일 시스템에 저장된 데이터에 접근하기 위해 하드디스크와 같은 저장장치를 제어한다. # Expansion slots: 추가적인 장치를 설치할 수 있는 슬롯이며, 네트워크 어댑터도 해당 슬롯에 장착된다. # Network adapter: 네트워크와 직접 연결되는 하드웨어이며, 데이터가 이 어댑터를 통해 입출력된다.<ref>보통 이더넷 카드(Ethernet card)라고도 불린다.</ref> # '''Network''': 외부의 다른 호스트들과 연결된 네트워크(예: LAN, WAN)를 의미하며, 호스트에게는 단지 데이터를 위한 입력과 출력을 제공하는 I/O 장치로 여겨진다. ===Computer Networks=== 네트워크란, 지리적 근접성에 따라 조직된 상자(box)들과 선(wire)들의 계층적 시스템이다. 이때, 물리적인 근접성에 따라 다음과 같이 구분된다: * SAN (System Area Network): 한 클러스터 또는 머신룸(서버실)을 연결하는 네트워크이다. ** 예: 스위치드 이더넷(Switched Ethernet), Quadrics QSW 등 * LAN (Local Area Network): 어떤 건물이나 캠퍼스 단위에 걸쳐 있는 네트워크이다. ** 예: 이더넷(Ethernet) * WAN (Wide Area Network): 나라 전체나 전 세계에 걸친 네트워크이다.<ref>보통 고속 점대점 전화선(point-to-point phone lines) 을 통해 연결된다.</ref> 인터넷(internet)은 여러개의 네트워크들을 상호 연결한 것이다. 또한 대중적으로 알려져 있는 Global IP Internet<ref>대문자 "I"의 Internet이다.</ref>은 인터넷<ref>소문자 "i"의 일반적인 internet에 해당한다.</ref>의 가장 일반적인 한 형태이다. ==각주== [[분류:컴퓨터 시스템]] [[분류:컴퓨터 네트워크]]
Network Programming
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록