CS/Network

IP, TCP, UDP 프로토콜과 패킷 그리고 PORT

용용띠용 2025. 5. 2. 13:37

IP(Internet Protocol)

: 서로 다른 운영체제 등을 사용하는 다양한 컴퓨터들이 서로 통신할 때 사용하는 약속된 데이터 이동 간의 규약이다.

- 인터넷에서 메일 확인, 파일 전송 등의 모든 컴퓨터(서버) 간 데이터  통신에 대한 규약

 

- 필요성

: 데이터의 안정적, 효율적 전송 보장을 위해 데이터를 패킷 단위로 분할해 전송하고 받는 쪽에서 재조립된다.

//데이터가 너무 크면 네트워크 대역폭(일정시간 내 네트워크 연결을 통해 처리할 수 있는 데이터 양)을 많이 차지해 다른 패킷의 흐름을 막고 특정 지점에서 막히거나 느려질 위험이 있다.

 

- 한계

     - 비연결성: 패킷을 받을 대상의 현재 상태에 상관없이(서버 부재 또는 서비스 불능 상태에도) 패킷을 전송한다.

     - 비신뢰성: 패킷 분실, 패킷 순서가 섞이는 문제 등이 발생할 수 있고 패킷 손상 여부를 송수신측 모두 알 수 없으며 패킷 손실,

     오류 발생에도 데이터를 재전송하지 않다.

           = 내용물 상태 보장X => TCP 프로토콜의 3 Way HandShake 과정으로 해결 가능

     - 애플리케이션 구분 불가: 대상 컴퓨터의 어떤 프로그램에 사용될 데이터인지 구분할 수 없다.

          => PORT로 해결 가능

 

- IP 주소(IP Address)

: 데이터 송수신을 위해 필요한 데이터의 목적지고유주소기기를 식별할 수 있는 번호이다.

     - 체계

          1) IPv4 방식(IP version 4): 32비트 크기로 8비트씩 4개 숫자가 '.'으로 구분된 10진수 표기법

               - ex) 111.115.121.11

               - 인터넷 사용자 수 급증으로 주소 고갈 위기 발생 => IPv6 등장

          2) IPv6 방식 (IP version 6) : 128비트 크기로 확장한 차세대 IP 주소로 8개 숫자가 ':'으로 구분된 16진수 표기법

                - ex) 2dfc:0:0:0:0217:cbff:fe8c:0

              - 속도, 보안 등의 면에서 뛰어나나 기존 주소체계 변경에 소모되는 비용이 커서 아직 완전히 상용화되지 않았다.

 

 

TCP(Transmission Control Protocol)

: 서버와 클라이언트 간 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜

- 3 Way HandShake 과정을 거쳐 컴퓨터를 연결한다.

 

- 3 Way HandShake

:  물리적이 아니라 논리적으로 컴퓨터를 연결하는 과정이다.

1) Syn(Synchronize Sequence numbers)

: 클라이언트가 서버에게 연결을 요청하는 첫 단계

- 클라이언트 -> 서버

- SYN 플래그가 설정된 패킷을 서버로 전송

- 패킷에는 시퀀스 번호를 포함해 데이터 전송 순서 관리할 준비를 한다.

2) SYN-ACK

: 클라이언트의 SYN 패킷을 받고 확인했다는 의미로의 ACK 플래그와 자신도 연결을 요청하는 SYN 플래그를 설정한 패킷을 보내는 단계

- 서버 -> 클라이언트

- ACK로 응답이 오지 않으면 연결 실패

3) ACK

: 서버의 SYN-ACK 패킷을 받고 확인했다는 의미로 ACK플래그를 설정한 패킷을 전송하는 단계

- 이 단계까지 끝나면 논리적 연결이 성립

- ACK와 함께 데이터 전송 가능

 

- 특징: 신뢰성 보장

     - 데이터 전송 여부 확인: 소스 IP의 컴퓨터에서 패킷 전송 시 대상IP에서 데이터를 잘 받았다는 응답을 반환한다.

     - 패킷 순서 보장: 대용량 데이터가 패킷 단위로 분할돼 전송됐을 때 2번 패킷이 먼저 도착할 경우 1번 패킷을 재요청하거나 1번       패킷 도착 전까지 대기하는 방식으로 순서를 보장한다.

 

- 한계

: 3 Way HandShake 과정을 항상 거치기 때문에 데이터 수송신에 시간이 많이 소요된다.

 

 

UDP(User Datagram Protocol)

: 비연결성, 비신뢰성을 지니는 전송 프로토콜로 TCP의 느린 전송 속도를 극복하기 위해 개발되었다.

- 빠른 전송 속도에 특화되어있는 프로토콜이다.

 

- 특징

     - IP 방식과 유사: 3 Way HandShake 과정을 거치지 않아 비신뢰성을 지닌다.

     - 빠른 속도: 추가적인 기능이 거의 없고 연결을 하지 않는 대신 속도가 빠르다.

     - PORT 존재: IP와의 차이점이다.(TCP에도 PORT존재)

     - 체크섬 포함: 데이터 무결성 검사로 잘못된 데이터가 전송되지 않도록 한다.

 

 

패킷

: 네트워크에서 데이터를 주고받을 때 사용되는 데이터 조각이다.

- 구성

     - 헤더: 패킷에 대한 메타 정보: 소스 IP주소, 대상 IP 주소, 소스 PORT, 대상 PORT, 패킷 길이, 번호, 네트워크 프로토콜 등

     - 페이로드: 실제 데이터

     - 트레일러: 패킷 끝에 붙는 정보로 오류 검출 및 패킷 전송의 종류 신호 제공

          - 수신여부 포함 => 데이터 주기만 하는 것이 아니라 받고 응답한다.

 

PORT

: 같은 IP주소 내에서 프로세스 구분 위해 사용하는 것으로 0~65535까지의 숫자로 구성되어 있다.

     - IP 주소 = 동

     - PORT = 호수

- 이미 사용되는 포트: 0~1023

: 국제 도메인 관리기구에 의해 관리된다. 0~1023은 사용하지 않는 것이 좋다.

  • FTP - 20, 21 (TCP)
  • SSH - 22 (TCP)
  • 텔넷 - 23 (TCP)
  • SMTP - 25 (TCP)
  • DNS - 53 (TCP/UDP)
  • DHCP - 67 (UDP)
  • HTTP - 80 (TCP)
  • HTTPS - 443 (TCP)
  • RDP - 3389 (TCP/UDP)