TCP/IP (1)

옥영진·2021년 2월 22일
0

네트워크

목록 보기
3/9

TCP/IP 구조

네트워크 통신을 하기 위해 여러 가지 네트워크 아키텍쳐가 있지만 지금은 거의 TCP/IP만 사용한다. 이는 TCP와 IP라는 프로톨을 중심으로 구성된 프로토콜 집합으로, 이를 통해 통신하는 각종 네트워크 기기 전반을 호스트라고 부른다.
TCP/IP는 통신하기 위한 기능을 계층화하였는데, 최하위 계층으로 네트워크 인터페이스 부터 시작해서 인터넷, 트랜스포트, 그리고 최상위 계층인 애플리케이션 계층으로 이루어져 있다.

네트워크 인터페이스 계층

네트워크 인터페이스 계층은 같은 네트워크 내 인터페이스 간 데이터를 전송하는 역할을 한다. 하나의 네트워크란 라우터와 레이어3 스위치로 구분되는 범위, 또는 레이어2 스위치로 구성하는 범위를 말한다.
이 계층에서 사용하는 프로토콜로는 이더넷(유선), Wi-Fi(무선 LAN), PPP 등이 있으며, 통신 상대와 같은 프로토콜을 사용할 필요는 없다.

인터넷 계층

인터넷 계층은 원격지에 있는 많은 네트워크 사이에서 데이터를 전송하는 역할을 한다. 네트워크끼리 연결하고 데이터를 전송하는 기기를 라우터라고 하는데, 라우터에 의한 네트워크 간 전송을 가리켜 라우팅이라고 한다.
이 계층에서는 IP, ICMP, ARP 프로토콜을 사용하는데, 엔드투엔드 통신(최종적인 출발지와 목적지 사이의 데이터 전송)에 이용하는 프로토콜이 IP 이고, 이 IP를 도와주는 프로토콜이 ICMP와 ARP이다.

트랜스포트 계층

트랜스포트 계층의 역할은 전송 데이터를 적절한 애플리케이션에 배분하는 일이다. 이 계층까지 데이터가 올바르게 도착하면 출발지와 목적지 애플리케이션 간에 데이터를 송수신할 수 있게 되는 것이다.
이 계층에서 사용하는 프로토콜은 TCP와 UDP인데, TCP는 엔드투엔드 통신의 신뢰성을 확보해 주는 기능을 가지고 있다.

애플리케이션 계층

애플리케이션 계층의 역할은 애플리케이션에서 기능을 수행하기 위한 데이터의 형식과 처리 절차 등을 결정하는 것이다. 즉, 0과 1의 데이터를 인간이 인식할 수 있는 데이터로 표현하는 것이다.
이 계층에 포함된 프로토콜로 HTTP, SMTP, POP3, DHCP, DNS 등등 많이 있다. 웹브라우저에서 사용하는 HTTP, 전자메일 소프트웨어에서 사용하는 SMTP(전송), POP3(수신)가 있고, 이 계층에서 사용한다고 해서 무조건 애플리케이션에서 사용하는 것이 아니라, DHCP와 DNS처럼 애플리케이션의 통신을 준비하기 위한 프로토콜도 있다.

데이터 송수신 규칙

데이터 송신

애플리케이션이 데이터를 주고받게 하려면, 복수의 프로토콜을 조합해야 하는데, TCP/IP에서는 4개의 프로토콜을 조합한다. 각 프로토콜에서는 데이터 처리를 하기 위한 제어 정보인 헤더가 필요한데, 데이터를 전송할 때 각 계층에서 헤더를 추가한다. 이 헤더를 추가하는 처리를 캡슐화라고 한다.
일단 클라이언트의 웹브라우저에서 데이터를 전송한다고 했을 때, 웹브라우저의 데이터는 HTTP 헤더로 캡슐화 되어 그 아래 트랜스포트 계층의 프로토콜인 TCP로 넘어가고, 여기서 TCP 헤더 추가 후, 아래 계층인 인터넷 계층으로 넘어가 IP 헤더를 추가한다. 마지막으로 네트워크 인터페이스 계층으로 넘어가면 이 계층은 헤더뿐만 아니라 에러 체크를 위한 FCS(Frame Check Sequence)가 추가된다.
이렇게 최상위 계층에서 최하위 계층으로 데이터가 넘어오면서 각 프로토콜의 헤더가 추가되는데, 최하위 계층에서는 이 데이터를 물리적인 신호로 변환하여 전송 매체로 내보낸다.

데이터 수신

전송 매체로 보내진 물리적인 신호를 목적지 웹서버 네트워크 기기가 수신하면, 0과 1의 데이터로 변환한다. 데이터 전송 시 헤더를 추가하는 처리를 캡슐화라고 했는데, 데이터 수신 시 각 계층에서 헤더를 제거하여 상위 계층으로 넘겨주는데 이를 역캡슐화 라고 한다.
데이터를 수신하여 최하위 계층인 네트워크 인터페이스 계층에서 이더넷 헤더와 FCS를, 그 상위 계층인 인터넷 계층에서 IP 헤더를, 트랜스포트 계층과 애플리케이션 계층에서 각각 TCP 헤더와 HTTP 헤더를 제거한다.
이 헤더를 제거할 때 각 헤더에 있는 제어 정보를 참조하여 각 프로토콜이 이를 처리한다. 예를 들어, 이더넷 헤더를 참조하여 자기 앞으로 온 데이터인지 확인하고, TCP 헤더를 참조해 어느 애플리케이션의 데이터인지 확인하는 것이다.
이렇게 웹서버에서 데이터를 수신하여 처리를 한 후에 응답 데이터를 다시 캡슐화하여 클라이언트 쪽으로 전송한다. 즉 송신 측과 수신 측이 정해져 있는 것이 아니라 양방향으로 이루어 진다.

profile
안녕하세요 함께 공부합시다

0개의 댓글