본문 바로가기
공부

TCP와 UDP

by GGT 2020. 5. 28.

TCP

  • 전이중 : 양방향 동시 통신 가능
  • 점대점 : 호스트 간 1:1 통신만 가능
  • 신뢰성 있는 통신
  • 데이터 전송의 순서를 보장
  • 흐름제어, 혼잡제어 기법이 존재
  • 세그먼트 단위

3-way handshake

  1. C->S: 연결 요청(SYN)
  2. S->C: 연결 요청 확인(SYN+ACK)
  3. C->S: 연결 확인을 확인(SYN)

4-way handshake

  1. C->S: 종료 요청(FIN) 그리고 C는 FIN_WAIT1
  2. S->C: 종료 요청 확인(ACK) 후 C는 FIN_WAIT2
  3. 여기서 서버는 연결 종료를 위해 송신 버퍼를 닫고 이미 들어있는 데이터를 전송
  4. S->C: 송신 버퍼가 비워지면 C에 종료 요청(FIN)
  5. C->S: 종료 요청 확인(ACK) 후 일정 시간 TIME_WAIT
  • FIN_WAIT1,2는 ACK와 FIN을 받지 못하더라도 TIME_WAIT될 경우 알아서 close된다.
  • 4-way handshake를 통해 종료 시점에 데이터가 소실되는 것을 방지할 수 있다.
  • 우아한 종료: 종료할 때 유예시간을 두어 데이터 소실을 방지하는 기법

UDP

  • 1:N의 통신 지원
  • 단방향 통신
  • 신뢰성을 보장하지 않음
  • 데이터 순서도 뒤죽박죽
  • 데이터가 유실될 가능성이 있음
  • 속도는 TCP보다 빠르다
  • 기본적은 오류검출만 존재

UDP는 3-way handshake고 뭐고 연결 설정하지 않고 소켓 개설 후 바로 전송한다.

데이터가 유실될 수 있는 대신 속도가 빠르기에 스트리밍 서비스에 적합

반응형

'공부' 카테고리의 다른 글

머지 소트  (0) 2020.06.02
퀵소트  (0) 2020.05.31
URL과 URI 헷갈리지 말자  (0) 2020.05.28
REST API  (0) 2020.05.28
HTTP와 HTTPS  (0) 2020.05.28

댓글