[네트워크] 4 & 5차시 - 응용계층(1), (2)

2023. 2. 22. 21:12CS/네트워크

728x90

//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎

 

 

응용계층의 개요에 대하여 설명한다. 클라이언트/서버, 소켓 통신에 대하여 배운다.

 

1. 응용계층

  • 카톡, 스타그래프트 같은 네트워크 게임, 인터넷 검색, 인터넷 브라우저 상의 응용(구글 검색, 웹툰, 신문, 블로그, 카페, 금융), 메일
  • 많은 서비스들을 서로 다른 프로토콜을 이용한다고 하면 문제가 많다. → 굉장히 많은 서비스들이 웹 브라우저를 사용, 인터넷 브라우저로 만들어진 HTML과 HTTP를 이용한 세션계층과 표현계층을 이용하면 응용계층만 구현하면 된다.
    • 큰 틀에서 봤을 때 대략 어떠한 구조를 가져갈 것인가?
    • 구조가 정의되어 있다면 기존의 세션, 프레젠테이션 계층을 사용할 수 있는가?

 

2. 네트워크 응용의 구조

  • Client - Server 구조: 응용을 서비스해 주는 컴퓨터를 따로 두는 구조, 안정적
    • 서버: 서비스를 제공해 주는 특별한 장치, 언제나 원하는 서비스를 받을 수 있다.
    • 클라이언트: 서비스 요청
    • 예) 웹 검색(언제나 서버가 켜져 있는 구조)
  • Peer-to-Peer(P2P) 구조: 클라이언트나 서버란 개념 없이, 오로지 동등한 계층 노드들(peer nodes)이 서로 클라이언트와 서버 역할을 동시에 네트워크 위에서 하는 구조
    • 예) 토렌트(원하는 파일을 제공하는 다른 사용자가 없다면 파일을 받을 수 없다)
  • 하이브리드 구조: 필요할 때는 서버가 관여하지만, 둘이 직접 연결할 수 있을 때에는 직접 연결하는 구조, 효율적
    • 예) skype(인터넷 전화 통화): 누가 접속을 했고, 전화를 걸 때 누구에게 어떻게 전화를 걸지에 대해서는 서버가 관리를 하지만, 통화를 시작하게 되면 통화를 하는 연결 자체에는 서버가 관여하지 않음
    • 예) 스타크래프트: 누가 접속 했고 등의 게임 시작 전까지는 서버가 관리하지만 게임 시작 후에는 정보가 세팅되어 있기 때문에 실제 게임은 P2P

 

3. 프로세스 간 통신

  • 응용계층을 설계하기 위해서는 통신계층이 어떠한 방법론을 제공하는지를 알아야 제대로 된 응용계층을 만들 수 있다.
  • 응용: 네트워크로 연결된 컴퓨터들이 협력하여 제공하는 서비스
    • 예) 구글 검색: 클라이언트 단말 - (네트워크) - 서버 단말의 협력
  • 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
    • 클라이언트 단말에서 웹 브라우저를 띄우면 → 하나의 컴퓨터에서 독립된 메모리 공간에서 웹 브라우저가 동작 → 웹 브라우저 하나는 하나의 클라이언트 프로세스가 됨 → 클라이언트 프로세스는 웹 서버 프로세스에게 통신을 요청 → 웹서버가 그에 대한 응답을 웹 브라우저에게 줌
      • 전체를 아우르는 것을 하나의 응용
      • 응용을 구성하는 각 컴퓨터에서 돌아가는 독립적인 프로그램을 프로세스라고 부름
  • 프로세스 간 통신: 응용을 이룰 때 어떻게 웹브라우저가 웹서버와 통신을 하게 될 것인가
    • 클라이언트 프로세스
    • 서버 프로세스
    • 피어 프로세스
  • 프로세스 주소: 어떻게 프로세스를 찾을 것인가, IP 주소 + 포트 번호
    • 기계 주소: IP 주소: xxx.xxx.xxx.xxx
      • xxx는 0에서 255 사이의 정수 값을 가짐, 256 ^ 4까지 표현(2^32 = 약 40억)
      • 176.37.1.4는 하나의 IP 주소 - 원칙적으로는 각 IP 주소가 하나의 기계를 가리켜야 하지만 IP 주소의 개수에 한계가 있기 때문에 IP를 나누어 쓴다.
    • 포트번호: 패킷이 누구에게 가는지를 찾기 위한 이름표
      • 2^16개의 TCP와 2^16개의 UDP → 총 2^32개의 포트
      • 주로 TCP 포트를 사용, UDP 포트는 제한적인 경우에 사용
      • 176.37.1.4의 TCP 80에 접속하면 클라이언트가 보낸 패킷은 웹 서버에게
      • 176.37.1.4의 TCP 24에 접속하면 클라이언트가 보낸 패킷은 메일 서버에게
      • 클라이언트의 웹브라우저는 포트 번호가 정해져 있지 않음
        • 클라이언트의 프로그램은 언제나 서버 프로그램에 접속하지만 보통은 서버 프로그램이 클라이언트 프로그램에 먼저 접속하지는 않음
        • 편지봉투에 보내는 사람과 받는 사람의 주소가 모두 적혀 있기 때문에 웹서버에서 응답을 보낼 수 있다.
  • 소켓 통신: 응용 계층을 위한 API
    • 소켓: 전송계층과 세션계층을 연결해 주는 일종의 인터페이스
      • 통신을 하게 되면 마구잡이로 통신하는 것이 아니라 한 번 대상을 잡으면 그 대상과 자주 통신을 함
        private channel에 하나의 소켓을 열어두면 받는 사람의 주소, 나의 주소를 일일이 적지 않아도 만들어 둔 소켓을 통해서 연결된 대상과 주기적으로 통신할 수 있다.

 

4. 인터넷 전송계층의 서비스

  • TCP: 연결기반 전송 계층
    • 두 개의 프로세스의 소켓을 열고 네트워크로 연결한 후에 통신
    • 연결에 대한 관리
      • 데이터 유실 - 패킷은 언제든 유실될 수 있음(스위치가 죽거나, 잡음으로 패킷이 깨지거나, 데이터가 너무 많아서 스위치가 데이터를 잃어버릴 수 있음)
        데이터 유실 복구 서비스 제공 ~ 한 번 보낸 패킷은 반드시 목적지에 도착한다고 가정하며 프로그래밍할 수 있음
    • 데이터 순서 보장
    • 혼잡에 민감한 패킷 전송률 조정: 패킷의 유실률이 높으면 네트워크가 혼잡하다고 판단해서 데이터를 천천히 보냄
  • UDP: 무연결 전송 계층
    • 두 개의 프로세스의 소켓은 열지만 연결은 없음
    • 연결을 만들어 놓지 않고 매 패킷마다 받는 사람의 주소를 써서 패킷에 담아 보냄
    • 연결에 대한 관리가 없음
      • 데이터 유실 가능: 데이터가 사라지면 그냥 사라지는 것
    • 데이터 순서 역전 가능
    • 최대한 성능으로 패킷 전송(실시간성 중요)

 

[복습]

  1. 기존의 세션계층과 표현계층을 사용해서 새로운 응용 계층을 구현할 수 있는지
  2. 네트워크 응용의 구조
    1. Client-Server 구조: 응용을 서비스해 주는 컴퓨터를 따로 두는 구조
    2. Peer-to-Peer 구조: client와 server가 구분되어 있지 않고 서로가 동시에 client와 server 역할을 하는 구조
    3. 하이브리드 구조: 필요할 때는 서버가 관여하지만, 둘이 직접 연결할 수 있을 때에는 직접 연결하는 구조
  3. 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
  4. 프로세스 간 통신: 클라이언트 프로세스, 서버 프로세스, 피어 프로세스
  5. 프로세스 주소: IP 주소 + 포트 번호
    1. 클라이언트의 웹브라우저는 포트번호가 정해져 있지 않지만, 보통 클라이언트 프로그램이 서버 프로그램에 먼저 접속하기 때문에 클라이언트가 보내는 편지봉투(소켓)에 있는 출발지, 목적지 정보를 통해 클라이언트 프로그램에 접속할 수 있다.
  6. 소켓: 전송 계층과 세션 계층을 연결해 주는 일종의 인터페이스로 각각 하나의 소켓을 private channel에 열어두면 출발지와 목적지를 일일이 적지 않아도 만들어둔 소켓을 통해서 연결된 대상과 주기적으로 통신할 수 있다.
  7. TCP: 연결 기반 전송 계층
    1. 연결에 대한 관리를 하기 때문에 패킷 유실 복구 서비스 제공, 데이터 순서 보장, 혼잡에 민감한 패킷 전송률 조정
  8. UDP: 무연결 기반 전송 계층
    1. 연결에 대한 관리를 하지 않기 때문에 패킷이 유실될 수 있다, 데이터의 순서가 역전될 수 있고 최대한의 속도로 패킷을 전송하기 때문에 실시간성이 중요한 곳에 사용됨(ex. 비행기)

 

 

 

 


한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다감사합니다.

http://www.kocw.net/home/m/cview.do?lid=84f7de186deb824c 

 

컴퓨터 네트워크

현대의 컴퓨터는 네트워크와 분리해서는 생각할 수 없다. 수많은 정보의 교류, 부가가치의 창출은 모두 네트워크를 통해서 이루어 진다. 본 과목에서는 컴퓨터 네트워크의 구성요소를 이해하고

www.kocw.net

http://www.kocw.net/home/m/cview.do?lid=c0f5c5b5174a36a4 

 

컴퓨터 네트워크

현대의 컴퓨터는 네트워크와 분리해서는 생각할 수 없다. 수많은 정보의 교류, 부가가치의 창출은 모두 네트워크를 통해서 이루어 진다. 본 과목에서는 컴퓨터 네트워크의 구성요소를 이해하고

www.kocw.net

http://www.kocw.net/home/m/cview.do?lid=880966f63e3631a3 

 

컴퓨터 네트워크

현대의 컴퓨터는 네트워크와 분리해서는 생각할 수 없다. 수많은 정보의 교류, 부가가치의 창출은 모두 네트워크를 통해서 이루어 진다. 본 과목에서는 컴퓨터 네트워크의 구성요소를 이해하고

www.kocw.net

 

728x90