Server & Client

Server/Client

server 클라이언트의 요청 대기 -> 정보 및 서비스 제공

client 서버에서 제공되는 정보 및 서비스를 이용하는 호스트

서버에 정보 및 서비스의 제공을 요청하고 응답을 기다림

 

socket 네트워크로 입출력을 하기위해 사용자에게 필요한 수단을 제공하는 응용 프로토콜 인터페이스

입출력을 위한 요소

프로토콜, 소스,목적지의 IP, PORT


-Socket = 소켓 생성

-Bind = 소켓에 주소 정보 할당

 

네트워크 바이트 순서

Big-Endian 상위 바이트가 먼저, 네트워크 바이트 순서

Little-Endian 하위 바이트가 먼저, 호스트 바이트 순서

 

inet_addr = Dotted-Decimal Notation -> Big-Endian 32bit

listen = 서버가 클라이언트의 연결 요청 대기

connect = 클라이언트가 서버에 연결 요청

accept = 서버가 클라이언트에게 연결 요청 수락

recv(), send() =receive, send

close = 소켓 연결 종료

select

 

Select = 소켓의 I/O변화를 감지

 

Thread

프로세스의 문제점 : context switch overhead, 프로세스 생성 시간이 김, 동기화 오버헤드

프로세스는 여러 개의 쓰레드를 가질 수 있다.

함수호출 vs 멀티쓰레딩

비슷한 점 = 다른 함수나 쓰레드에서 선언된 변수를 접근할 수 없다.

전역 데이터와 힙영역은 모든 함수와 쓰레드가 공유

 

쓰레드는 쓰레드는 해당하는 스택이 하나씩 있고, 동시에 함수의 수행이 가능하다.

코드, 데이터, 파일은 공유하지만 레지스터와 스택은 개별

 

프로세스는 두 개의 컴포넌트로 나뉘어지는 복잡한 개체

쓰레드의 집합과 자원의 집합

수행 유닛은 쓰레드이며 수행환경을 제공해주고 쓰레드 id가 있다

pthread_self, create, exit, join, cancel(다른 쓰레드 제거), cleanup_push,pop 스택!

쓰레드 동기화

임계영역(critical section) = 둘 이상의 쓰레드가 공유하는 메모리 공간에 접근하는 코드영역

동기화 = 공유된 메모리에 둘 이상의 쓰레드가 동시 접근 막음, 실행순서 컨트롤

자체 동기화(pthread)

-mutex, lock and unlock

-mutex = 임계영역에 들어갈 때 잠그고 나올 때 풀고나옴(init, destroy, lock, unlock)

semaphore

하나 이상의 플레스가 동기화 또는 배제를 위한 목적으로 획득하거나 놓아주는 커널

(프로세스, 쓰레디 모두 적용)

wait, signal 함수로 접근 wait으로 세마포어를 획득하면 토큰이 감소, signal로 세마포어를 놓아주면 토큰의 수가 증가

세마포어가 생성될 때, 토큰도 생성됨

 

binary semaphore = 하나의 공유 자원에 직렬로 접근


세마포어 생성 -> 세마포어 연산 -> 세마포어 제어 -> 공유 자원 사용

semget = 세마포어 생성, 세마포어 설정을 확인

semop = 세마포어 조작, 세마포어 아디를 갖는 세마포어에 대해 연산을 수행

semctl = 세마포어 원소들은 사용되기 전에 semctl로 초기화

'SW > LINUX' 카테고리의 다른 글

IPC (Inter Process Communication)  (0) 2017.09.05
NETWORK (네트워크)  (0) 2017.09.05
GDB  (0) 2017.09.05
버전관리, SVN  (0) 2017.09.05
GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05

NETWORK (네트워크)

네트워크


프로토콜이란 컴퓨터와 컴퓨터 사이에서 데이터를 어떻게 주고받을 것인지를 정의한 통신규약


컴퓨터의 주소는 MAC, IP, 호스트 명 이 있다


MAC주소 : 6개의 16진수 (48비트) 제조사번호, 일련번호로 구성


IP주소 : 네트워크부분(네트워크 구분), 호스트 부분(해당 네트워크에서 컴퓨터 식별)으로 구성


호스트 명 : www(호스트 부분) naver.com(네트워크 부분)


포트번호 : 각 서비스를 구분하는 번호



Netstat : 네트워크 상태 정보 출력하기


o -a : 모든 소켓 정보를 출력한다.


o -r : 라우팅 정보를 출력한다.


o -n : 호스트 명 대신에 IP 주소를 출력한다.


o -i : 모든 네트워크 인터페이스 정보를 출력한다.


o -s : 프로토콜별로 네트워크 통계 정보를 출력한다.


o -p : 해당 소켓과 관련된 프로세스의 이름과 PID를 출력한다


 

호스트 이름 확인하기 : hostname, uname -n



Uname : 시스템 정보 출력


o -m : 하드웨어 종류를 출력한다.


o -n : 호스트 이름을 출력한다.


o -r : 운영체제의 릴리즈 정보를 출력한다


o -s : 운영체제의 이름을 출력한다.


o -v : 운영체제의 버전을 출력한다.


o -a : 위의 모든 정보를 출력한다.

 


 

원격 접속하여 파일 송수신 하는 서버 : 텔넷, SSH, FTP


텔넷 : 원격에서 리눅스에 접속하는 프로그램의 이름(서버와 클라이언트 필요) -> xinetd에 의해 동작(open 접속 quit 종료)


SSH : 텔넷과는 달리 모든 통신을 암호화한다 (SSH 데몬 필요)


FTP => vsFTPD(리눅스 FTP 서버)


Get : 파일 하나를 호스트로 가져온다. Mget : 여러 개의 파일을 가져온다


Put : 파일 한 개를 호스트로 보낸다. Mput : 여러 개의 파일을 보낸다.


Hash : 송수신이 진행되고 있는지 표시 bye : 접속 종료

'SW > LINUX' 카테고리의 다른 글

Server & Client  (0) 2017.09.05
IPC (Inter Process Communication)  (0) 2017.09.05
GDB  (0) 2017.09.05
버전관리, SVN  (0) 2017.09.05
GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05

'server'에 해당되는 글 2건

1 →