TCP/IP란?

TCP/IP(Transmission Control Protocol / Internet Protocol) 컴퓨터는 서로 통신할 때 프로토콜(절차, 규약, 규칙 등)을 사용해서 순서대로 데이터를 전송 및 수신 할 수 있다. 전 세계에서 가장 많이 쓰이는 프로토콜 세트가 바로 말로만 듣던 TCP/IP다. 가장 일반적인 기능은 메일, 컴퓨터 간 파일 전송, 원격 로그인이 있다. 하나의 프로토콜을 지칭하는 말이 아니라 인터넷에서 사용되는 각종 표준 프로토콜을 한데 모아 일컫는 말이다. 그럼 왜 이렇게 부르냐? 가장 유명하니까 인터넷 프로토콜 집합의 의미를 굳이 구분 해야한다면 TCP/IP 프로토콜 스위트라고 부르거나 인터넷 프로토콜 스위트 라고 부르면 된다. TCP/IP 프로토콜 집합을 사용해 네트워크들을 연결하고 통합한 세계 최대의 네트워크를 인터넷이라고 한다. 네트워크에 연결된 장비들이 서로 통신 하려면 동일한 프로토콜을 사용해야한다. 그래서 국제 표준 단체가 프로토콜 규격을 정하고 관리한다. 하드웨어는 IEEE가, 웹 관련된 것은 W3W이 맡아서 관리하고 있다.

OS내장 통신 프로그램(클라이언트 pc Window, MacOS, 웹서버 컴퓨터 Apache, Linux)는 TCP/IP에 따라 동작하도록 만들어져있다. 이 규약은 트렌스포트 계층, 인터넷 계층에서 사용한다.

계층 모델

계층 모델은 통신에 참여하는 여러 장비나 프로그램의 역할에 따라 분류하고 추상화 한 것 총 4계층이 있으며 애플리케이션 계층, 트렌스포트 계층, 인터넷 계층, 네트워크 인터페이스 계층 으로 나누어진다. 종종 7개의 계층으로 구성 되어있는 OSI 참조 모델도 보이는데 더 세분화한 것이 OSI 7계층이다. 4계층은 TCP/IP 계층 모델, 7계층은 OSI 참조 모델이다. OSI 참조 모델은 표준화 단체인 ISO이 정의 했지만 복잡해서 보급화 되지 못하고 지금은 네트워크를 개념적으로 설명하는 용도로 활용된다.

애플리케이션 계층

사용자가 직접 사용하면서 와닿는 서비스를 제공한다. 사용자가 직접 사용하는 프로토콜의 대표적인 예로 HTML이 있다. 그럼 이 계층에는 직접적으로 보여지는 프로토콜만 있냐? 그건 아니다. 인터넷이나 LAN(Local Area Network 근거리에 위치한 컴퓨터들이 연결된 것)의 원활한 사용을 위해 사용자에게 보이지 않는 곳에서 다른 애플리케이션 계층의 프로토콜들이 간접적으로 사용하는 프로토콜이 있다 대표적인 예로 SSL/TSL 이 있다.

HTTP

웹 클라이언트와 웹 서버 사이에서 웹 페이지 데이터를 주고받는다.

SSL/TSL

통신 데이터를 암호화 하여 주요 정보를 안전하게 주고받을때 사용한다.

웹페이지에 표시 되기까지

웹 브라우저(클라이언트)가 웹 서버로 특정 웹 페이지(URL 입력)를 요청하면 웹 서버가 해당 페이지 내용을 HTML형식으로 응답한다.

웹 브라우저

요청 ↓↑ HTML응답

웹 서버

근데 HTML 파일에 JS나 CSS 파일이 들어있다면? 클라이언트 pc에서 웹 서버로 새 요청한다. 추가 요청까지 응답 받았으면 조합해서 웹 페이지를 표시한다. 이때 HTTP라는 프로토콜을 이용해서 응답과 요청을 주고받는다. HTTP는 스테이트리스라는 통신 형태를 가지고 있다. 통신 시 정보를 한 번씩 주고 받고 상태 정보를 저장하지 않는다. HTTP 요청을 보낼 때 URL(Uniform Resource Locator)이라는 문자열을 사용한다.

http:// www.sample.co.kr/sample/index.html > 스키마호스트도메인디렉터리파일

트렌스포트 계층

애플리케이션 계층에서 요청 받은 데이터를 목적지 애플리케이션 계층까지 전달하는 역할을 하고 있다. 포트 번호 정보를 헤더에 붙이거나 떼어내는 일을 많이 한다. 데이터가 제대로 전송되지 않았다면 다시 요청하는 일도 한다. 데이터를 정확하게 전달하기 위해 TCP프로토콜로 전송 속도를 조절한다. 정말 많은 일을 하는 계층이다. 이 계층에는 TCP 프로토콜 말고 UDP 라는 프로토콜이 있는데, 주로 전송 속도를 중요시하는 실시간 통신이 필요할 때 사용한다. 그럼 이 프로토콜들은 어떻게 정확하게 전달할까? 작은 데이터 단위인 패킷에는 포트 번호가 붙는데 이걸 보고 송신지와 수신지를 알 수 있다. 포트의 범위는 0 ~ 65535번까지 있고 웰 노운 포트, 레지스터드 포트, 다이나믹 포트 세 종류로 분류된다. 포트번호 + 클라이언트 어드레스 조합으로 송신지를 안다. TCP는 데이터 전송에 신뢰성을 더하기 위해 세그먼트라는 단위로 분할한다. 세그먼트와 패킷의 차이점은 ‘어느 계층에서 가지고 있는 헤더 정보와 캡슐화 된 데이터냐’의 차이다.

인터넷 계층

데이터에 어드레스 정보를 덧붙여 목적지까지 무사히 전달하는 역할을 하고 있다. 멀리 떨어져 있는 목적지까지 어떻게 하면 잘 전달 할 수 있을까를 고민하는 계층이다. 라우터라는 목적지 컴퓨터까지 도달하는 경로를 찾는 장비를 사용한다. IP 프로토콜을 사용하여 패킷(작은 데이터 단위)을 목적지까지 전달한다.

reference

  • IBM TCP/IP
  • TCP/IP 쉽게, 더 쉽게(리브로윅스 지음)