카테고리 없음

P(Protocol)라 미숙해... _IP, Packet, TCP, UDP, PORT, DNS

k-hamin 2024. 7. 11. 16:17

IP(internet Protocol)

IP 란 인터넷이 연결되어 있는 장치들을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다.

 

간단히 말해 집 주소이다.

 

내가 친구 A에게 편지를 보낼 때 나의 집 주소, A의 집 주소를 적는 것처럼, 인터넷은 컴퓨터에게 IP Address라는 주소를 명시해 시작지와 목적지를 표시한다.


 

IP주소는 8비트 숫자 4개 총 32비트로 구성되며, 각 자리는 0~256으로 구성된다

(0.0.0.0 ~ 255.255.255.255)

 

IP Packet

IP는 패킷(packet)이라는 통신 단위로 데이터를 전달한다.

 

IP 패킷에는 출발지 iP, 목적지 IP 등의 정보가 들어있다.

이렇게 패킷이 만들어지면, 아래와 같이 노드들은 목적지 IP를 향해 패킷을 전송하게 된다.
이때 노드는 하나의 서버 컴퓨터를 의미한다.

 

서버 역시 IP패킷을 사용해 응답을 전달한다.

 


IP 프로토콜만 사용하면 서로 패킷을 주고 받는데 문제가 없을까?

 

IP 프로토콜의 한계

  • 비연결성

패킷을 받을 상대 컴퓨터의 서버가 작동하지 않더라도, 클라이언트는 서버의 상태를 파악할 방법이 없기 때문에 패킷을 그대로 전송한다.

  • 신뢰성

중간에 있는 서버가 데이터를 전달하는 도중 패킷이 없어지더라도, 클라이언트는 이를 파악할 방법이 없다.

또한, 내가 총 3개의 편지 A, B, C를 순서대로 보냈는데 B, C, A 순으로 도착하는 문제가 발생할 수 있다.


이 것을 해결해보자!

 

TCP, UDP

 

우리는 인터넷에서 정보를 주고받기 위해 인터넷 프로토콜이라는 약속을 정했다.

 

 

위와 같이 인터넷 프로토콜은 4계층을 이룬다.

아래는 채팅 프로그램에서 메시지를 보낼 때 발생하는 일을 정리한 것이다.

 

 

1. 먼저 HTTP 메세지가 생성된다.

 

2. 이 메세지는 Socket을 통해 전달된다.

 

소켓( Socket )은 전송 계층과 응용 프로그램 사이의 인터페이스 역할을 하며, 떨어져 있는 두 호스트를 연결한다.

소켓은 프로토콜, IP 주소, 포트 번호로 정의된다.

 

3. 메세지가 Socket을 통과하면 OS에서 TCP 또는 UDP 프로토콜을 사용해 정보를 추가한다.

 

4. IP 패킷을 생성하고, LAN 카드를 통해 인터넷 랜선이나 무선 네트웨크를 통해 패킷을 쏘게 된다.

 

TCP/IP 패킷

IP는 내 컴퓨터의 주소, PORT는 내 컴퓨터 안의 카톡인지, 디스코드인지를 구분하는 것이라고 생각하자!


TCP를 지키면 아래와 같은 특징을 보장받을 수 있다.

 

  • 연결지향_TCP 3 way handshake

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

 

2. 서버는 SYN 요청을 받고, 요청을 수락한다는 의미로 ACK와 SYN이 설정된 패킷을 발송하며, 클라이언트가 다시 ACK으로 응답하기를 기다린다.

 

3. 클라이언트는 서버에서 받은 패킷에 대해 ACK 패킷을 보내고, 이후로부터 연결이 이루어져 데이터가 오가게 된다.

 

SYN: 접속 요청
ACK: 요청 수락

  • 데이터 전달 보증

데이터 전송이 성공적으로 이루어진다면 이제 대한 응답을 돌려주기 때문에

IP 패킷의 한계인 비연결성을 보완할 수 있다

  • 순서 보장

패킷이 순서대로 도착하지 않는 경우, TCP는 순서를 맞추기 위해 패킷의 시퀀스 번호를 사용한다.

만약 순서가 어긋나거나 누락된 패킷이 있다면,

TCP는 해당 패킷을 재전송하여 순서가 올바르게 유지되도록 한다.

UDP

  • 비연결성
  • 데이터 전달 보증 x
  • 순서 보장 x

그럼 굳이 왜 UDP를 사용할까?

 

신뢰성보다는 순서가 중요할 때 자주 사용된다.

예를 들어 속도와 지연이 없는 것이 중요한 온라인 게임이나 스트리밍이 있다.

 

 

Port

우리는 컴퓨터를 사용하면서 카카오톡, 디스코드 등 많은 프로그램을 사용한다.

IP는 우리 컴퓨터의 주소라고 하였는데,

특정 IP로 도착한 패킷이 어떤 애플리케이션에서 사용되어야 하는지 어떻게 알 수 있을까?

 

이것이 바로 PORT이다.

 

DNS

우리는 숫자로 된 인터넷 프로토콜 주소를 외우고 다닐 수 없다.

설령 외운다 하더라도 IP가 바뀌면 어떻게 할까?

 

그래서 우리는 IP에 이름을 붙이기 시작했다.

이 이름을 도메인이라고 한다.

 

하지만 도메인이 너무 많아져서 관리가 필요해졌다. 이를 관리하는 것이 바로 DNS 서버이다. 

 

위와 같이 DNS 서버에 IP 주소를 물어보고 구글 IP로 요청 패킷을 보내는 것이다.