/ PT

21 01 30

주제 : TCP, UDP


4계층 Transport Layer

Alt text

  • End Point 간의 데이터 전송을 담당하는 계층

TCP (Transmission Control Protocol)

  • 신뢰성있는 데이터 통신을 가능하게 해주는 프로토콜

TCP 특징

  • Connection 연결 (3 way-handshake)
  • 흐름제어(Flow Control) : 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
  • 혼잡제어(Congestion Control) : 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지
  • 오류감지(Error Detection) : 데이터 전달 중 오류 발생시 해당 데이터 재전송

세그먼트(Segment)

Alt text

  • 프로토콜단 에서 데이터가 처리되고 이동하고 하는데 이때 처리되는 단위를 세그먼트
  • 데이터를 전송 받으면 tcp 프로토콜안에서 데이터를 자르고 TCP Header를 추가

TCP Header

Alt text

3-way handshake

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

3-way handshake 과정

Alt text

  • [STEP 1]
    클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 되는 것이다.
  • [STEP 2]
    서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다.
    이때 서버는 SYN_RECEIVED 상태가 된다.
  • [STEP 3]
    클라이언트는 서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.

TCP 데이터 전송 방식

Alt text

4-way handshkae 과정

Alt text

  • [STEP 1]
    클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.
  • [STEP 2]
    서버는 일단 확인메시지를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 TIME_WAIT상태다.
  • [STEP 3]
    서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.
  • [STEP 4]
    클라이언트는 확인했다는 메시지를 보낸다.

TCP 문제점

  • 신뢰성있는 전송은 보장하지만..
  • 매번 Connection 연결 -> 시간적 손실
  • 패킷을 조금만 손실해도 재전송

UDP

  • TCP 보단 신뢰성이 떨어지지만 전송 속도가 빠른 프로토콜

UDP 특징

  • Connectionless(3 way-handshake x)
  • 오류감지(Error Delection)
  • 비교적 데이터의 신뢰성이 중요하지 않을때 사용(ex. 영상 스트리밍)

UDP Header

Alt text

UDP 데이터 전송 방식

Alt text


정리

  • TCP와 UDP 모두 Header가 존재
  • 포트 번호를 이용해서 데이터를 전달, 데이터 오류 검사를 위한 Checksum이 존재
  • TCP는 연결이 성공해야 통신이 가능(연결형 프로토콜), 3-way-handshake
  • UDP는 연결 없이 통신 가능 (비연결형 프로토콜)
  • 신뢰도를 생각한다면 TCP 속도가 중요하면 UDP

References.