IT 프로그래밍/컴퓨터네트워크

[컴퓨터네트워크] 2강 part1 응용계층 프로토콜

기술1 2024. 10. 6. 10:40
반응형

응용계층 프로토콜 개념

네트워크 어플리케이션은 다른 종간 시스템에서 동작하는 것으로 네트워크를 통해서 서로 통신합니다.

ex)웹은 웹과 웹서버가 인터넷통신을 통해서 연결됩니다.

 

네트워크 코어 장비에서 동작하는 소프트웨어를 만들 필요는 없습니다.

 

application architectures

 

Client-server

네트워크는 클라이언트와 서버로 구분이 됩니다.

 

서버

  • 클라이언트에게 요청된 서비스를 제공
  • 항상 동작해야하고 고정IP를 가집니다.
  • 웹서버 같은 것이 예시

클라이언트

  • 서버의 접속을 개시
  • 서버로부터 서비스를 요청
  • 간혈적으로 접속
  • 일반적으로 동적IP를 가집니다. 대표적으로 웹 브라우저

Pure P2P architecture

순수 p2p의 경우 서버를 가지지 않는 구조가 됩니다. 두 통신 개체가 서로 통신을 상호작용 할 때 어떤 한 개체가 서버 역할을 하고 다른 한 개체가 클라이언트가 아닌 상황에 따라서 서버, 클라이언트가 바뀌는 것입니다. 

 

각 개체는 peer라고 부릅니다. peer가 다른 peer에게 서비스 요청을 하면 해당되는 peer가 그 요청된 서비스를 제공합니다. 고정된 개체가 없기 떄문에 피어들은 간혈적으로 인터넷에 사용이 되고 계속해서 변하는 IP 주소를 가집니다. 대표적인 예시로 Gnutella가 있습니다. 

 

하지만 이 peer 각각을 관리하기 어렵다는 단점이 있습니다.

 

Hybrid of client-server and P2P

P2P가 구현이나 관리가 어렵기 때문에 이를 쉽게 하기 위해서 클라이언트, 서버를 결합시킨 것입니다.

 

Napster

  • 파일 전송은 p2p
  • 파일 검색은 client-server 방식

Instant messaging

  • 사용자들간의 채팅은 P2P
  • 네트워크 로그인 등 presence detection/location은 centralized로 이룽집니다.

Skype

  • 사용자들간의 소통은 P2P로 이루어지고
  • 나머지는 Centralized방식을 사용합니다.

프로세스 커뮤니케이팅

프로세스 

호스트에서 동작하는 프로그램

 

동일 호스트 내에서 두 프로세스는 inter-process communication(IPC)를 사용하여 통신합니다. 이 IPC는 운영체제를 통해서 관리가 됩니다.

 

다른 호스트에서 수행되는 프로세스들은 응용 계층 프로토콜로 통신합니다. 즉 네트워크를 통한 메시지  교환으로 가능합니다.

  • 클라이언트 프로세스 : 통신을 시작하는 프로세스
  • 서버 프로세스 : 클라이언트의 요청을 대기하는 프로세스

P2P architecture는 클라이언트와 서버 프로세서 둘 다를 가집니다.

 

소켓

프로세스는 소켓을 통해 메세지를 송수신합니다. 

  • 소켓 : 호스트내의 응용 계층과 전송 계층 사이의 인터페이스
  • 어플리케이션과 네트워크 간의 API

응용계층의 프로세스가 통신을 해야할 때 소켓이라는 것을 통해서 전달할 메세지를 소켓에 주면 끝입니다. 아래쪽에 무엇이 있는지 어플리케이션이 생각할 필요가 없고 소켓에 주면 전송 인프라가 수신측에게 전달을 해줍니다. 수신측도 read만 하면 됩니다.

 

어플리케이션 프로세스는 개발자가 제어를 해주면 되고 나머지 하위는 OS가 관리합니다.

 

개발자가 고려할 부분

  • 전송계층 프로토콜을 무엇을 쓸지
  • 버퍼, 세그먼트 크기 고려

식별자

특정 호스트를 32비트로 구분한다고 해도 많은 프로세스가 같은 호스트에서 동작중이기 때문에 추가적인 정보가 필요합니다. 이는 IP address와 port를 하나로 묶어서 식별자로 사용합니다. 이 쌍으로 구분을 하며 포트 넘버는 전송계층에서 포트넘버에 대해서 설명하겠지만 HTTP server는 80, Mail server는 25에 속합니다.

 

HTTP 메세지를 전달한다면 IP address가 주어지고 port number 두가지 쌍으로 특정 호스트의 프로세스를 구분해냅니다. 

반응형