'Computer Science/Network Programming' 카테고리의 글 목록 — Archive

Computer Science/Network Programming

Computer Science/Network Programming

[Network Programming] I/O Multiplexing | 입출력 다중화

I/O Multiplexing 입출력 다중화 - TCP 소켓으로 연결된 두 Process들의 I/O Port가 두 개 이상인 경우에 행해지는 Multiplexing이다. - I/O Multiplexing은 네트워크 프로그램에 국한된 개념이 아니며, 다른 Application에서도 응용될 수 있다. * I/O Multiplexing이 필요한 경우 - TCP Client가 다수의 Descriptor를 처리해야 하는 경우 - TCP Client가 다수의 Socket을 동시에 처리해야 하는 경우 - TCP Server가 Listening Socket과 Connected Socket을 모두 처리해야 하는 경우 - Server가 TCP와 UDP를 동시에 지원해야 하는 경우 - Server가 여러 서비스 혹은 프로토..

Computer Science/Network Programming

[Network Programming] System Call | 시스템 콜

System Call 시스템 콜 - OS가 수행하는 Service를 프로그램에 제공하는 Interface 역할을 하는 함수이다. - C언어의 함수와 형태가 같으나, 실제로는 H/W Interrupt Instruction으로 구현되어 있다. Types of System Calls (시스템 콜의 종류) - 시스템 콜은 아래와 같이 4가지로 분류될 수 있다. 1) Process Manegement (프로세스 제어) - 프로세스 생성 : fork() - 프로세스 종료 : exec 계열 - 시그널 2) File, I/O Management (파일 및 입출력 관리) - 생성 및 종료 - 열기 및 닫기 - read 및 write 3) Communication (통신) - connect(), accept() 등 4) ..

Computer Science/Network Programming

[Network Programming] Process Model | 프로세스 구조

Process Model 프로세스 구조 * Process - 실행중에 있는, 메인 메모리에 Load되어 있는 프로그램이다. - 프로그램은 일련의 명령어로 구성된 파일이다. - 각 프로세스들은 독립적인 주소공간(Virtual Address)이 할당되어 각자의 Code를 처리한다. - Kernel 프로세스*를 제외한 모든 프로세스는 Parent 프로세스에 의한 fork()로 생성된다. (fork() 호출 이외의 방법은 없다.) - Kernel은 exec() System Call을 통해 프로그램을 메인 메모리에 Load하고, IP(Instruction Pointer)를 해당 프로그램의 시작 주솟값으로 설정하여 프로세스를 시작한다. (즉, exec() 계열 함수가 Loader의 역할을 하는 것이다.) * Ker..

Computer Science/Network Programming

[Network Programming] POSIX Signal Handling | POSIX 신호 처리

POSIX Signal Handling POSIX 신호 처리 - UNIX에서 Signal은 Process에 어떤 Event가 발생했음을 알리는 수단이다. - Signal은 Kernel이 User-Process에게 전달할 수도 있고, 다른 User-Process가 전달할 수도 있다. - Signal을 S/W Interrupt라 부르기도 한다. - 대부분의 Signal은 Asynchronous하게 발생되기 때문에, Process는 Signal이 발생한 정확한 시점을 알 수 없다. - Signal들은 발생했을 때의 대처방법인 Disposition(=Action)대로 수행된다. * signal Linux Manual Page (URL) Signal Dispositions (Signal Actions) - 발생한..

Computer Science/Network Programming

[Network Programming] Simple TCP Echo Client/Server | 단순한 TCP 에코 클라이언트/서버

Simple TCP Echo Client/Server 단순한 TCP 에코 클라이언트/서버 * Echo Client/Server 1) 클라이언트는 자신의 Standard Input 장치로부터 문자열을 읽어 서버로 보낸다. 2) 서버는 Network Input으로부터 하나의 String Line을 읽고 클라이언트에게 다시 되돌려보낸다. 3) 서버로부터 전달된 Echoed Line을 받은 클라이언트는 자신의 Standard Output 장치에 쓴다. - 클라이언트와 서버는 서로에게 데이터 송수신이 모두 가능한 Full-Duplex Connection 형태로 구성된다. TCP Echo Server (TCP 에코 서버) - 클라이언트로부터의 String을 Echo하는 서버이다. - 실질적인 Echoing은 Chi..

Computer Science/Network Programming

[Network Programming] TCP Socket | TCP 소켓

TCP Socket TCP 소켓 - TCP Client와 TCP Server간 통신의 전형적인 절차와 기본적인 소켓 함수들이 표현된 그림이다. System Call (시스템 콜) - System Call은 S/W Interruption이라 볼 수 있다. - 즉, User Mode에서 Kernel Mode로 전환된다. (본 프로그램은 User Process에서 구동되는 APP임에 유의하자.) - Control이 S/W Interrupt Handler가 있는 Procedure에게 넘어간다. - 이 때, 하나의 User Process 마다 하나의 Kernel Thread가 Mapping된다. - Kernel Thread는 Kernel 내에 구현되어 있는 Stack을 이용하여 작업을 수행한다. - User Pr..

Computer Science/Network Programming

[Network Programming] Socket Address | 소켓 주소

Socket Address 소켓 주소 - 소켓 주소 구조체는 OS Kernerl과 Process 사이를 양방향으로 오가며 전달될 수 있다. - 호스트와 호스트 사이에서는 소켓 주소 구조체 전체가 오가지 않으며, IP주소와 포트번호와 같은 일부 필드만을 주고받을 수 있다. * Socket - L4의 데이터를 주고받을 수 있게하는 S/W Object이다. - TCP에서 Kernel과 User Process 사이에서 Socket을 식별하기 위한 정보는 IP주소와 포트번호이다. - Transport Layer에서는 "Socket"이란 용어가 규정된 바가 없으며, "Socket"은 BSD 구현 시에 등장한 개념이다. * Datatypes required by the POSIX Specification Dataty..

Computer Science/Network Programming

[Network Programming] Transport Layer | 전송 계층

Transport Layer 전송 계층 - 전송계층(Layer-4)의 프로토콜로는 크게, TCP, UDP, SCTP가 있다. - 이들 프로토콜은 네트워크 계층(Layer-3)의 IPv4 혹은 IPv6 프로토콜을 이용한다. - Raw Socket이란, Layer-5(Application)이 Layer-4를 건너뛰고, Layer-3의 서비스를 이용하는 구조의 소켓을 의미한다. - Client-Server Program은 보통 TCP 혹은 UDP를 이용한다. - SCTP는 본래 인터넷을 통한 전화 서비스를 위해 설계되었다. TCP (Transmission Control Protocol) (URL) - 복잡하고, 신뢰도가 높은 Connection-Oriented Protocol이다. - Full-Duplex B..

lww7438
'Computer Science/Network Programming' 카테고리의 글 목록