개발여행
웹 통신: TCP/IP 프로토콜과 OSI 7 계층모델 본문
컴퓨터 프로토콜이란?
기기들이 통신할 때 통신을 허용할지, 연결된 기기에게 무엇을 요청할지, 데이터를 어떤 형식으로 보낼지 등의 소통이 오가는데, 이때 사용하는 것이 프로토콜이다. 프로토콜은 컴퓨터 네트워크의 노드들이 서로와 통신하기 위해 따르는 규칙들이다.
우리가 소통할 때 상대의 메세지에 적절한 응답을 주고 받는 것처럼 프로토콜도 메세지 포맷, 전달 순서, 취할 액션 등이 규정되어 있다. 소통 방식에 따라 다양한 프로토콜이 존재한다.
TCP/IP
TCP/IP는 패킷 통신의 규약인 IP(Internet Protocol)와 전송 조절에 대한 규약인 TCP(Transmission Control Protocol)를 합쳐서 부르는 프로토콜 스위트(같은 통신 목적에 사용되는 여러 프로토콜의 집합)이자 계층화된 통신 아키텍쳐 모델 중 하나다. IP 프로토콜과 TCP 프로토콜을 사용해 네트워크상에서 패킷으로 나눠진 데이터를 전송한다고 해서 TCP/IP라고 부르게 됐다.
기본적으로 4개의 레이어로 계층화된 구조를 가지고 있다. (OSI 7 Layer과 비교하기 위해 5계층으로 나누기도 한다) 데이터는 각 계층을 차례대로 거치면서 전송되기 위한, 또는 전송 받은 경우에는 데이터를 읽기 위한 가공 과정을 거친다.
- Layer 4: 응용 계층(Application Layer)
- 이메일(SMTP/POP3/IMAP), 파일 전송(FTP), 웹사이트(HTTP) 등의 서비스 응용 프로그램이 사용되는 계층이다. 우리가 이메일을 보내거나 웹사이트에 접속할 때 응용 계층의 프로토콜이 관련 작업을 수행한다.
- Layer 3: 전송 계층(Transport Layer)
- 응용 계층에서 내려온 메세지를 세그먼트 단위로 쪼개거나 쪼개진 데이터를 응용 계층에서 사용할 수 있도록 재정렬하고 이어붙인다.
- Layer 2: 인터넷 계층(Internet Layer)
- 패킷이 가진 출처(source) IP 주소와 목적지(destination) IP를 파악해서 라우팅을 처리한다.
- Layer 1: 네트워크 접근 계층(Network Access Layer)
- MAC 주소를 사용해 데이터를 전송하고 디지털 데이터↔전자신호 간의 변환을 처리한다.
데이터를 보낼 땐 4계층에서 시작해 1계층으로 내려가면서 데이터를 캡슐화한다. 전송할 데이터에 각 계층에서 헤더라는 추가 정보를 붙이는 것을 캡슐화라고 한다.
데이터를 받은 노드는 1계층에서 시작해 4계층까지 전달하면서 캡슐화된 데이터를 비캡슐화한다. 캡슐화된 데이터에 붙어있는 헤더를 각 해당 계층에서 제거하고 데이터를 원본 형태로 되돌리는 과정을 비캡슐화라고 한다.
OSI 7 Layer
OSI 7 계층은 네트워크 통신이 어떤 단계로 이루어지는지를 정하는 네트워크 표준 모델이다. TCP/IP 이후에 나온 모델이지만 개념적으로만 활용되고 실제 상용화되지는 않았다.
- Layer 7: 응용 계층(Application Layer)
- 응용 프로그램을 수행하는 계층으로, TCP/IP의 응용 계층과 같다.
- Layer 6: 표현 계층(Presentation Layer)
- 데이터 암호화, 압축, 변환 등 데이터의 표현 방식을 담당한다.
- Layer 5: 세션 계층(Session Layer)
- 통신하는 호스트 간의 연결 세션을 유지한다. TCP/IP 세션을 만들거나 없앨 수 있다.
- Layer 4: 전송 계층(Transport Layer)
- 통신을 활성화하는 계층으로, TCP 등의 프로토콜을 사용해서 포트를 열어준다. TCP/IP처럼 메세지 분리와 재결합을 담당한다.
- Layer 3: 네트워크 계층(Network Layer)
- IP 주소를 읽어 라우팅을 처리한다.
- Layer 2: 데이터 링크 계층(Data Link Layer)
- 데이터에 MAC 주소를 부여하고 전송한다.
- Layer 1: 물리 계층(Physical Layer)
- 데이터를 전기신호로 변환하거나 전기신호를 다시 데이터로 변환한다.
TCP/IP나 OSI 7 Layer처럼 계층화된 아키텍쳐는 각 계층이 각자의 주어진 역할만 수행하도록 모듈화하여 하나의 크고 복잡한 프로세스를 여러 단계로 나눔으로서 아래와 같은 이점을 제공한다:
- 문제 파악이 쉬워진다. 어느 계층에서 문제가 발생했는지를 파악해서 트러블슈팅이 가능하다.
- 한 계층에 기술적인 변화가 있어도 다른 계층에 영향을 주지 않는다. 시스템 전체를 바꾸지 않아도 된다.
- 각 모듈이 독립적이기 때문에 표준화가 가능하다. 기기마다 하드웨어나 소프트웨어 스펙이 달라도 동일한 모듈의 프로토콜을 지원하면 통신할 수 있다.
'CS' 카테고리의 다른 글
DNS가 뭔가요? (0) | 2024.11.06 |
---|---|
HTTP 버전에 대해 알아보기 (0) | 2024.11.04 |
컴퓨터 네트워크의 기본 구성 (0) | 2024.10.29 |
인코딩(encoding)과 암호화(encryption)의 차이 (0) | 2024.08.02 |
HTTP와 HTTPS의 차이가 뭔가요? (0) | 2024.07.20 |