IP - TCP/UDP

Chunbae·2024년 12월 16일

네트워크

목록 보기
1/2
post-thumbnail

IP?

IP는 Client와 Server간에 데이터를 주고받기 위해 사용되는 고유주소를 의미합니다. IP는 인터넷 상에서 기기를 식별하고 올바른 대상에게 전달되기 위해 사용되며 Ipv4/Ipv6의 종류가 있습니다.

인터넷 프로토콜 스택의 4계층

  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층 - Lan카드 등

패킷이란?

IP는 데이터를 전송하기 위해 패킷이라는 특수한 단위를 사용해 데이터를 송수신합니다. 패킷은 헤더와 바디로 이루어져 있고 하나의 패킷이 1500byte 넘으면 나누어 전송합니다.

  • 헤더

    • 송수신자의 주소
    • 전송 순서
  • 바디

    • 데이터

IP프로토콜의 한계

  • 비연결성
    IP프로토콜은 Connectionless로 동작하며 패킷을 전송시 수신자의 상태를 확인하지 않습니다. 전송 시 서버가 다운된 상태에도 데이터를 전송하기 때문에 제대로 된 송신이 이루어질 수 없습니다.
  • 비신뢰성
    패킷은 1500byte로 나누어 전송하는데 A -> B로 전송을 진행해도 B -> A순으로 데이터가 도착할 수 있습니다. 추가로 중간 네트워크 노드가 소실되는 등 패킷이 소실되거나 내부 데이터에 문제가 발생한 경우 수신자 입장에서는 이를 확인할 방법이 없습니다.

  • 연결 식별성 부족
    동일 IP내 클라이언트나 서버 구분이 불가능 합니다. 서버의 입장에서는 클라이언트를 명확하게 구분하기 위해 추가적인 정보가 필요합니다.



TCP / UDP

TCP

TCP는 "Transmission Control Protocol"의 약자로 전송제어 프로토콜이라는 의미를 가집니다. IP 프로토콜의 한계를 개선하기 위해 사용됩니다.

TCP프로토콜은 다음과 같은 특징이 있습니다.

  • 연결 지향

    • TCP 3 way HandShake를 사용합니다.
    • 비연결성의 한계
  • 데이터 전달 보증

    • 비신뢰성의 한계
  • 순서 보장

    • TCP/IP 패킷내 순서정보를 할당하고 해당 순서대로 서버에서 전송을 받습니다. 제대로 패킷이 전달되지 않은 경우에는 서버가 클라이언트에게 다시 요청을 보내 데이터를 다시 수신합니다.
    • 비신뢰성의 한계

출처 : 김영한님의 HTTP강의

TCP 3 Way HandShake

TCP에서 가장 중요한 개념입니다. 3way handshake는 단순하게 쌍방향 연결 확인이며, 3번의 통신을 통해 연결한다는 개념입니다.

출처 : 김영한님의 HTTP강의

그림을 살펴보면 SYN / ACK가 있는걸 확인 할 수 있습니다.
SYN은 요청을 의미하고 ACK는 응답을 의미합니다.

풀어서 이야기하면 첫번째는 Client에서 Server로 "연결 가능해?"라는 의미로 SYN을 전송합니다. 두번째는 Server에서 연결 가능상태라면 "연결 가능하고, 나도 연결할게"라는 의미로 SYN/ACK 를 전송합니다. 세번째는 마무리 단계로 client에서 Server최종적인 승인을 전송해 연결을 마무리합니다.

TCP는 실제로 연결된 상태가 아니고 "개념적"으로 연결된 상태입니다.

TCP/IP의 장단점

  • 장점 : 신뢰성이 있는 데이터 전송으로 전달 보증 순서를 보장한다.
    -> 손실 복구와 흐름제어

  • 단점 : 연결 설정 및 유지에 시간이 걸린다 (오버헤드 증가)



UDP

UDP는 User Datagram Protocol의 약자로 사용자기반 프로토콜입니다.

UDP는 주로 "하얀 도화지"에 비유를 많이 합니다. 아무런 기능이 없으며, IP 프로토콜에서 port의 정보만 갖고있는 것입니다.
UDP는 DIY가 가능한 프로토콜로 TCP패킷과 달리 패킷에 대한 모든 설정이 사용자가 자유롭게 구성이 가능합니다.

UDP/IP의 장단점

  • 장점 : 연결 설정과정이 없고 단순 데이터 전송만 하기때문에 오버헤드가 적다.
    주로 스트리밍서비스 VoIP등에 사용합니다.

  • 단점 : 신뢰성이 부족합니다. 패킷의 모든정보를 사용자가 설정해야 하기 때문에 전달 보증 순서보증을 설정하지 않으면 없으며, 손실 패킷에 대한 복구가 자동으로 이루어지지 않습니다.




Port

IP프로토콜에서 연결 식별성의 한계를 극복하기 위해 추가된 연결 옵션이며, TCP/UDP에서 사용됩니다.

Port는 하나의 IP주소에서 여러 서비스(웹서핑, 메일, 게임등등)를 구분하기 위해서 사용됩니다.

IP는 아파트의 주소, port는 호수로 비유가 가능합니다.

  • 예를 들어 111.111.0.1:80은 아파트(111.111.0.1)동이고 80호(http서비스)입니다.

  • 포트 번호를 이용해 패킷이 서버에서 어떤 호수로 들어가야하는 지 결정을 합니다.

    쉽게 배달서비스를 생각하면 됩니다. 원하는 음식점(서버)에서 주문을 하면 집(클라이언트)로 음식(데이터)가 오는 것입니다.


DNS

IP 주소를 하나하나 전부 기억하지 못하기 때문에 IP에 이름을 부여한 것이라고 보면됩니다.

DNS는 우리가 실생활에 사용하는 주소록과 비슷합니다.

  • 전화번호는 이름과 번호를 매핑 {이름 : 번호}
  • DNS는 도메인명과 IP를 매핑 {name : IP}

이를 통해 우리는 사이트의 실 IP를 몰라도 DNS를 사용하여 사이트에 접속을 합니다.
추가로 접속하는 사이트의 IP가 변경되더라도 도메인만 일정하면 사용자는 변경을 알지 않아도 됩니다.

profile
말하는 감자

0개의 댓글