본문 바로가기
프로그래밍/네트워크

[네트워크] OSI 4계층 모델_TCP, UDP 프로토콜

by 준보틱스 2024. 6. 24.

4계층 프로토콜

● 4계층에서 하는 일

전송 계층(Transport layer)은 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다. 여기서 말하는 프로세스란 디스크에 저장된 프로그램이 메모리에서 동작 중인 프로그램을 프로세스라고 부른다. 전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 그리고 다중화와 같은 편리한 서비스를 제공한다.

전송 프로토콜(4계층 프로토콜) 중 가장 잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜(TCP)이다. 보다 단순한 전송에 사용되는 사용자 데이터그램 프로토콜(UDP)도 있다.

● TCP 프로토콜

전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. TCP 프로토콜은 연결 지향형 프로토콜로서 연결 후 데이터를 전송하는 프로토콜이다. 이 프로토콜은 잘 받았는지 응답을 받는다. TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 UDP 프로토콜을 사용한다. TCP는 UDP보다 안전하지만 느리다.

 

● TCP 프로토콜 구조

일반적인 길이는 20바이트이지만 옵션이 붙으면 최대 60바이트까지 가능하다.

  • Source Port : 출발지 포트 번호, 2바이트
  • Destination Port : 목적지 포트 번호, 2바이트
  • Sequence Number : 송신 데이터 순서 번호, 4바이트
  • Acknowledgment Number : 상대방이 다음에 전송할 순서 번호, 4바이트
  • Offset : 헤더의 길이를 의미, 4비트
  • Reserved : 예약된 필드로 사용x, 6비트
  • TCP Flags : (U A P R S F), TCP가 통신하면서 상대방과의 연결을 확인하는데 그 때 나타내는 값, 6비트
  • Window : 내 사용공간이 얼마나 남아있는지 알려주는 값, 2바이트
  • Checksum : 헤더를 포함한 전체 세그먼트에 대한 오류를 검사하기 위한 필드, 2바이트
  • Urgent Pointer : 세그먼트가 긴급 데이터를 포함하고 있는 경우 사용되는 필드로 긴급 데이터 위치값 있음, 2바이트
  • TCP Options : 최대 40바이트

● UDP 프로토콜

사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 유니버설 데이터그램 프로토콜(Universal Datagram Protocol)이라고 말하기도 한다. 비연결 지향형 프로토콜로서, 연결과 상관없이 데이터를 전송한다. UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 한다. UDP는 일반적으로 오류의 검사와 수정이 필요없는 프로그램에서 수행할 것으로 가정한다.

 

● UDP 프로토콜 구조

  • Source Port : 출발지 포트 번호, 2바이트
  • Destination Port : 목적지 포트 번호, 2바이트
  • Length : UDP 프로토콜 헤더 길이와 페이로드 길이, 2바이트
  • Checksum : 중간에 데이터 손상된 것이 있는지 체크하는 값, 2바이트

● UDP 프로토콜을 사용하는 프로그램

(1) DNS 서버 : 도메인을 물으면 IP를 알려주는 서버

(2) tftp 서버 : UDP로 파일을 공유하는 서버

 

(3) RIP 프로토콜 : 라우팅 정보를 공유하는 프로토콜

포트 번호

● 포트 번호의 특징

포트번호는 4계층에서 사용하는 주소로, 특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용한다. 하나의 포트는 하나의 프로세스만 사용 가능하다. 하나의 프로세스가 여러 개의 포트를 사용하는 것은 가능하다. 포트 번호는 일반적으로 정해져 있지만 무조건 지켜야 하는 것은 아니다. 예를 들어 일반적으로 웹 서비스는 80번 포트를 사용하지만 웹 서비스가 항상 80번 포트를 사용해야만 하는 것은 아니다. 즉, 내 컴퓨터 기준에서 하나의 포트 번호은 하나의 프로그램을 실행 가능하다. 하지만, 상대방 컴퓨터의 여러가지 프로그램들은 내 포트 번호 하나에 연결 가능하다.

● Well-Known 포트

전 세계적으로 유명한 포트, 웹 서버가 사용하는 포트는 80번(HTTP), 보안 웹 통신 433번(HTTPS)

서비스 이름 포트 번호
FTP 20번, 21번
SSH 22번
TELNET 23번
DNS 53번
DHCP 67번, 68번
TFTP 69번
HTTP 80번
HTTPS 443번

 

● Registered 포트

서비스 이름 포트 번호
오라클 DB 서버 1521번
My SQL 서버 3306번
MS 원격 데스크탑 3389번

 

● Dynamic 포트

일반 사용자들이 사용하는 포트, 49152번에서 65535번 사이 아무거나 사용

시작 포트 번호 마지막 포트 번호
49152번 65535번

프로그램 연결 정보

프로그램 연결 정보를 cmd에 netstat -ano 명령어를 통해서 확인할 수 있다. 이 명령어를 통해서 현재 포트 활성 여부를 나타내는 활성 연결 테이블이다.