본문 바로가기
Back-end

CS study 개념정리 (3) - Transport Layer(1)

by kkkdh 2022. 11. 18.
728x90

network application program은 다음의 두 가지 구조 중 하나를 따른다. network application protocol 또한 마찬가지이다.

  1. client-server
  2. peer-to-peer (P2P)

주의 - 통신의 주체는 호스트 자체가 아니라 호스트에서 실행되고 있는 프로그램(= process)이다.


client - server architecture

커뮤니케이션의 두 주체 중 하나는 서버, 나머지 하나를 클라이언트라고 부른다.

 

서버와 클라이언트의 특징

 

Server

  • 항상 켜져 있는 host
  • 영구적인 IP 주소
  • 다수의 client에 응답 가능한 data center의 형태

Client

  • 서버와 통신
  • 클라이언트 끼리는 통신하지 않는다.
  • 통신할 때만 켜져있는 상태
  • 동적 IP 주소를 할당 받는다.

client-server architecture에서는 서버 호스트 상의 프로세스와 클라이언트 호스트 상의 프로세스가 서로 통신을 하게 된다.

 


P2P architecture

P2P 구조는 클라이언트-서버 구조와는 다르게 정해진 always-on 서버 없이 연결된 호스트끼리 서로 통신을 하는 구조이다. 이때, 통신의 주체를 peer라고 부르며, peer들 간에 request, response를 주고받는 방식으로 통신한다.

 

따라서 새로운 peer가 생기는 것은 service의 요구량 증가를 의미하기도 하지만, 반대로 service 수용량이 증가함을 뜻하기도 하며, 이를 self scalability를 갖는다고 표현하기도 함.


Process communicating

앞서 network application program 두 가지를 살펴보았는데, 결국 통신의 주체는 host 자체가 아닌 host에서 돌아가고 있는 process이다.

 

같은 host 내에 있는 두 개의 process가 통신하는 경우에는 이를 inter-process communication이라고 부른다.

 

process 통신에는 두 가지 종류의 process가 있는데

  • client process: client host에서 실행 중인 process, 통신을 시작하는 process이다.
  • server process: server host에서 실행 중인 process, request를 기다리는 process이다.

Socket이란?

application layer는 개발자에 의해 control 되는 영역이고, 그 바로 아래 계층은 OS에 의해 control 되는 process의 영역이다. 따라서 transport layer를 포함한 application layer 아래의 계층에서 동작하는 process에는 우리가 접근할 수 있는 방법이 없기 때문에, application layer에서 만들진 message의 전송을 아래의 계층인 transport layer에게 부탁하는 구조이다.

 

여기에 transport layer와 application layer 사이에서 문(door) 역할을 하는 것을 socket이라고 한다.

 

summary: 소켓은 애플리케이션 계층에서 송수신하는 message들이 아래의 계층에 전달될 때, 드나드는 통로이다.


그렇다면 Process 간 통신에서 주소를 식별하는 방법은?

단순한 32bit ip address로는 통신 상황에서 host를 식별 할 수는 있지만, 호스트 안에 있는 프로세스를 식별할 수는 없다. 그렇기 때문에 추가적인 정보가 필요한데 그것이 포트 번호(port number)에 해당한다.

 

✅ 식별자(identifier) = IP 주소 + 포트 번호

 

Tip. well-known port # (특정 프로세스가 전용으로 사용하는 포트 번호)👍🏼👍🏼

1. HTTP server: 80

2. Mail server(SMTP): 25

 

HTTP 프로토콜에 따라 통신을 하는 상황을 예시로 들면, message에는 다음과 같은 정보가 기재될 것이다!

IP address: 128.119.245.11 (32bits, 한 블럭이 8bits)
port number: 80

Transport 계층에서 제공하는 서비스에 대한 요구사항들

Data integrity (데이터 무결성)

  • 일부 어플리케이션들은 reliable data를 요구하기도
  • 또 일부 어플리케이션들은 약간의 loss를 허용하기도

Timing

  • 일부 어플리케이션은 low delay service를 요구하기도
  • 또 일부는 그렇지 않을 수도

Throughput (수율)

  • 일부 어플리케이션들은 minimum throughput을 최소치 이상 요구하기도
  • 또한 나머지 일부 어플리케이션들은 throughput 상관없이 사용 가능하기만 하면 되는 경우도

 

728x90

댓글