[CS] TCP UDP SCTP

보람찬하루·2024년 5월 11일
0

CS

목록 보기
1/2

TCP

  • TCP(Transmission Control Protocol) : 전송 제어 프로토콜
    • 특징
      - 가장 보편적
      - Process to Process
      - 가상 연결
      - non real time 서비스에 적합
      - 전이중 통신(버퍼)-피기배킹
      - 다중화/역다중화(분할Fragmentation/조립assemble)

    • 목적 : 신뢰성
      • GBN+SR
      • 검사합(checksum)을 통한 오류검출
      • 재전송
      • Acknowledgement
      • 타이머
      • 노력 : (가상 연결, 재전송, 버퍼, 세그멘테이션, 넘버링)을 통한 오류/흐름제어

    • 가상 연결(Virtual Connection) : 가상 경로를 통해 데이터 전송
      • 연결지향
      • Stream Delivery Service
      • 오류제어 흐름제어 가능

    • 송수신 버퍼
      • 목적 : 생산과 소비 프로세스 간 속도의 불균형 처리
      • 특징 : 송신용 수신용 2개의 버퍼사용, a와 b 통신시 버퍼 4개 필요

    • 세그먼트 : 다수의 바이트를 묶어 그룹화 ↔ Fragmentation

    • Numbering System
      • 특징
        1. Byte No.사용

          : TCP연결 상태에서 전송되는 모든 데이터 바이트에 번호 부여

          • 각 방향에 독립적
          • 송신 버퍼에 저장시 TCP에 의해 부여, 임의로 생성된 번호로 시작
          • 0~23212^{32}-1
          • 시퀀스번호와 에크번호는 바이트 번호 참조
        2. Sequence No.

          : 바이트넘버 선정 후 세그먼트에게 순서 할당

          • 첫번째 세그먼트의 번호 : 임의번호 (ISN-초기 순서 번호)
          • 어떤 세그먼트의 순서번호 = 이전 S의 번호 + 이전 S가 운반된 바이트 수
          • 연결 설정,종료,중단을 위한 세그먼트느 1개 순서 번호 소비
        3. Acknowledgement No.
          : 상대방이 수신하기를 기대하는 다음 바이트 번호
          - 누적됨

    • TCP 헤더
      • 구조 : source port, destnation port, sequence No, ack No, data offset(length), reserved, window size, tcp checksum, control bit, urgent pointer, options, 패딩

    • 동작
      1. 연결 설정

        : 양쪽이 통신을 초기화하고 데이터를 전송하기 전 승인을 얻는 과정

        • 3 way handshaking
          • SYN : 데이터 운반불가, 순서번호(Seq No) 1개 소비
          • SYN+ACK : 데이터 운반 불가. 순서번호 1개 소비
          • ACK : 데이터 운반가능, 운반x 순서번호 소비 x
        • SYN 플로딩 공격 : D-DOS 공격의 일종, 대량의 SYN 세그먼트 서버에 송신하여 시스텀 붕괴
      2. 데이터 전송

        • PSH : 송신 TCP 윈도우가 채워지는 것을 기다려서는 안됨>>바로전송
        • URG : urgent data에 대해 선택사항, 처리방법은 응용 프로그램이 결정
      3. 연결 종료

        : 서버 or 클라이언트가 연결종료

        • 3 way handshaking(일반적)
          • FIN : 데이터 운반 불가. 순서번호(Seq No) 1개 소비
          • FIN+ACK : 데이터 운반 가능, 운반x 순서번호 1개 소비
          • ACK : 데이터 운반 불가, 순서번호 소비x
        • half-close : 4 way handshaking
          • 데이터를 받고 있는 도중 한쪽에서 데이터 전송 중단
          • FIN+ACK: 데이터 운반 불가, 순서번호 1개 소비
          • 서버가 처리된 모든 데이터를 보내면 FIN,ACK 송수신 및 최종 종료
      4. 연결 재설정(리셋)

        : 한 종단의 Tcp가 연결 요구 거부,중지,유휴연결

        • RST flag

  • TCP window
    • 양방향 통신에선 4개 필요(송신2, 수신2)
    • 송신 window
      • vs SR protocol
        SR protocol송신 window
        제어변수패킷 번호바이트번호(tcp)
        타이머개수전송 패킷마다 각각1개
      • shrink & open & close 존재이유 : 수신 윈도우 크기에 맞춰 조절하기 위해서
    • 수신 window
      • vs SR protocol
        SR protocol송신 window
        수신윈도우2^(m-1)≤ 버퍼크기
        확인 응답 방식선택적 방식누적 확인응답 방식 ≒ GBN
        새로운 TCP : 누적 선택적 확인응답 방식 모두 사용
      • 축소 xx
  • Flow Control : 생산자의 데이터 생성과 소비자의 데이터 소비의 속도의 균형을 맞추는 것
    • push & pull로 처리
    • 문제점
      • Silly Window Syndrome : 비효율적 데이터 전송
        • 원인 (>> 여러개씩 할 수 있는데 1개씩 처리)
          1. 전송측에서 데이터를 천천히 발생
          2. 수신측에서 데이터를 천천히 소비
        • 해결방안 송신측 : Nagle’s algorithm 수신측 : Clark’s solution, delayed acknowledgement
        • Nagle’s algorithm
          • 해결요인 : 비효율적 데이터 전송과 지연 문제 해결
          • 특징 :
        • Clark’s solution
          • 데이터 도착하자마자 확인응답 0으로 전송
        • Delayed acknowledgement
          • 세그먼트가 도착하더라도 즉시 ack 보내지 않고 버퍼에 충분한 공간이 생길때까지 응답 보류

  • Error Control
    • 신뢰성 제공 : 훼손 세그먼트 감지 및 재전송
    • 방법
      1. CheckSum
      2. Ack
      3. Time out : 만료시 재전송
      4. Retransmission : 오류제어 메커니즘 핵심
        • 동작 : 재전송 타이머 만료시, 첫번째 세그먼트에 대한 3개의 중복 ACK 수산
        • RTO
        • Fast retransmission
    • 교착상태 : 확인응답의 손실로 인해 발생 ACK의 ACK가 없어서
      • 해결방법 : Persistence Timer

  • Congestion Control
    • 혼잡 = time-out & 3개의 중복 ack 수신한 상태
    • 실제 윈도우 크기 = rwnd(수신윈도우사이즈)랑 cwnd(혼잡윈도우사이즈) 중 작은 값
    • 해결방법
      1. Slow start algorithm

        : 임계값(slow start threshold)까지 지수적 증가

      2. Congestion avoidance algorithm

        : 임계값(slow start threshold)까지는 2n2^n , 이후 +1+1+1-1이런식(봐가면서)

  • Timer
    1. Retransmission timer : 한 세그먼트에 대한 확인 응답을 기다리는 시간
    2. Persistemce timer
      • 교착 상태 해결 타이머
      • 구동 조건 : 윈도우 크기 0을 갖는 ack 수신
      • Probe Packet 사용
    3. Keep alive timer : 연결이 오랜기간동안 휴지상태에 있는것을 방지
      • 전송할 데이터 없을 때 사용
      • 얘만 서버에서 동작
      • 응답 미수신시 클라이언트 다운으로 간주 >> 종료
    4. Timer wait timer : 연결 종료 동안 사용
      • 값 : MSL(세그먼트가 버려지기 전에 네트워크가 존재할 수 있는 시간)x2

UDP

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

  • 특징
    - Process to Process
    - Real time service : voice, video
    - Connectionless service : 연결/종료과정 없음
    - 비신뢰성
    - 캡슐화
    - 다중화 / 역다중화
    - 제어
    - 오류제어 - Checksum만함
    - 혼잡제어 x
    - 흐름제어 x window x 수신측 : 오버플로 발생가능
    - vs simple protocol
    - checksum : 오류가 있으면 feddback 없이 폐기
    - overflow : 심플 - 버퍼 오버플로 발생 x , udp - 수신측 오버플로 발생 가능

  • 장점
    - 최소한의 오버헤드
    - 단순함
    - 서버로 짧은 요구를 전송하고 짧은 응답을 수신하는 경우 유용

  • 구조

    • 헤더 : 8byte
      • Source Port No, Destination Port No, total length, CheckSum
    • data

  • 데이터 전송단위 : 데이터그램


SCTP

  • SCTP(Stream Control TRansmission Protocol) : 스트림 제어 전송 프로토콜

  • 특징

    • Multimedia Communication
    • Udp +Tcp
    • Process to Process
    • 전이중 통신
    • 연결지향 서비스 - sctp에서의 연결 : 결합(association)
    • 신뢰성 - ACK
  • 데이터 전송단위 : chunk

    TCPUDPSCTP
    데이터 전송 단위세그먼트데이터그램Chunk

  • Multimedia Communication : 다중 스트림 서비스를 각 연결에 허용

  • Multihomming : 종단간 다수의 ip 주소 정의 가능
    - 하는 이유 : 하나의 경로 실패 시 다른 경로를 통해 전송

  • 식별자
    - TSN : 전송 순서 번호 ≒ TCP sequence No (32bit)
    - 데이터 단위 : Chunk(vs TCP : byte)
    - SI : 스트림 식별자 (16bit)
    - SSN : 스트림 순서번호

  • ACK
    - chunk지향적 TSN참조
    - data chunk : sack에 의해 확인응답 가능
    - control chunk : 제어정보 운반 TSN 필요 x 순서번호, 확인응답 번호 필요 x
    - init 제어청크 >> init ACK 청크로 확인응답

  • 패킷 구성
    - header : Source Port No, Destination Port No, Checksum
    - control chunks
    - data chunks

  • SCTP association : 연결 지향 프로토콜 ( 멀티홈잉 강조를위해 association지칭)

    • Assotication dstalishment
      • 4 way handshake (vs TCP : 3way handshake)
      • VT(Verification Tag) : assotication별 할당하며 세션 식별자로 활용
      • 쿠키 : 세션에 대한 사용자 인증 기능 제공
    • Data transmission
      • 피기배킹 지원
      • data Chunk : TSN 사용, SACK 청크에 의해 확인응답
      • 멀티홈잉 데이터 전송
      • 멀티스트림 전달
      • 단편화 - Maximum Transfer Unit
    • Assotication termination
      • 클라이언트 서버 모두 active close 가능
      • half-close 허용 x : tcp와의 차이
      • Shutdown ACK

  • Flow Control

    • 단위
      • rwnd/ cwnd : 바이트단위
      • TSN / ACK No : Chunk
    • 수신측 :1개의 버퍼와 3가지 변수 유지
      • cunTSN : 수신된 마지막 TSN
      • winSize : 이용가능한 버퍼 크기
      • lastAVK : 마지막 누적된 확인응답
    • 송신측:1개의 버퍼와 3가지 변수 유지
      • curTSN : 송신이 되는 다음 청크
      • rwnd: 수신기에 의해 공개된 마지막 값
      • inTransit: 확인 응답 되지 않은 바이트 수

  • Error Control

    • 수신측 : sack 송신
    • 송신측 : sack 수신, timer
    • 데이터 청크 송신
      • 재전송(이발생하는 상황, 손실로 간주되는 상황) : 재전송 타이머 만료 sack4번 수신
    • sack 청크 생성
    • vs TCP : ack, timer checksum
  • Congestion Control : tcp와 동일

profile
를 만들어 가자

0개의 댓글