TCP와 UDP

케찹 저장소·2021년 4월 26일
0

네트워크 스터디

목록 보기
1/1
post-thumbnail
post-custom-banner

OSI 7계층 중 4계층에 해당하는 Transport Layer...
대표적인 프로토콜인 TCP와 UDP를 이해해보자.

TCP(Transmission Control Protocol, 전송 제어 프로토콜)

TCP는 전송계층(Layer 4)에서 동작하는 프로토콜로써 다음과 같은 특징을 지닌다.

  1. 신뢰성 있음(Reliable): 패킷 손실, 중복, 순서 바뀜이 없음을 보장한다.
  2. 연결지향적(Connection-oriented): 통신이 시작되기 전 송수신측 간 논리적 연결이 설정됨.
  3. 양방향성(Full-Duplex): 항상 양방향 통신이 가능함. 클라이언트 → 서버 서버 → 클라이언트
  4. 단대단(1:1) 전송 방식: 멀티 캐스트(1:多)가 불가능함.
  5. 세그먼트화 처리: 바이트를 모아 세그먼트화 하고, 헤더를 붙여 순서를 제어한다.
  6. 흐름 제어: 순서 번호, 승인 번호, 윈도우 크기 를 통해 흐름을 제어한다.
  7. 혼잡 제어: 수신 윈도우혼잡 윈도우 변수 값을 통해 네트워크가 혼잡하다고 판단되면 송신률을 감속함.

TCP 연결 과정 (연결 지향적, 양방향성)

3 way handshaking

연결 세션 설정을 위해 3 way handshaking 과정을 거친다.

  • 연결이 시작됨과 동시에 옵션이 교환되었음을 알린다.
  • ISN(랜덤한 초기 순서번호)를 생성하고 교환했음을 알린다.

교환되는 정보:

ISN, 수신 윈도우 크기, 옵션 정보

4 way handshaking

3 way handshaking을 통해 개설된 세션을 통해 데이터를 주고 받은 후, 4번의 패킷 교환으로 연결을 종료한다.

  • TCP 연결 종료는, 양방향 2개 연결을 각 측이 독립적으로 닫게 된다.
  • 여러 종료 상황이 있을 수 있음(정상 종료, 반 종료, 동시 종료, 강제 종료 RESET)

TCP 세그먼트

TCP는 Layer 4의 프로토콜로서 데이터 단위는 세그먼트 이다.

TCP 세그먼트는 IP(Layer 3)의 데이터그램으로 전달된다. IP 헤더에는 출발지 IP 주소와 도착지 IP주소가 포함되어 있다.

IP → IP 헤더 + 데이터(TCP 헤더 + 데이터)

따라서 TCP 세그먼트 중 TCP 헤더는 다음과 같은 데이터를 담고 있다.

  • Sequence Number (순서번호): 순서를 구분하기 위한 바이트 단위의 번호이다. 연결이 처음 성립될 때 Initial Sequence Number(ISN)이 난수 발생기에 의해 생성된다.
  • Acknowledgement Number (승인번호) : 수신하기를 기대하는 바이트 번호

  • Windows Size : 흐름 제어, 혼잡 제어에 사용되는 슬라이딩 윈도우 기법을 위한 윈도우 크기

슬라이딩 윈도우

TCP 데이터를 주고 받을 때 매 통신 마다 ACK을 확인하면서 데이터를 주고 받으면 매우 불편하다(stop and wait 방식)

따라서 임의의 크기만큼 ACK 없이도 데이터를 바로바로 보내도록 하는 방법이 슬라이딩 윈도우 방식이다.

위의 그림과 같이 승인(ACK) 번호는 수신하기를 기대하는 번호를 보내는 형식이다.


UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)

TCP와 대비되는 프로토콜로서 다음과 같은 특징을 가진다.

  • 비연결성 : handshake 없음
  • 신뢰성 없음: 흐름제어, 순서제어, 확인 응답 없음
  • 순서화되지 않음: 순서번호 필드가 존재하지 않음
  • 실시간 응용 및 멀티캐스트 가능
  • 단순한 헤더: 고정 8 바이트

UDP는 TCP와 다르게 강제되는 일련의 과정이 없기 때문에 사용자가 자유롭게 커스터마이징할 수 있다.

UDP 헤더

UDP는 8 바이트로 고정된 길이의 헤더를 가지고 있다.

checksum 값을 이용해 오류를 제어할 수 있지만, checksum을 0으로 지정해서 이를 생략할 수 있다.

이런것도 있다...

기존의 TCP와 UDP를 커스터마이징해서 HTTP 환경에서 더 빠른 통신을 하려는 노력도 진행되고 있다...

TCP Fast Open

QUIC

일부 그림 출처:
http://www.ktword.co.kr/

profile
Ketchup_ninja
post-custom-banner

0개의 댓글