1. 인터넷 네트워크에는 무엇이 있을까?
인터넷 통신, IP(Internet Protocol), TCP, UDP, PORT, DNS 이렇게 5개가 있다.
2. 인터넷 통신
보통은 아래와 같이 클라이언트에서 서버로 정보를 보내고, 서버에서 응답을 해주는? 그런 식으로 이루어진다고 한다.
그림과 같이 정보를 주고 받는 과정에서 송신자와 수신자가 상호작용하며 데이터를 교환하는 방식을 양방향 통신이라고 한다.
인터넷을 통한 양방향 통신은 어떨까?
그림과 같이 인터넷을 통해서 서버로 정보를 송신해야 하는데 이럴 경우 조금 복잡해진다.
2-1. 인터넷 통신은 어떻게 이루어지는가?
인터넷 망을 이용해서 클라이언트가 서버로 정보를 보내는 과정은 꽤나 복잡하다.
1. 클라이언트가 서버에 접속 요청을 보낸다. 이는 일반적으로는 HTTP 요청이라고 불리는 형태로 이루어진다. (HTTP 익숙하다...)
2. 클라이언트의 요청은 인터넷을 통해서 서버에 도달하는데 이 과정에서 클라이언트와 서버 사이에는 여러 네트워크 장비들이 데이터를 전달하고 라우팅하는 역할을 수행해준다. (해저 케이블이라던지? 인공위성이라던지? 맞겠지?)
3. 서버는 클라이언트의 요청을 받고, 해당 요청에 대한 처리를 시작하게 된다. 이는 클라이언트가 요청한 정보를 찾거나, 데이터베이스에 접근하는 등의 작업을 포함할 수 있다.
4. 서버는 클라이언트의 요청에 대한 처리 결과를 생성해준다. 이는 일반적으로 HTML, JSON, IMAGE 등의 형태로 반환이 된다.
5. 서버는 생성된 응답을 인터넷을 통해 클라이언트로 전송해주게 된다. 이 과정에서 서버와 클라이언트 사이에도 여러 네트워크 장비들이 데이터를 전달하고 라우팅하는 역할을 수행해준다.
6. 클라이언트는 서버로부터 받은 응답을 처리하고, 웹 페이지를 랜더링하거나 응답 데이터를 활용하여 다른 동작을 수행해준다.
이 과정을 거쳐야만 클라이언트와 서버 간의 상호작용을 통해서 인터넷을 통해 정보를 주고 받을 수 있게된다.
2-2. 클라이언트는 뭐고 서버는 뭔데?
클라이언트와 서버는 역할과 동작 방식에 따라 구분이 된다고 한다. 일반적으로 클라이언트는 정보를 요청하고 받는 역할을 하며, 서버는 요청에 응답하고 정보를 제공하는 역할을 해준다고 한다.
클라이언트
클라이언트는 일반적으로 사용자가 사용하는 웹 브라우저나 모바일 앱과 같은 소프트웨어다. 클라이언트는 사용자의 요청을 생성하고, 이를 서버에 전송하여 서버로부터 응답을 받는다. 예를 들자면, 웹 브라우저에서 URL을 입력하거나 링크를 클릭하는 것은 클라이언트의 요청을 생성하는 동작이라고 보면 된다.
서버
서버는 클라이언트의 요청을 받아 해당 요청을 처리하고, 클라이언트에게 응답을 제공하는 역할을 해준다. 서버는 클라이언트의 요청에 따라 데이터를 검색하거나 처리한 후, 클라이언트에게 응답을 보낸다. 예를 들면, 웹 서버는 클라이언트의 요청에 따라 웹 페이지를 반환하거나 데이터베이스에서 정보를 가져와 응답으로 제공해준다.
너무 긴데 쉽게 구분하는 법은 없나?
쉽게 구분을 하기 위해, 일반적으로 클라이언트는 사용자가 사용하는 장치(컴퓨터, 스마트폰 등)를 가리키며, 서버는 웹 서비스나 어플리케이션을 호스팅하는 컴퓨터 또는 시스템을 가리킨다. 이러한 클라이언트와 서버 간의 상호작용을 통해 사용자는 이너넷을 통해 정보를 주고받을 수 있게 되는 것이다.
3. 마치며
단순하게 생각했을 때 일반 사용자와 서버가 데이터를 주고받는 양방향 통신입니다 까지는 생각을 해도 세세하게 어떤 과정을 거쳐서 인터넷 통신이 이루어지고 컴퓨터적 관점에서 클라이언트와 서버는 어떤 기준으로 나뉘는지에 대해서는 고려해본 적이 없었던 것 같다. 나름 웹개발을 열심히 배웠다고 생각했는데 이런 생각은 하지 않고 배포하고 그냥 주고 받아요? 이런 식이었는데 알고나니 조금은 인텔리해진 기분이다. HTTP와 관련된 부분이 분량은 많지 않지만 꼼꼼하게 배워가야하는 파트라 매일 조금씩 하려한다~🫡
'Knowledge > CS & HTTP' 카테고리의 다른 글
CI/CD 그게 뭔데요...? (1) | 2024.01.08 |
---|---|
RESTful API가 뭔데요 (0) | 2024.01.05 |
쿠키와 세션 (0) | 2023.12.27 |
배열(Array) (0) | 2023.12.16 |
Stack과 Queue (0) | 2023.12.15 |
쓰임 있는 사람이 되기 위해 노력 중입니다.