728x90
반응형
인프런 "모든 개발자의 실무를 위한 필수 기본기 클래스" 강의를 듣고 정리한 내용입니다.
네트워크 통신이 일어나는 과정
크롬 브라우저를 열어 네이버 웹사이트를 접속한다고 하면 아래와 같은 흐름으로 통신이 이뤄진다.
1. 크롬 브라우저 검색창에서 https://www.naver.com 을 입력한다.
2. 크롬 브라우저는 이를 네트워크에서 통신 가능한 형태로 만든다. (보통 패킷이라고 부른다)
3. 이 패킷을 네트워크에 흘려보낸다.
4. 네트워크 중간에 있는 기기(라우터)들이 이 패킷을 읽고 네이버 서버로 전달한다.
5. 네이버 서버는 이 패킷을 다시 풀어, 웹서버가 읽을 수 있는 형태로 만들고 웹서버에 전달한다.
⭐️ 여기서 중요한 점 !!
단순히 사람이 이해할 수 있는 URL만을 입력했지만 내부적으로 패킷과 같은 특정 형태의 데이터로 만든다는 것이다.
또한 이렇게 만들어진 패킷은 수신받는 쪽에서 다시 사람이 이해할 수 있는 데이터로 만들어진다는 것이다.
네트워크 통신을 OSI 7 계층 모델로 이해하기
위 과정을 OSI 7계층 모델이라는 개념 위에서 표현하면 다음 그림과 같다.
위 그림에서 우리는 송신 호스트 가 되고 네이버 서버는 수신 호스트 가 된다.
- 과정
- 먼저 우리는 브라우저라는 응용(애플리케이션) 계층에서 데이터(URL)를 입력한다.
- 이 데이터는 전송 전에 내부적으로 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층을 차례대로 지나며 네트워크 통신에 필요한 데이터를 기존 데이터에 추가한다.
- 각 계층은 순서를 가지며, 응용 계층 -> 물리 계층 순으로 전달된다.
- 각 계층은 이전 계층으로부터 데이터를 전달받으며, 자신의 계층에서 필요한 데이터들을 기존 데이터에 추가로 붙인다.
- 데이터를 붙인다는 것은 예를 들어 어떤 IP로 전달할지 등의 정보를 더한다는 것이다.
- 물리 계층에서는 이렇게 계층을 지나며 만든 데이터를 실제로 네트워크에 전송한다.
- 네이버 서버는 이 데이터를 수신받아 다시 물리 계층 -> 응용 계층 순으로 전달한다.
- 각 계층은 마찬가지로 이전 데이터로부터 데이터를 전달받으며, 필요한 데이터만 분리하여 해석한다.
- 최종적으로 응용 계층 에서는 요청을 웹서버에 전달한 뒤, 웹서버는 송신자에게 필요한 응답(네이버 메인 페이지)을 다시 데이터로 만들게 된다.
💡 프로토콜이란?
통신을 위해 형태 또는 규약을 프로토콜이라고 한다.
네트워크에서는 많은 프로토콜이 있는데, 모두 데이터를 올바르게 전달하고 받기 위해 존재한다.
익히 들어본 HTTP, TCP, UDP가 바로 이러한 프로토콜의 대표적인 예시이다.
그래서 OSI 7계층 모델이 뭔데?
💡 OSI 7계층이란 !
네트워크 통신의 과정을 7단계의 계층으로 나눈 설계를 의미한다.
이렇게 계층을 나누어 놓으면 무엇이 좋을까?
- 전체적으로 필요한 일을 여러 계층으로 나누면, 계층별 해야 할 일이 명확해진다.
- 전체적인 설계 모델이 있음으로써, 설명하기도 이해하기도 쉽다.
- 각 층을 나누면 각 층별로 필요한 데이터들을 표준화할 수도 있다.
OSI 7계층 모델은 국제표준화기구에서 개발한 네트워크 통신 표준 모델이다.
각 계층이 하는 일
- 계층 7: 응용 계층 (Application Layer)
- 웹 서비스의 UI 부분, 사용자의 입출력(I/O)을 담당
- 우리가 보통 개발하는 프론트엔드, 백엔드 서버가 이 레이어 위에서 동작한다. 즉, 대부분의 사람이 사용하는 웹 서비스는 이 레이어 위에서 제공된다.
- 계층 6. 표현 계층 (Presentation Layer)
- 응용 계층과 네트워크 계층을 위해 계층 간 데이터를 적절히 표현하는 부분을 담당
- 이미지 압축, 데이터 암호화 등의 기능이 이 레이어 위에서 동작한다.
- 계층 5. 세션 계층 (Session Layer)
- 통신은 실제로 "세션"이라고 하는 단위 위에서 이루어지는데, 이 계층은 이러한 통신 세션을 구성한다.
- 계층 4. 전송 계층 (Transport Layer)
- 컴퓨터로 들어온 네트워크 데이터를 어느 포트(어느 프로세스)로 보낼지 담당
- 하나의 컴퓨터에는 여러 프로세스가 동작하고 있으며 프로세스마다 별도의 네트워크 포트를 가지게 된다.
- 예를 들면 하나의 컴퓨터에 프론트엔드 애플리케이션은 80 포트를, 백엔드 애플리케이션은 8080 포트에 배포할 수 있다.
- 네트워크 데이터가 들어오면, 이를 80 포트(프론트엔드 애플리케이션)로 보낼지, 8080 포트(백엔드 애플리케이션)로 보낼지를 담당하는 것
- 또한 네트워크가 끊기거나 데이터가 잘못된 것은 없는지 등 신뢰성 있는 데이터를 보장하는 역할을 담당
- 계층 3. 네트워크 계층 (Network Layer)
- IP주소를 사용하여 네트워크 데이터를 어느 컴퓨터로 보낼지 담당
- IP 주소는 컴퓨터 당 하나가 부여되지만, 중간에 바뀔 수 있으며 소프트웨어적으로 존재하는 개념
- 흔히 말하는 "라우터"라는 기계가 이러한 역할을 해준다.
- IP주소를 사용하여 네트워크 데이터를 어느 컴퓨터로 보낼지 담당
- 계층 2. 데이터 링크 계층 (Data Link Layer)
- 네트워크 카드의 MAC 주소를 사용해 네트워크 데이터를 어느 컴퓨터로 보낼지 담당
- MAC 주소는 랜카드당 하나가 존재한다.
- 즉 IP 주소랑은 다르게 변하지 않으며, 하드웨어 자체에 포함되는 개념이다.
- 네트워크 카드의 MAC 주소를 사용해 네트워크 데이터를 어느 컴퓨터로 보낼지 담당
- 계층 1. 물리 계층 (Physical)
- 디지털 데이터를 아날로그적인 전기적 신호로 변환하여 네트워크 전선에 흘려보낸다.
- 네트워크 전선은 0101 과 같은 디지털 신호를 이해할 수 없다.
- 따라서 이런 디지털 데이터를 네트워크 전선이 이해할 수 있는 아날로그 형태로 바꾼다.
- 반대로 아날로그 신호를 디지털 신호로 바꾸는 역할도 한다.
- 디지털 데이터를 아날로그적인 전기적 신호로 변환하여 네트워크 전선에 흘려보낸다.
TCP/IP 4계층 모델이란?
OSI 7계층 모델은 네트워크 통신 표준화를 위한 개념 모델이다.
즉, 실제로 인터넷 통신이 이렇게 동작하지는 않고, 이렇게 계층을 나누어 통신하도록 설계하자는 국제표준화기구의 제안인 것이다.
실제 대부분의 인터넷 통신은 TCP/IP 통신을 사용한다. 그리고 이 통신에 특화된 네트워크 통신 계층 모델이 따로 존재하는데, 이걸 TCP/IP 4 계층 모델이라고 한다.
-
계층 4: 응용 계층 (Application Layer)
- OSI 7계층 모델의 7,6,5(용용, 표현, 세션) 계층 기능을 담당
- HTTP, Telnet, SSH, FTP와 같은 프로토콜이 여기에서 사용됨
- 계층 3: 전송 계층 (Transport Layer)
- OSI 7계층 모델의 4(전송) 계층과 같다. 프로세스 간의 신뢰성 있는 데이터 전송을 담당
- TCP, UDP와 같은 프로토콜이 여기에서 사용됨
- 계층 2: 인터넷 계층 (Internet Layer)
- OSI 7 계층 모델의 3(네트워크) 계층과 같다. 컴퓨터 간 라우팅을 담당.
- 계층 1: 네트워크 인터페이스 계층 (Network Interface Layer)
- OSI 7계층 모델의 2, 1(데이터 링크, 물리) 계층과 같다. 네트워크 통신의 물리적인 부분들을 주로 포함함.
- HTTP vs HTTPS
- HTTP(Hyper Text Transfer Protocol)
- 텍스트 문서를 주고받기 위해 만들어진 프로토콜
- 웹 브라우저와 서버가 이 HTTP를 사용하여 정보를 주고받는다.
- 통신 과정에서 모든 정보가 그대로 노출되는 보안 취약점이 발견되었고, 이로 인해 통신 과정에도 응용 계층의 데이터를 암호화할 필요성이 생기면서 보안을 위한 레이어 SSL(Secure Sockets Layer, 현재는 TLS라는 명칭으로도 사용)가 생겼다. 이 레이어는 응용 계층과 전송 계층 사이에 존재한다.
- HTTP(Hyper Text Transfer Protocol)
-
- HTTPS(Hyper Text Transfer Protocol Secure)
- 보안 역할을 하는 SSL 계층을 기반으로 하는 HTTP 통신
- HTTPS는 통신 보안을 포함하고 있어 HTTP보다 좋지만, 내용을 암호화하고 복호화하는 로직이 추가되어 기존보다 통신 로직이 복잡하다.
- HTTPS(Hyper Text Transfer Protocol Secure)
📝 정리
- OSI 7 계층 모델
- ISO가 발표한 네트워크 통신 표준 모델
- 각 계층은 각각 맡은 기능이 있으며 사용하는 프로토콜도 다르다.
- 각 계층은 직전 계층에서 데이터를 전달받으며, 필요한 데이터를 붙여 다음 계층으로 보낸다.
- 송신자는 7 계층(L7)부터 시작해서 1 계층(L1)까지 데이터를 만들어 보낸 뒤, 수신자는 다시 1 계층부터 7 계층까지의 과정을 거쳐 최종적으로 데이터를 받는다.
- TCP/IP 4 계층 모델
- 보통 많이 쓰는 TCP/IP 통신에 기반한 네트워크 통신 모델
- OSI 7 계층과 유사하지만, 4 계층으로 간소화되어 있다.
320x100
반응형
'Devlog > CS' 카테고리의 다른 글
객체 지향 프로그래밍이란? (0) | 2022.08.07 |
---|---|
객체지향 5대 원칙 - SOLID 원칙 (0) | 2022.08.06 |
테스트 코드와 TDD 이해하기 (0) | 2022.07.11 |
쿠키와 세션, 인증 이해하기 (0) | 2022.06.24 |
프로그램 운영 기본 지식 (0) | 2022.06.21 |