CS/네트워크

OSI 7계층과 Socket Programming

코딩하는 포메라니안 2021. 9. 22. 16:40

1. OSI(Open System Interconnection)

- 호스트 간의 통신을 위해 기능들을 계층 별로 구분하여 정의한 것

 

 

1. Physical Layer (물리 계층)

- 물리적 연결 형태(유선 or 무선)

 

2. Data Link Layer (데이터 링크 계층)

- MAC 주소(host의 물리적 주소) 사용

- 물리적 전송 오류 문제 해결 ex) 0101 => 1101 으로 변경된 경우

 

3. Network Layer (네트워크 계층)

- 데이터 전송 경로 결정

- IP주소(인터넷 접속시 할당되는 논리적 주소) 사용

- Router가 IP주소를 보고 목적지까지 안내

 

4. Transport Layer (전송 계층)

- Port 번호(process 구분) 사용

 

5. Session Layer (세션 계층)

- 송수신 호스트를 연결하는 세션 지원

ex) web page에 로그인하여 언제까지 유효하게 할 것인가?

 

6. Presentation Layer (표현 계층)

- 데이터의 의미 & 표현 방법을 처리

ex) 암호화 압축, 동영상(이미지&소리 연관성)

 

7. Application Layer (응용 계층)

- 사용자가 사용하는 프로토콜

ex) 메일, HTTP

 

+) 시스템공간(1-4 계층) : 운영체제 수준에서 정의

+) 사용자공간(5-7 계층) : 사용자가 정의한 프로그램에 따라 동작

 

 

 

2. Application 구조

1. 서버-클라이언트 구조

1) 서버

- 항상 동작중

- 고정 IP 사용

 

2) 클라이언트

- 서버에 서비스 요청

- 동적 IP 사용 가능

- 클라이언트 간의 직접적 통신 불가 : 서로 언제 들어와있는지 불명확하기 때문

 

 

2. P2P (Peer-to-Peer)

- 호스트간 직접 통신 가능

- IP 변경 가능

- 특정 단말에 부하(load)가 집중되지 않는다.

 

 

 

3. Socket Programming

 

 

- 소켓을 이용한 네트워크로 연결된 컴퓨터 사이에서의 데이터 송수신 프로그램

 

1. Socket

- 운영체제에 의해 제공되는 소프트웨어적 장치 (1~4계층 담당)

- socket의 주소정보 = IP와 PORT 번호로 구성

 

 

2. Server

 

- Server는 기본적으로 2개의 socket이 필요하다.

          1) 연결 요청 받기 위한 socket

          2) client와 데이터 송수신을 위한 socket

 

- 동작 과정

1) socket() : 소켓 생성

2) bind() : IP, Port 번호 할당

3) listen() : 연결 대기 (큐 생성)

4) accept() : 연결 요청 수락

5) write() & read() : 송수신

6) close() : 소켓 소멸

 

 

3. Client

- 동작 과정

1) socket() : 소켓 생성

2) connect() : 연결 요청

3) read() & write() : 송수신

4) close() : 소켓 소멸

 

'CS > 네트워크' 카테고리의 다른 글

DNS 서버  (0) 2021.09.22
Network Layer  (0) 2021.09.22
TCP/IP 프로토콜  (0) 2021.09.22
IP주소와 Port 번호  (0) 2021.09.22