TCP / UDP (feat. IP, IP Packet)

주형(Jureamer)·2022년 1월 3일
0

Network

목록 보기
2/5

IP 통신

복잡한 인터넷 망 속에서 수 많은 노드(서버 컴퓨터)들을 지나 목적지 서버까지의 통신을 위해서는 규칙이 필요하다. 이 규칙은 IP(인터넷 프로토콜)이라는 주소를 컴퓨터에 부여하고 이를 이용하여 통신을 하는 것이다.

IP는 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.

- 패킷은 pack + bucket의 합성어로, '소포'로 비유할 수 있다.

IP 프로토콜의 한계

  • 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성: 중간에 패킷이 사라질 수 있고, 패킷의 순서를 보장할 수 없음

=> 이 한계를 보완하기 위하여 한 단계 상위 계층(네트워크 계층) 에서 TCP / UDP 등을 사용하여 문제를 해결할 수 있다.

[채팅프로그램에서 메시지를 보낼 때 일어나는 일]
"채팅프로그램에서 메시지를 보낼 때 일어나는 일"

  1. (HTTP) 프로그램에서 메시지 생성
  2. (TCP) Socket 라이브러리를 통해 전달
  3. TCP 세그먼트 생성
  4. (IP) IP 패킷 생성, TCP 데이터 포함
  5. 이더넷 프레임 워크에 포함되어 서버로 전송

TCP

TCP는 Transmission Control Protocol의 약자로 IP 네트워크의 두 컴퓨터 간의 연결 지향 통신을 위한 '전송 계층' 호스트 간 프로토콜이다.

TCP 특징

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

TCP 단점

  • 데이터로 보내기 전에 반드시 연결이 형성되어야 함.
  • 1:1 통신만 가능함.
  • 고정된 통신 선로가 최단선이 아닐 경우 상대적으로 UDP보다 데이터 전송속도가 느림.

TCP 상태 확인

TCP state (터미널에서 netstat 명령어를 통해 확인 가능)

LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태
ESTABLISHED : 3 way-handshaking 이 완료된 후 서로 연결된 상태
FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어두고 있는 상태
CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태 
CLOSED : 완전히 종료

UDP

UDP는 User Datagram Protocol의 약자로, IP프로토콜에 Port, 체크섬 필드 정보만 추가된 단순한 프로토콜이다.

UDP 특징

  • 하얀 도화지 (기능이 거의 없음)
  • 비 연결지향 (TCP 3 way handshake X)
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 단순하고 빠름
  • 신뢰성보다는 연속성이 중요한 서비스(ex: 실시간 스트리밍) 에 자주 사용됨

나는 친구와 PC방에서 스타크래프트를 할 때 UDP를 접했던 기억이 났다!

TCP와 UDP의 비교

Reference

profile
작게라도 꾸준히 성장하는게 목표입니다.

0개의 댓글