이전 시간에 네트워크는
네트워크 엣지(클라이언트, 서버 등)와
네트워크 코어(엣지를 이어주는 중간다리)로 나뉘어 있음을 알게 되었다.
결국 사람이 네트워크를 이용하는 위치는 네트워크 엣지가 될텐데
이 네트워크의 구조는 간단히 5개의 계층(또는 7개의 계층)으로 나눠볼 수 있다.
5개 계층
- Application (최상단)
- Transport
- Network
- Data link
- physical (최하단)
이 모든 계층은 모든 것들이 잘 버무려져서 동작하기 때문에 하나만 콕 찝어서 공부할 수는 없지만
일단 Application 계층이 이해하는 것이 더 쉬울 수 있기 때문에 App 계층부터 배워보도록 하겠다.
먼저 우리가 네트워크를 사용하는 App을 만들 때는
서로 다른 네트워크 엣지가 App을 가동할 것이다. (클라이언트-서버가 예시가 될 수 있다.)
이 때 통신은 네트워크 코어를 통해 수행이 될 것이다.
이 때, 소프트웨어 프로그래머들은 통상적으로 네트워크 코어에 대한 코드를 고려하지 않아도 된다.
그 이유는 네트워크 코어의 디바이스들은 유저가 직접적으로 사용하는 App을 실행시킬 수 없기 때문이며,
이는 소프트웨어의 빠른 개발에 중요하게 작용하게 된다.
클라이언트-서버 설계구조(Client-server architecture)
server
- 호스트에 대해 항시 개방되어 있어야 한다.
- 고정적인 IP 주소를 가져야 한다.
- 확장 가능한 데이터 센터를 보유해야 한다.
clients
- 서버와 통신한다
- 서버와 연결이 간헐적으로 이루어진다
- 동적인 IP를 가져도 무방하다.
- 클라이언트들끼리만 직접적으로 통신할 수 없다.
server가 고정적인 IP주소를 가져야 하는 이유는 무엇일까?
우리가 자주 사용하는 사이트(ex 네이버, 다음 등)의 IP주소가 동적으로 바뀐다면
사용하기가 영 곤란할 것이다. 그냥 그런 이유에서다.
프로세스들의 통신 (Processes communicating)
프로세스 : 호스트 내에서 동작하는 프로그램들을 의미한다.
- 같은 호스트 내에서 프로세스의 통신은 inter-process communication에 이해 실행된다.
(IPC라고도 하며, 운영체제에 의해 정의되는 방식이다.) - 다른 호스트 내에서 프로세스의 통신은 메세지의 교환 방식으로 이루어진다.
여기에서 client process와 server process를 나눌 수 있는데,
Client process는 통신을 개시하는 프로세스가 될 것이고,
Server process는 들어올 통신을 대기하는 프로세스가 될 것이다.
Socket
프로세스들은 프로세스간 통신을 위한 메세지를 소켓을 통해서 주고받는다.
이 때 소켓은 문(door)의 역할을 하게 된다.
- 전송 프로세스는 메세지를 문(소켓) 바깥으로 보낸다.
- 또한 전송 프로세스는 수신 프로세스에 메세지를 전달하기 위해 transport 계층에 의존하게 된다.
'네트워크' 카테고리의 다른 글
네트워크 계층 요약 (0) | 2023.07.04 |
---|---|
데이터 링크 계층 요약 (0) | 2023.07.03 |
물리 계층 요약 (0) | 2023.07.03 |
meta-charset의 필요성, request header, response header (0) | 2023.01.16 |
컴퓨터네트워크 기본1 (0) | 2022.12.10 |