[S3-Unit06] Network - TCP/IP
포스트
취소

[S3-Unit06] Network - TCP/IP

네트워크의 탄생 배경을 살펴보고, 패킷교환 방식을 이용한 IP 통신과 이를 보완하기 위한 TCP/UDP 에 대해 알아본다.

네트워크의 시작

현재 사용하는 인터넷 프로토콜인 IP 기반의 네트워크는 1969년 진행했던 아르파넷(ARPANET) 프로젝트에서 시작되었다.

이 프로젝트는 그때 당시의 냉전시대에서 핵전쟁을 대비하기 위한 통신망 구축을 위해 추진되었고, 기존에 사용되었던 회선교환 방식이 아닌 패킷교환 방식으로 네트워크를 구축하게 되는데 이를 토대로 인터넷 통신 방식의 기반이 세워졌다.

회선교환 방식

회선교환 방식 은 발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결하는 방법이다.

ex) 내가 전화통화를 하고 싶은 상대가 다른 상대와 연결중이라면?

  • 상대방은 이미 다른 상대와의 전용선과 연결이 되어있기 때문에 그 연결이 끊어지기까지 기다린 후, 상대방과 연결할 수 있다.
  • 또 특정 회선이 끊어지는 경우에 처음부터 다시 연결을 성립해야하는 불편함이 있다.

이러한 문제점으로 현재는 회선교환 방식의 단점을 보완한 패킷교환 방식을 사용하고 있다.

패킷교환 방식

패킷교환 방식 은 패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방법이다.

  • 패킷(packet) : 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식된 블록
  • 각 패킷에는 출발지와 목적지 정보가 있고 이에 따라 패킷이 목적지를 향해 가장 효율적인 방법으로 이동할 수 있다.
  • 이를 이용하면 전용선으로 할당되지 않기 때문에 효율적으로 데이터를 전송할 수 있다.

그래서 인터넷 프로코콜, 줄여서 IP는 출발지와 목적지의 정보를 IP라는 주소라는 특정한 숫자값으로 표기하고 패킷단위로 데이터를 전송하게 되었다.


IP와 IP Packet

1. IP 주소 부여

  • 클라이언트와 서버는 IP(인터넷 프로토콜) 주소를 컴퓨터에 부여하여 이를 이용해 통신한다.
  • IP는 지정한 IP(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터 전달을 한다.

2. IP 패킷 정보
IP Packet 에서 패킷은 Pack과 bucket이 합쳐진 단어로 소포로 비유할 수 있다.

  • IP 패킷은 이를 데이터 통신에 적용한 것이라고 보면 된다.
  • IP 패킷은 우체국 송장처럼 전송 데이터를 무사히 전송하기 위해 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있다.

3. 서버 패킷 전달
서버에서 무사히 데이터를 전송받는 다면 서버도 이에 대한 응답을 돌려줘야 한다. 서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달한다.

IP Packet의 한계

정확한 출발지와 목적지를 파악할 수 있다는 점에서 인터넷 프로토콜은 적절한 통신 방법으로 보이지만 IP에는 한계가 존재한다.

1. 비연결성

  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 서버의 상태를 파악할 방법이 없기 때문에 패킷을 그대로 전송한다.

2. 비신뢰성

  • 중간에 있는 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 중간에 소실되더라도 클라이언트는 이를 파악할 방법이 없다.
  • 전달 데이터의 용량이 클 경우에 패킷 단위로 나누어서 데이터를 전달하는데, 이때 패킷들은 중간에 서로 다른 노드를 통해 전달될 수 있다. 이렇게 되면 클라이언트가 의도하지 않은 순서로 서버에 패킷이 도착할 수 있다.


TCP vs UDP

앞에서 말한 IP 패킷에는 한계들이 존재한다. 이 부분을 네트워크 계층 구조를 통해 어떻게 보완할 수 있는 지 알아본다.

네트워크 프로토콜 계층은 OSI 7계층TCP/IP 4 계층 으로 나눌 수 있다.

IP 프로토콜 보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에 앞서 다룬 IP 프로토콜의 한계를 보완할 수 있다.

TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었으며, TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지는 않는다. 실제 네트워크 표준은 업계표준을 따르는 TCP/IP 4 계층에 가깝다.

OSI 7 계층과 TCP/IP 4계층

ex) 채팅 프로그램에서 메시지를 보낼 때

  1. HTTP 메시지가 생성되면 Socket을 통해 전달된다.
    • 소켓(Socket) : 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, “네트워크 환경에 연결할 수 있게 만들어진 연결부“
  2. IP 패킷을 생성하기 전 TCP 세그먼트를 생성한다.
  3. 생성된 TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임 워크에 포함되어 서버로 전송된다.

TCP

TCP (Transmission Control Protocol) 는 장치들 사이에 논리적인 접속을 성립하기 위하여 3 way handshake를 사용하는 연결지향형 프로토콜이다.

  • 연결 지향 - TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜


1. TCP 3 way handshake

  1. 클라이언트가 서버에 접속을 요청하는 SYN 패킷을 보낸다.

  2. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN가 설정된 패킷을 발송하고 클라이언트가 다시 ACK으로 응답하기를 기다린다.
  3. 클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되어 데이터를 전송할 수 있다.
    • 만약 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 때문에 데이터를 보내지 않는다.
    • 현재는 최적화가 이루어져 3번 ACK을 보낼 때 데이터를 함께 보내기도 한다.


2. 데이터 전달 보증

TCP는 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 IP 패킷의 한계인 비연결성을 보완할 수 있다.

3. 순서 보장

패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있어, IP 패킷의 한계인 비신뢰성(순서를 보장하지 않음)을 보완할 수 있다.


UDP

UDP (User Datagram Protocol) 는 IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜이다.

  • 하얀 도화지에 비유 (기능이 거의 없음)
  • 비 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • 신뢰성보다는 연속성이 중요한 서비스(e.g. 실시간 스트리밍)에 자주 사용됨


TCP vs UDP


Reference

CODESTATES (SEB_FE_43)

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.