응용 계층 소개
- 이용자, 혹은 프로그램(프로세스)에게 서비스 제공
- 프로그램을 위한 다양한 네트워크 서비스 제공
- 원격컴퓨터접근, 파일전송, 이메일전송, ...
서비스 제공
- 표준(standard) 응용계층 프로토콜
- (보통 RFC 표준 문서와 절차를 통해서 그 내용을 구현함)
- 비표준(nonstandard, proprietary) 응용계층 프로토콜
- (개인적인 그룹, 집단에서 자체적으로 구현한 것)
응용계층 패러다임
- Client-server paradigm
- Traditional paradigm
- Peer-to-peer paradigm
- New paradigm
- Mixed Paradigm
클라이언트-서버 프로그래밍
- 클라이언트는 통신을 시작하고, 요청을 보내는 프로그램
- 서버는 클라이언트의 요청을 서비스하는 응용 프로그램
- 서비스 유형
- TCP
- ex) 웹, 이메일...
- UDP
- ex) DNS, 인터넷 전화...
- TCP
- 서버 동작 구현 방법
- 반목적(Iterative)
- 동시적(등시적, Concurrent)
- (대부분 서버가 동시적임)
API
- Application Programming Interface
- 어플리케이션을 만들기 위한 하위 함수, 프로토콜, 도구들의 집합
- (보통 OS쪽에서 많이 제공해줌)
- 호출 이름, 파라미터 개수, 타입, 리턴값 등이 정해져 있음
- (==> 형식이 정해져있다)
- 종류
- Windows API
- Socket API
- OPEN API (Web)
전송계층 사용
- 인터넷에서의 서비스는 한 쌍의 프로세스에 의해 제공
- 프로세스는 인간이나 프로그램
- 한 쌍의 프로세스는 두 응용계층 간에 직접 연결이 없으므로 전송 계층의 서비스를 필요로 함
- 전송계층 프로토콜은 UDP, TCP, SCTP
UDP 반복적 서비스
실제로는 Concurrent가 대부분이지만 반복적으로 구현해보겠다
- 반복적 서버는 한번에 하나의 클라이언트 요청 처리
- 요청을 받고, 처리하고, 응답을 보내나서, 다음 요청을 처리
- 하나의 요청을 처리하는 동안에, 다른 클라이언트의 요청이나, 같은 클라이언트의 다른 요청도, 기다려야 함
- 수신되고, 큐에 기다리는 요청은 선입선출 방식으로 처리
반복적 TCP 서비스
- 반복적 TCP 서비스는 자주 사용되지 않음
- 동작이 간단하므로 이 섹션에서 고찰해 봄
동시적 통신
- 등시 서버는 동시에 여러 클라이언트의 요청을 처리
- 다양한 언어가 이 방식을 지원
- C에서는 여러 자식 프로세스가 각각의 요청을 따로 처리
- Java에서는 각각의 쓰레드(thread)가 요청을 따로 처리
C 반복적 프로그래밍
일반적 이슈
- 소켓은 송수신 버퍼를 가지지 않는다
- 데이터를 보내거나 받는 기능이 소켓에 있는 것이 아니다.
- 소켓은 단지 참조 레이블이다.
- 예)파일핸들
- 버퍼나 변수들은 운영체제 내에 있다.
소켓 구조
- Family
- PF_INET : IPv4
- PF_INET6 : IPv6
- Type
- SOCK_STREAM : TCP
- SOCK_DGRAM : UDP
- SOCK_RAW : IP
- (일반적으로 TCP/UDP를 사용하는데, IP를 RAW로 사용할 수도 있다)
- Protocol
- 0 : TCP/IP
C header files
UDP 반복적 프로그래밍
여기서 Echo는 클라이언트가 서버에게 데이터를 보내면, 서버는 받은 데이터를 클라이언트에게 그대로 반향시켜 data가 잘 전달됬다는 것을 알려줌
- Echo Client
- Send a short string of character to server
- Echo Server
- Echo back to client
- Server 프로그램 동작
- Scoket()으로 소켓 생성
- Bind()로 지정된 서버 주소와 포트 설정
- Recvfrom()을 호출하면 데이터가 올 때까지 블록(block)됨
- Sendto()로 데이터 송신
- Client 프로그램 동작
- Socket()으로 서버측 주소로 가는 클라이언트 소켓 생성
- Sendto(), recvfrom()으로 데이터 송수신
- (보내고:Sendto 데이터가 올 때 까지 기다림:recvfrom)
서버
클라이언트
'Computer Science > 네트워크' 카테고리의 다른 글
[컴퓨터네트워크] 14. 표준 클라이언트/서버 프로토콜 (1) (0) | 2024.05.23 |
---|---|
[컴퓨터네트워크] 13. 응용계층 소개(2) (0) | 2024.05.23 |
[컴퓨터네트워크] 11. 전송계층 프로토콜(2) (0) | 2024.05.22 |
[컴퓨터네트워크] 10. 전송계층 프로토콜(1) (0) | 2024.05.19 |
[컴퓨터네트워크] 09. 전송계층(2) (0) | 2024.05.18 |