adsense

글 목록

TCP, UDP, SCTP의 특징 및 연결과정

TCP

TCP 개요 

스트림 기반 프로토콜
(TCP에서의 패킷 - 세그먼트)

연결 지향 서비스
  • 두 TCP간 가상 연결 설정
  • 양방향으로 데이터 교환
  • 연결 종료

흐름 제어

오류 제어

혼잡 제어





TCP 연결

크게 3가지 단계로 볼 수 있다.

1. 연결 설정
  • 3-way handshake

2. 데이터 전송

3. 연결 종료
  • 3-way handshake
  • 4-way handshake(half-close)

각각의 단계에 대하여 구체적으로 알아보도록 하자.


1. 연결 설정

UDP의 경우 포트 번호만 사용하여 응용프로그램을 식별하지만 TCP의 경우 연결 사용하여 응용프로그램을 식별한다.




  1. SYN=1인 플래그시작 순차 번호(Initial Sequence Number) 가지는 SYN 세그먼트 전송
  2. 서버는 SYN=ACK=1로 된 플래그자신의 Seq Ack=사용자의 seq+1 값 전송
  3. ACK=1인 플래그서버로부터 받은 SeqAck=서버의 Seq+1  전송   





SYN: Synchronize sequence number
ACK: Acknowledgement valid
FIN: Terminate the connection

(제어 필드의 flag )
Sequence number

  • 신뢰성 있는 연결 보장하기 위하여 전달되는 각 바이트마다 번호 부여
Acknowledge number

  • 수신한 노드가 상대 노드로부터 Seq number X 수신시 확인응답으로 X+1 수신




(참고 사항)

➮ SYN flooding 공격(3-way handshake를 이용한 공격)






서버가 모든 SYN 패킷에 대해 세션을 생성하고 응답 대기하도록 하여 부하가 걸린다.






SYN flooding 공격을 경감하기 위한 방법

  • 정해진 시간동안 들어오는 연결 수 제한
  • 원하지 않는 발신지 주소로부터 들어오는 데이터그램을 여과해서 제거
  • 쿠키를 사용하여 전체 연결이 설정되기 전까지는 자원 할당을 연기(SCTP에서 인증시 사용)








3. 연결 종료



  1. FIN=1로 설정한 FIN 세그먼트 전송
  2. 서버는 FIN=ACK=1로 설정한 FIN+ACK 세그먼트 전송
  3. ACK=1인 플래그





서버는 사용자에게 데이터 전송 후에 FIN 전송하여 연결을 종료한다.







흐름제어

TCP_IP Protocol Suite 4th ed. - B. Forouzan (McGraw-Hill, 2010)


오류제어

전송된 세그먼트가 손실훼손순서가 뒤바뀐 경우 재전송을 통한 오류제어

순서가 어긋난 세그먼트
순서 다르게 들어오는 세그먼트 일시적으로 저장프로세스로는 순서에 맞게 전달


손실 세그먼트

TCP_IP Protocol Suite 4th ed. - B. Forouzan (McGraw-Hill, 2010)


확인응답 손실

이전 Ack 못받아도 누적 확인응답을 통해 다음 확인응답은 자동으로 이전 확인응답 손실 보정





TCP_IP Protocol Suite 4th ed. - B. Forouzan (McGraw-Hill, 2010)


수신 버퍼 공간이 순서대로
다 채워지기 전까지는

응용프로세스에게 전달하지 않음





TCP_IP Protocol Suite 4th ed. - B. Forouzan (McGraw-Hill, 2010)

빠른 재전송

타이머 만료되지 않아도 3개의 중복응답 수신시 확인응답에 따른 세그먼트 재전송 








혼잡 제어


TCP_IP Protocol Suite 4th ed. - B. Forouzan (McGraw-Hill, 2010)
 느린 시작지수 증가(Exponential Increase)
  • 혼잡 윈도우(cwnd: congestion window) 크기는 하나의 최대 세그먼트 크기에서 시작
  • ACK 도착 시 cwnd 크기 2의 승수 형태로 증가
  • 윈도우 크기가 느린 시작 임계치(ssthresh: slow start threshold) 도달하면 느린시작 중지




TCP_IP Protocol Suite 4th ed. - B. Forouzan (McGraw-Hill, 2010)

혼잡 회피가산 증가(Additive Increase)
  • 느린 시작 임계치에 도달하면 가산 단계 시작
  • 혼잡 감지되기 전까지 윈도우 크기 가산적으로 증가








혼잡 감지지수 감소(Multiplicative Decrease)
혼잡 발생시 혼잡 위도우  크기 줄이고 임계치 값을 현재 윈도우의 반으로 설정
1.시간 초과

2.세 개의 중복 ACK 수신







UDP(User Datagram Protocol)

비연결형 서비스
  • UDP 패킷은 동일한 응용 프로그램으로부터 전송되는 다른 패킷들과 독립적
  • 클라이언트 응용이 서버에게 짧은 요청을 전송하고 짧은 응답을 수신하고자 하는 경우 효율적

혼잡제어 미제공
  • UDP는 비연결형 프로토콜이므로 혼잡제어를 제공하지 않음

오류제어 미제공
  • 오류 제어를 제공하지 않기 때문에 비신뢰성 서비스 제공


      (선택적으로 검사합은 사용 가능)



메시지 전달 시 지연이나 재전송이 발생하면 안되는 실시간 응용들에 의해 사용
Ex실시간 스트림 영상
전송 계층 훼손되거나 손실된 프레임 재전송 시 전체 전송 동기 맞지 않게 됨

UDP 상에서 동작하는 스트리밍 오디오영상음성 등은 순서에 어긋난 프레임들을 수정하지 않고 재순서화 하거나 버려야 






SCTP(Stream Control Transport Protocol)


신뢰성 있는 메시지 지향적인 프로토콜

  • SCTP의 데이터 단위는 데이터 청크(chunk)
연결 지향 서비스

  • Association 통해 상호 연결 후 데이터 전송
신뢰성 있는 서비스

  • 오류제어흐름제어응답확인
다중 스트림(실시간 지원 가능)

  • 다중스트림 서비스 제공
  • 스트림 중 하나가 블록되어도 다른 스트림이 데이터 전송
멀티호밍 (multihoming)

  • 각 단말의 다중 IP 주소 정의현재 SCTP 구현에서는 IP 주소 한 쌍만이 선택됨
  • 다른 경로는 주 경로가 연결 실패하면 사


SCTP association & termination 

TCP_IP Protocol Suite 4th ed. - B. Forouzan (McGraw-Hill, 2010)


Asscoiation 과정

INIT
Client에서 connect 시도
INIT ACK
서버의 상태 정의하는 cookie 전송
COOKIE ECHO
서버로부터 받은 쿠키 되돌려보냄
COOKIE ACK
수신에 확인응답 전송리소스 할당



Asscoiation Termination 과정




  1. SHUTDOWN
  2. SHUTDOWN ACK
  3. SHUTDOWN COMPLETE