상세 컨텐츠

본문 제목

TCP/UDP

Network

by Wanderer Kim 2022. 7. 5. 14:10

본문

728x90

이번 글에서는 인터넷 프로토콜중 가장 많이 사용되는 TCP와 UDP에 대해서 살펴 보겠습니다.

 

TCP

TCP는 데이터의 흐름 관리, 데이터의 정확성 확인 패킷을 목적지까지 전송하는 역할을 담당하는 인터넷 프로토콜 입니다.

TCP는 개방형 프로토콜의 표준으로 특정 하드웨어나 OS에 독립적으로 사용하는 것이 가능합니다. 또 인터넷에서 서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는데  사용하는 통신 프로토콜로 근거리 및 원거리 모두에 사용할 수 있습니다.

 

TCP의 4계층

TCP는 애플리케이션 계층, 트랜스포트(전송) 계층, 인터넷 계층, 네트워크 인터페이스 계층의 4개의 계층으로 구성되어 있습니다.

  • 애플리케이션 계층 : 사용자 응용 프로그램으로부터 요청을 받아서 이를 적절한 메시지로 변환하고 하위계층으로 전달하는 역할을 담당합니다.
  • 트랜스포트 계층 : 전달된 패킷의 오류를 검사하고 재전송을 요구하는 등의 제어를 담당하는 계층으로 TCP, UDP 두 종류의 프로토콜이 사용됩니다.
  • 인터넷 계층 : 전송 계층에서 받은 패킷을 목적지까지 효율적으로 전달하는 역할을 담당합니다. 주소 판독, 네트워크 탐색 등의 역할을 합니다.
  • 네트워크 인터페이스 계층 : 특정 프로토콜을 규정하지 않고, 모든 표준과 기술적인 프로토콜을 지원하는 계층 입니다. 프레임을 물리적인 회선에 올리거나 내려받는 역할을 담당합니다.

위 다이어그램은 TCP를 통해 데이터가 어떻게 전송되는 지를 나타냅니다.

  1. 애플리케이션 계층에서 응용 프로그램이 소켓 라이브러리를 통해 트랜스포트 계층으로 전달합니다.
  2. 트랜스포트 계층에서 TCP 정보 생성 및 메시지 데이터를 포함합니다.
  3. 인터넷 계층에서는 IP 패킷 생성과 TCP 데이터를 포함합니다.
  4. 네트워크 인터페이스 계층에서는 데이터 패킷을 LAN 장비를 통해 목적지 서버까지 전송합니다.

IP 패킷의 구성

IP 패킷은 크게 헤더필드와 데이터필드로 나누어집니다.

  • 헤더필드 : TCP,UDP와 가은 상위 계층에서 전달된 PDU가 삽입됩니다.
  • 데이터필드 : 패킷을 목적지까지 전송하기 위해 IP 계층에서 필요한 값들이 포함됩니다.

TCP 특징

TCP 특징들은 아래와 같습니다.

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

3-way handshaking

 

TCP에서는 통신하기 전에 3가지 단계를 거쳐 통신 연결을 합니다.

  1. Syn : 클라이언트가 서버한테 요청을 합니다.
  2. Syn/Ack : 서버도 응답을 하게 되고, 클라이언트에게 통신하자는 요청을 합니다.
  3. Ack : 클라이언트가 서버에게 좋다는 응답을 보냅니다.

위 3가지 단계를 거쳐 정상적인 통신이 이루어지게 됩니다. 이렇게 연결된 상태를 "세션"이라고 부릅니다.

 

데이터 전달 보증

 

TCP의 경우 클라이언트에서 서버로 데이터 전송 후 서버에서 데이터를 잘 받았다는 신호를 클라이언트 전송합니다.

이런 방식을 통해 데이터 전송이 잘 이루어졌는지를 보증합니다.

 

순서 보장

 

TCP의 경우 클라이언트에서 패킷1,2,3의 순서로 전송 후 서버에서 패킷1,3,2의 순서로 도착하는 케이스에 대해 클라이언트로 패킷2부터 다시 보내라는 메시지를 보냄으로써 데이터의 순서를 보장해 줍니다.

 

UDP

UDP(User Dtagram Protocol) : Host-Host, Process-Process 통신을 제공하는 것 이외에는 IP 서비스에 추가하는 것인 아무 것도 없다. 단지 수신된 패킷에서 오류를 탐지하면 이를 폐기하는 정도의 오류 제어 기능만 제공된다.

Host-Host 통신 : IP는 목적지 Host에게만 메시지를 전달할 수 있다.
Process-Process 통신 : TCP, UDP는 메시지를 정확한 프로세스에게 전달시킬 수 있으면 Port번호가 필요하다.

UDP 특징

UDP는 데이터 전송 및 순서가 보장되지는 않지만, 처리속도와 데이터 전송률이 빠르다는 장점을 가지고 있습니다.

1000개의 패킷을 전송할 경우 10개의 패킷이 손상이 되거나 분실되었다고 가정해보자. TCP는 10개의 패킷을 재전송하기 위해 시간이 더 걸릴 것이다. 하지만 UDP의 경우 10개의 패킷을 무시하고 전송하기 때문에 TCP보다 전송률이 더 좋을 것이다.

그렇기 때문에 소수 패킷들의 손실은 크게 영향을 미치지 않는 온라인 게임이나, 실시간 방송, 스트리밍 서비스 등에 줄 ㅗ이용된다.

 

UDP 사용 경우

  • 단순한 요청-응답 통신을 필요로 하고 흐름 제어와 오류 제어에는 큰 관심이 없는 프로세스에 적절합니다.
  • 내부적인 흐름 제어와 오류 제어 메커니즘을 가지고 있는 프로세스에  사용할 수 있습니다.
  • 멀티캐스팅과 브로드캐스팅을 위한 전송 프로토콜로 적절합니다.
  • SNMP(Simple Network Management Protocol)과 같은 관리 프로세스에 사용될 수 있습니다.
반응형

'Network' 카테고리의 다른 글

URI(Uniform Resource Identifier)  (0) 2022.07.10
DNS(Domain Name System)  (0) 2022.07.08
Port  (0) 2022.07.08
IP(Internet Protocol)  (0) 2022.06.26
웹의 동작 방식  (0) 2022.06.26

관련글 더보기

댓글 영역