Network - IP , TCP, UDP

돌리의 하루·2023년 3월 6일
0
post-thumbnail

예전에는 회선교환 방식으로 인터넷에 접속했습니다.
회선교환 방식은 중간에서 발신자와 수신자를 연결해주는 오퍼레이터에 의해서 이루어졌습니다.
전용선이 있기 때문에, 발신자와 수신자는 각각 한명씩만 할당됩니다.
=> 그렇다면? 즉시성이 떨어지겠죠! 효율성이 떨어지게됩니다.

이를 해결하기 위해서 패킷교환 방식이 도입됩니다.
패킷이란?

패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식입니다.

소포에 빗대어 보면, 패킷에 각각의 출발지와 목적지의 정보가 있고, 패킷이 목적지를 향해 효율적인 방식으로 이동하는것입니다! 회선교환처럼 특정회선이 전용선으로 할당되지 않아서, 빠르게 데이터를 전송할 수 있습니다.

그래서 IP(internet protocol)는 출발지와 목적지의 정보를 ip주소라는 특정한 숫자값으로 표기하고 패킷단위로 데이터를 전송하게 됩니다.


IP와 IP Packet

위에서 node는 하나의 서버 컴퓨터를 의미합니다.
데이터가 여러 node를 무수히 거친다면, 규칙이 있어야 할것같아보이네요🧐

이 때! ip가 필요합니다.
ip주소를 컴퓨터에 부여한 후 이를 이용해 통신합니다.
ip는 지정한 ip주소에 패킷이라는 통신단위로 데이터를 전달합니다.

ip패킷이란 그럼 무엇일까요?
패킷은 pack과 bucket이 합쳐진 단어로, 소포에 비유할 수 있습니다.

ip패킷이라는 택배가 우체국 송장처럼 전송 데이터를 무사히 전송하기 위해서 출발지, 도착지 ip의 정보를 포함하고 있습니다.

이러한 패킷들이 목적지 ip에 도달하기 위해서 데이터를 전달하고,
서버에 무사히 데이터가 전송되었다면, 서버는 이에 대한 응답을 돌려줍니다.
서버도 또한 ip패킷을 이용해서 클라이언트에 응답합니다.

그림으로 보자면 밑과 같습니다.



이렇게 편리한 ip지만, 단점도 있습니다 😡

  1. 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송합니다.
  2. 비신뢰성
    • 중간에 패킷이 사라질 수 있습니다. (서버에 장애가 생겨 패킷이 소실되더라도 파악이 불가능합니다)
    • 패킷의 순서를 보장할 수 없습니다. (용량이 클 경우 패킷단위로 나눠지는데, 이 패킷들은 서로 다른 노드를 통해 전달될 수 있습니다.)

밑에서 이와 같은 한계를 어떻게 보완할 수 있을지 알아봅시다!


TCP vs UDP

우리가 채팅 메세지를 보낼 때를 생각해봅시다.
HTTP 메세지가 생성되면 소켓을 통해서 전달되는데,
소켓이란 아래와같습니다.

프로그램이 네트워크에서 데이터를 송수신할 수 있도록, “네트워크 환경에 연결할 수 있게 만들어진 연결부“

TCP/IP 패킷

Tcp 세그먼트에는 출발지 ip와 목적지 ip를 보완해주는 여러가지 정보를 포함합니다.

TCP는 다음과 같은 특징을 가집니다.

-연결 지향
-데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜

위에서 말한 ip의 단점들을 보완한 점이 눈에 띕니다.
또한 TCP는 데이터 전송이 성공적으로 이루어진다면
이에 대한 응답을 돌려주기 때문에 IP 패킷의 한계인 비연결성을 보완할 수 있습니다.

UDP는 다음과 같은 특징을 가집니다.

하얀 도화지에 비유할 수 있음. (여러 기능이 있는 TCP보다 커스터마이징 가능)
비 연결지향 - tcp 3 way handshake X ( 빠른 속도를 보장 )
데이터 전달 보증 X
순서 보장 X
데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다
신뢰성보다는 연속성이 중요한 서비스 ( ex 실시간 스트리밍 )에 자주 사용됨.

UDP는 ip에 port, 체크섬 필드 정보만 추가된 단순한 프로토콜입니다.
TCP와 쉬운말로 비교해본다면,
좋은 기능이 다 들어있는 무거운 라이브러리 vs 필요한 기능만 들어있는 가벼운 라이브러리
라고 할 수 있겠습니다.

profile
진화중인 돌리입니다 :>

0개의 댓글