[NETWORK] TCP / UDP

2021. 6. 6. 01:04·NETWORK
728x90

TCP와 UDP는 전송계층에서 사용하는 프로토콜, 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하는 계층


TCP

정의

  • 연결지향적 프로토콜
  • 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받는 프로토콜 

특징

  • 연결형 서비스로 가상회선 방식을 사용
  • 데이터의 경게를 구분하지 않음
  • 신뢰성 있는 데이터 전달과 흐름 제어하며 데이터 전송 순서 보장
  • 1 : 1 통신만 가능하며, UDP보다 속도가 느림

3 way handshake, 4 way handshake

출처 : https://cis.temple.edu/~giorgio/old/cis307f01/readings/unix4.html

  • TCP 통신을 위한 네트워크 연결은 3 way handshake 방식으로 진행
  • 연결해제는 4 way handshake 방식을 진행

3 way handshake 과정

  1. Client에서 Server 포트에 SYN패킷을 전달
  2. Server는 해당 포트에서 SYN패킷을  SYN_RCV로 상태가 변경
  3. 정상적으로 요청 받았다고 ACK패킷, Client에 포트 연결 요청으로 SYN패킷을 같이 응답
  4. ACK + SYN패킷을 전달받은 Client는 ESTABLISHED 상태로 변경하고 ACK패킷를 서버에 전송

4 way handshake 과정

  1. Close를 선언한 Client가 FIN 패킷을 전달 후 FIN_WAIT1 상태로 대기
  2. Server는 CLOSE_WAIT로 상태를 바꾸고 응답으로 ACK패킷 전달 (Close 요청)
  3. Client는 ACK패킷을 전달 받고 FIN_WAIT2로 상태 변경
  4. Close 요청 받은 서버는 FIN 패킷을 Client에 응답하고 상태를 LAST_ACK로 변경
  5. FIN을 받은 Client는 ACK패킷을 서버로 전달하고 TIME_WAIT 상태로 변경, 일정시간이 지나면 CLOSED

UDP

정의

  • 전송계층의 비연결 지향적 프로토콜 

특징

  • 데이타그램 방식으로 제공
  • 정보를 주고 받을때 신호 절차를 거치지 않음
  • 신뢰성 없는 데이터를 전송
  • 패킷관리가 별도로 필요함 하지만 패킷오버헤드가 적어 네트워크 부하가 적음
  • TCP보다 전송속도가 빠름

TCP / UDP 공통점

  • 포트 번호를 이용하여 주소를 지정함
  • 데이터 오류 검사를 위한 체크섬이 존재함

TCP / UDP 차이점

  TCP UDP
연결방식 연결형서비스 비 연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서가 바뀔 수 있음
수신 여부 확인 수신 여부를 확인함 수신 여부를 확인하지 않음
통신 방식 1:1 통신만 가능 1:1 / 1:N / N:N 통신 모두 가능
신뢰성 높음 낮음
속도 느림 빠름

 

저작자표시

'NETWORK' 카테고리의 다른 글

[NETWORK] 요청 응답 헤더  (0) 2021.10.29
[NETWORK] HTTP / HTTPS  (0) 2021.10.28
[NETWORK] L4 스위치  (0) 2021.09.27
[NETWORK] OSI 7계층, TCP/IP 4계층  (0) 2021.07.11
[NETWORK] 쿠키 / 세션  (0) 2021.05.19
'NETWORK' 카테고리의 다른 글
  • [NETWORK] HTTP / HTTPS
  • [NETWORK] L4 스위치
  • [NETWORK] OSI 7계층, TCP/IP 4계층
  • [NETWORK] 쿠키 / 세션
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    프로그래머스
    go
    이펙티브코틀린
    Kafka
    cleancode
    코틀린
    java
    docker
    Elk
    ElasticSearch
    Spring
    splunk
    IntelliJ
    SQL
    클린코드
    자바
    JPA
    엘라스틱서치
    AWS
    이펙티브 코틀린
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[NETWORK] TCP / UDP
상단으로

티스토리툴바