[네트워크] TCP/UDP와 3way handshake

kcm dev blog·2021년 9월 18일
2

CS 스터디

목록 보기
3/4
post-thumbnail
post-custom-banner

3way handshake의 정의

TCP 3 Way Handshake는 TCP/IP프로토콜의 Transport Layer을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미

Transport Layer란

Transport Layer:TCP/IP 프로토콜 중 5번째 계층으로, End-Point간 신뢰성 있는 data 전송을 담당하는 계층이다.

  • 신뢰성: Data를 순차적이고, 안정적으로 전달
  • 전송: 입력된 Port 번호에 해당하는 프로세스에 Data를 전달

Transport Layer가 있어야 하는 이유

Transport Layer가 없으면 순차적인 전송을 원활하게 할 수 없기 때문이다

순차적인 전송이 안되는 경우의 수

  1. flow(흐름 문제): 송수신간 data 처리 속도 차이로 발생
    수신자(서버)가 처리할 수 있는 용량이 초과된 상태에서 계속 data가 들어가면 data가 수신이 > 안되고 누락되는 경우 발생한다.즉, 데이터가 너무 빨리 도착해서 생긴 문제이다.

  2. congestion(혼잡 문제): 네트워크가 너무 복잡해서 발생
    네트워크가 복잡하게 얽혀 있어 제시간에 data가 도착하지 않아 전달이 이뤄지지 않는 경우 발생한다. 즉, 데이터가 너무 늦게 도착해서 생긴 문제이다.

TCP

  • 신뢰성 있는 data 통신이 가능한 프로토콜이다
  • 3way handshake 즉, 양방향 통신을 통해 연결을 한다
    → data를 순차적으로 전달하여 흐름 문제, 혼잡 문제를 해결한다

3way handshake

Segment

network 내에서 데이터가 전달되는 단위로 Application 계층에서 data를 보내면, TCP에서 data를 segment로 쪼갠다

SYN: Connection을 생성할 때 사용하는 flag
FIN: Connection을 끊을 때 사용하는 flag
ACK: data를 전송하면 수신자가 받았음을 알려주기 위해 쓰는 Flag

Connection 생성

Data 전송

Connection 해제(4way handshake)

TCP의 문제점

  • 매번 연결할 떄마다 3way handshake를 해야하기에 시간이 오래걸린다
  • 단 1개의 데이터 손실이 나더라도 재전송을 해야한다

UDP

  • TCP보다 신뢰가 떨어지지만 전송 속도가 빠르다
  • 순서 보장X, 흐름 제어X, 혼잡 제어X
    • Connection 과정이 존재하지 않는다 → 일방적으로 보낸다
    • checksum을 통해 오류를 잡는다

Datagram

Data 전송

마무리

  1. TCP, UDP 속성을 이해하고, 프로젝트에 적절한 프로토콜을 선택해서 사용해야 한다
  2. Header에 대해 잘 알면, 성능 개선에 도움이 될 수 있다.

참고자료
Mind-Net
글쓰는 개발자_Jbee
르윈의 TCP UDP
TCP in a nutshell

profile
오늘 배운건 오늘 소화하자!
post-custom-banner

0개의 댓글