데이터를 전송하기 위한 프로토콜에는 tcp말고 udp라는 프로토콜이 존재합니다. 데이터를 전송하는 점에서는 tcp와 udp는 비슷하지만 특성에서 차이가 납니다.

  • TCP(Transmission Control Protocol)
    tcp는 연결지향이며, 자체적으로 오류를 처리하며, 네트워크 전송중 순서가 뒤바뀐 메세지를 수정하는 기능을 가지고 있습니다.

  • UDP(User Datagram Protocol)
    udp는 비연결지향이며, 오류를 처리하거나 순서를 재조합시켜주는 기능을 가지고 있지 않습니다. 단순히 데이터를 받거나, 던져주기만 하는 프토토콜입니다.

    여기서 연결지향과 비연결지향이란?
    Link: 연결지향과 비연결지향이란?

TCP/IP를 이용해서 컴퓨터간 데이터 통신이 어떻게 가능하지?

우선 어떻게 데이터 통신이 가능한지 알기전에 OSI7에 대한 이해가 필요합니다.

OSI7

OSI 는 각종 시스템간의 연결을 위하여 ISO 에서 제안한 모델로써, OSI(Open System Interconnection Reference Model)에서 유추할수 있듯이, 시스템에 상관없이 서로의 시스템이 연결될수 있도록 만들어주는 모델이다.
OSI7
컴퓨터와 컴퓨터 사이의 데이터 전송을 위해서는 위 7개의 계층을 직-간접적으로 거쳐서 전송하게 됩니다.

위와 같이 7개의 계층으로 나눈 이유는, 각 계층에 대한 캡술화와 은닉이 가능하기 때문입니다. 예를들어 서비스 개발자는 Application Layer 와 Prsentation Layer 만 신경쓰면 됩니다.

실제 어플리케이션 개발자는 Session Layer 와 Transport Layer 정도만 신경쓰면 될것입니다.

Network Layer 계층 아래는 운영체제가 알아서 챙겨주므로 거의 신경쓸 필요가 없습니다. 마찬가지로 하드웨어를 만드는 사람은 Physical Layer 만 신경쓰면 되며, 그위의 계층에 대해서는 신경쓸 필요가 없습니다.

OSI를 이렇듯 계층별로 나눔으로써, 각 계층에서 필요한 부분만을 개발자들이 신경쓰게 되고 통신서비스 개발시간을 줄일수 있도록 도와줍니다.

OSI7 계층과 TCP/IP 4계층

TCP/IP 계층은 OSI 7계층을 더 단순화 시켜서 4개의 계층(Layer)로 만들어서 사용한다.
OSI7 계층과 TCP/IP 4계층

  • Application Layer
    이 계층은 네트웍을 사용하는 응용프로그램(FTP, Telnet, SMTP) 등으로 이루어지며, OSI 계층의 Aplication Layer 와 Presentation Layer 를 모두 포함한다.

  • Transport Layer
    계층의 이름에서 알수 있듯이, 도착을 원하는 시스템까지 데이타를 전송하기 위한 일을 하는 게층이다. OSI 모델의 Session Layer 과 Transport Layer 를 포함하고 있으며, 각각의 시스템을 연결하고, TCP 프로토콜을 이용하여 데이타를 전송한다.

  • Internet Layer
    데이타를 정의하고 데이타의 경로를 배정하는일(라우팅)을 담당한다. 데이타를 정확히 라우팅 하기 위해서 IP프로토콜을 사용한다. OSI 의 Network Layer 과 Data Link Layer 를 포함한다.

  • Physical Layer
    물리적 계층 즉 이더넷 카드와 같은 하드웨어를 말한다.

TCP/IP 4계층

TCP/IP4계층

위 그림을 따라서 설명을 드리자면 클라이언트(사용자)가 브라우저(크롬,파이어폭스 등등)을 사용하여 url을 입력을 해서 웹페이지에 요청을 보냅니다.

사용자의 요청(Requset)은 인터넷상에서 전달되기 편한 패킷으로 만들기위해 TCP패킷으로 만들어지 됩니다.

TCP패킷은 다시 인터넷 상에서 원하는 주소로 이동할 수 있도록 하기 위해서 IP패
킷으로 다시 만들어지고 이더넷 카드로 보내져소 인터넷으로 나가게 됩니다.

원하는 주소로 TCP/IP 패킷을 보내기 위한 통신매체가 있는데(라우터등등), 이것을 통해서 이더넷카드로 TCP/IP 패킷이 전달되게 됩니다.

TCP패킷

그럼 이더넷 카드는 TCP/IP 패킷을 바로 윗 계층(Internet Layer)으로 보내는데, 여기에서는 IP 패킷을 분석해서, 이 패킷이 어디에서 왔으며, 그 도착지가 어디인지를 판단하게 됩니다.

그리하여 목적지가 자신이면 이것을 다시 Transport Layer 로 보내고, TCP 프로토콜을 사용하여, 메시지가 누락된게 있으면 다시 요청하고, 순서를 재조합하는등 통신 메시지를 검사해서 이것을 다시 Application Layer 에게 보냅니다.

Application Layer 에서는 웹서버(IIS, Apache, Nginx)가 통신메시지를 HTTP 프로토콜에 준하여, 검사를 하여서 사용자가 요청한 웹페이지를 읽어들여서, Transport 계층으로 보내게 됩니다.

웹페이지를 브라우저까지 전송하는 과정은 위의 정반대의 과정을 순차적으로 거치게 됩니다.

최종적으로 웹브라우저는 웹페이지를 받아서(text) 역시 HTTP 프로토콜에 준하여, 렌더링 작업을 거친후 화면에 뿌려주게 됩니다.

틀린부분이 있으면 언제든지 지적해주시면 감사하겠습니다.