TCP, UDP

JIHYE·2023년 4월 21일
0

[CS지식]

목록 보기
6/8
post-thumbnail

1. 전송계층(Transport Layer)

  • IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층
  • End Point간 신뢰성있는 데이터 전송을 담당하는 계층
  • 신뢰성 : 데이터를 순차적, 안정적인 전달
  • 전송 : 포트 번호에 해당하는 프로세스에 데이터를 전달

1.2 전송계층의 중요성

  • 데이터의 순차 전송을 가능하게 해줌
  • 흐름문제(Flow) : 송수신자 간의 데이터 처리 속도 차이. 수신자가 처리할 수 있는 데이터 양을 초과
  • 혼잡문제(Congestion) : 네트워크의 데이터 처리 속도. 네트워크가 혼잡할 때 ex) 라우터
    -> 데이터 손실 발생

2. TCP (Transmission Control Protocol)

  • 신뢰성있는 데이터 통신을 가능하게 해주는 프로토콜
  • 3 way-handshake 연결. 양방향 통신
  • 데이터의 순차 전송을 보장
  • 흐름 제어 (Flow Control)
  • 혼잡 제어 (Congestion Control)
  • 오류 감지 (Error Detection) - checksum

2.1 TCP의 특징

2.1.1 연결형 서비스

  • 연결형 서비스로 가상 회선 방식을 제공
  • 3-way handshaking 과정을 통해 연결을 설정
  • 4-way handshaking 을 통해 연결 해제

2.1.2 흐름제어(Flow control)

  • 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
  • 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막음
  • 수신자가 윈도우크기(Window Size) 값을 통해 수신량을 정할 수 있음

2.1.3 혼잡제어(Congestion control)

  • 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지
  • 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막음

2.1.4 신뢰성이 높은 전송(Reliable transmission)

  • Dupack-based retransmission
    정상적인 상황에서는 ACK 값이 연속적으로 전송
    ACK값이 중복으로 올 경우 패킷 이상을 감지하고 재전송을 요청

  • Timeout-based retransmission
    일정시간동안 ACK 값이 수신을 못할 경우 재전송을 요청

전이중, 점대점 방식

  • 전이중 (Full-Duplex) : 전송이 양방향으로 동시에 일어날 수 있음
  • 점대점 (Point to Point) : 각 연결이 정확히 2개의 종단점을 가지고 있음
    --> 멀티캐스팅이나 브로드캐스팅을 지원하지 않음

2.2 TCP HEADER


세그먼트(Segment) - TCP 프로토콜의 PDU

  • 데이터 단위
  • Data -> TCP HEADER + Data 여러개로 분리

TCP Connection (3-way handshake)

  • 먼저 open()을 실행한 클라이언트가 SYN을 보내고 SYN_SENT 상태로 대기
  • 서버는 SYN_RCVD 상태로 바꾸고 SYN과 응답 ACK를 보냄
  • SYN과 응답 ACK을 받은 클라이언트는 ESTABLISHED 상태로 변경하고 서버에게 응답 ACK를 보냄

TCP Disconnection (4-way handshake)

  • 먼저 close()를 실행한 클라이언트FIN을 보내고 FIN_WAIT1 상태로 대기
  • 서버CLOSE_WAIT으로 바꾸고 응답 ACK를 전달. 동시에 해당 포트에 연결되어 있는 어플리케이션에게 close()를 요청
  • ACK를 받은 클라이언트는 상태를 FIN_WAIT2로 변경
  • close() 요청을 받은 서버 어플리케이션은 종료 프로세스를 진행하고 FIN을 클라이언트에 보내 LAST_ACK 상태로 바꿈
  • FIN을 받은 클라이언트는 ACK를 서버에 다시 전송하고 TIME_WAIT으로 상태를 바꿈. TIME_WAIT에서 일정 시간이 지나면 CLOSED 됨. ACK를 받은 서버도 포트를 CLOSED로 닫음

💡간단요약
1. 데이터를 전부 송신한 client가 FIN 송신
2. 서버에서 ACK 송신
3. 서버에서 남은 패킷 송신 (일정 시간 대기)
4. 서버가 FIN 송신
5. 클라이언트가 ACK 송신

TCP 문제점

  • 신뢰성은 보장하지만 매번 CONNECTION 연결로 시간 손실 발생
  • 패킷을 조금만 손실해도 재전송

3. UDP (User Datagram Protocol)

  • 신뢰성이 떨어지지만 전송 속도가 빠른 프로토콜
  • 순차 전송x, 흐름제어x, 혼잡제어x
  • Error Detection
  • 비교적 데이터의 신뢰성이 중요하지 않을 때 사용 ex) 영상 스트리밍

3.1 UDP HEADER

User Datagram - UDP 프로토콜의 PDU
Data -> UDP HEADER + Data (데이터를 쪼개지 않음)

[출처]

0개의 댓글