본문 바로가기

CS/컴퓨터 네트워크

6. 어플리케이션 레이어 : 클라이언트-서버, P2P

* 인터넷을 사용하는 모든 어플리케이션

이메일, 웹, text messaging, remote login, p2p file sharing, game, video streaming, voice over ip, 등

 

* 네트워크를 지원하는 프로그램 작성 방법

- 사용하는 디바이스에서 카톡, 크롬, 네이버 등 다른 누군가와 통신할 때 데이터를 주고받을 수 있는데

  이 때 네트워크를 지원하는 프로그램 작성 방법 

  : end system, p2p, client-server 등의 상황에서의 각 end system에서 프로그램을 구현하고 소켓만 구현하면 통신 가능

어플리케이션 레이어에서는 end에서 client-server, p2p 등 어떤 구조를 할지 결정

트랜스포트 레이어에서 어떻게 메세지를 사용해서 전달할 건지 (tcp, udp)를 명시

 

* 인터넷 사용 어플리케이션 두가지 패러다임

- 클라이언트 서버 아키텍처

  서버 : 데이터를 제공하고 항상 켜져있어야함. 클라이언트 요구시 바로 응답할 수 있어야 함

              영구적인 ip주소가 있어야함, ip주소가 바뀌면 클라이언트가 위치를 찾을 수 없음

              얼마든지 확장이 가능해야 함

   클라이언트 : 서비스를 사용하는 입장이라서 커넥션은 항상 켜져있지 않아도 되고 간헐적으로 인터넷 사용 가능

                           dynamic ip address를 받을 수 있음 . 그래서 p2p(ip끼리 연결) 불가능

 

- peer to peer 아키텍처

   항상 켜져있는 서버가 필요없다는 장점이 있음

   서로 다른 end system끼리 직접적 통신이 가능

   서버를 우회할 수 없음

 

* 프로세스 커뮤니케이션

인터넷 상에서 어플리케이션으로 데이터를 주고 받는 것은 프로세서간의 커뮤니케이션으로 프로세스임

호스트 디바이스, 웹 브라우저, 카카오톡 등의 어플리케이션이 상대방 어플리케이션으로 메세지를 보냄

- 클라이언트 서버 모델 : 클라이언트가 메세지를 initiate -> 서버는 요구를 계속 확인 -> 요구가 오면 바로 응답하는 형태

- p2p : 어떤 end system이 클라이언트 서버 역할을 모두하고 메세지를 서로 initiate, 응답 모두 가능

 

* 소켓

메세지를 받고 보낼 때 내가 보낸 거라고 정체성을 나타내기 위해서 ip주소를 사용 4개의 바이트 이용(ipv4)

ip address는 어떤 프로세스와 통신하는 지 정확하게 식별할 수 없어서 port번호를 사용

-유명한 프로토콜의 well known : http 80, 8080 / 메일서버 25

 

데이터 플로우 : 네트워크 상에서 같은 송신디바이스와 수신디바이스의 프로세스 간 통신흐름

플로우1, 플로우2 이렇게 나눠서 부르는데 5tuple 사용

ip address + port number + protocol 이렇게 5개 튜플이 데이터 플로우를 결정

동일한 sender, receiver간 여러개의 플로우 정의 가능

 

* 인터넷 사용 어플리케이션의 요구

데이터 손실, 무결성, 처리 속도, 타이밍, 등

 

* 트랜스포트 서비스에서 사용하는 프로토콜 - tcp, udp

- tcp : 데이터 무결성 reliable, 흐름제어, 혼잡제어 제공/ 타이밍, 최소 처리 속도, 보안 제공 안함/ 연결 지향형 

- udp : unreliable/ 흐름제어, 혼잡제어, 보안, connection setup 모두 지원 안함

- tcp는 20바이트, udp는 8바이트 사용해서 udp는 오버헤드가 적음

- 오디오나 비디오는 데이터가 중간에 없거나 살짝 바뀌어도 상관없고 최대한 빨리 통신을 해야해서 udp 사용