생성일: 2021년 11월 6일 오후 3:24
9.1 전송계층 서비스
- 전송층은 응용층과 네트워크층 사이에 위치, 응용층에 서비스를 제공하는 책임이 있다. 이것은 네트워크층으로부터 서비스를 받는다.
- 전송층은 논리적 연결의 책임을 지고 있다.
라우터와 스위치에는 전송층이 없다.
- 포트번호 (Port Number)
- 캡슐화와 캡슐제거 (Encapsulaton & Decapsulation)
- 다중화와 역다중화 (Multiplexing & Demultiplexing)
- 엔티티가 둘 이상의 소스에서 항목(items)을 받을 때, 이를 다중화라고 한다.
- 엔티티가 둘 이상의 목적지에서 항목을 전달할 때마다 이를 역다중화라고 한다.
- 소스의 전송층은 다중화, 목적지의 전송층은 역다중화 실행
- 흐름제어(Flow Control)
-
데이터가 많아서 넘치거나 적어서 부족한 상황을 방지
-
전송층 통신에서 우리는 4개의 엔티티(Entity)를 처리
- 발신자 프로세스, 발신자 전송계층, 수신자 전송 계층, 수신자 프로세스
-
전송 프로세스는 생산자(producer) : 메시지 청크(Chunk)를 생성하여 전송 계층으로 푸쉬
-
송신 전송 계층은 소비자(consumer)이자 생산자라는 이중 역할
-
메시지를 패킷으로 캡슐화, 수신 전송 계층으로 푸시
-
메시지를 캡슐 제거하고 어플리케이션 계층에 전달 하는 것은 발신자 및 생산자로부터 수신된 패킷에 대한 소비자
전송층에서 흐름제어
- 에러제어(Error Control)
- 전송층에서 오류제어
- 손상된 패킷 검출, 폐기
- 손실되거나 폐기된 패킷 추적, 재전송
- 중복전송 패킷 인지, 폐기
- Missing 패킷이 도착할 때까지 out-of-order 패킷들을 버퍼링
- 흐름제어와 오류제어의 결합
-
흐름제어는 두 개의 버퍼 사용 (발신자에서, 수신자에서)
-
오류제어를 위해 양쪽에서 시퀀스 및 승인 번호 사용
-
이 두가지 요구 사항은 두개의 번호가 매겨진 버퍼를 사용하는 경우 결합 가능
선형 형태의 슬라이딩 윈도우
- 비연결형과 연결-지향 프로토콜
- 전송층에서는 패킷의 물리 경로에 대해서는 관여 X
- 비연결형 서비스는 패킷 간의 독립성 의미, 연결 지향은 종속성 의미
9.2 전송-계층 프로토콜
TCP/IP 프로토콜 그룹에서 전송층 프로토콜 위치
- 서비스
- UDP
- UDP는 오류 제어가 응용층 프로세스에 의해 제공되는 응용에서 단순성과 효율성으로 사용되는 신뢰성 없는 비연결 전송층 프로토콜이다.
- TCP
- TCP는 신뢰성이 중요한 어떤 응용에 의해 사용될 수 있는 신뢰성 있는 연결-지향 프로토콜이다.
- SCTP
- SCTP는 UDP와 TCP의 특성을 결합한 새로운 전송층 프로토콜이다.
- 포트번호
- 전송층에서 종단간 주소를 제공, 전송 계층에서 마치 네트워크층에서 IP주소가 하는 역할과 동일한 다중화와 역다중화를 위해 사용된다.
9.3 UDP
- 사용자 데이트그램 프로토콜 (UDP, user datagram protocol)
- 비연결, 신뢰성 없는 프로토콜
- 호스트간 통신 대신에 프로세스간 통신을 제공하는 것을 제외하고는 IP 서비스에 어떠한 것도 추가 X
- 사용자 데이터그램 (user datagram)
- UDP 패킷
- 2바이트(16비트) 인 4개의 필드로 만들어진 고정된 크기의 8바이트 헤더를 가짐
- 처음 두 필드 ⇒ 근원지와 목적지 포트 번호 정의
- 세 번째 필드 ⇒ 헤더에 데이터를 더한 사용자 데이터그램의 전체 길이 정의
- UDP 서비스
- 프로세스-대-프로세스 통신
- 비연결 서비스
- 흐름 제어 X
- 오류 제어
- 검사합
- 혼잡제어 X
- 캡슐호와 캡슐제거
- 큐잉
- 다중화와 역다중화
검사합 계산을 위한 의사헤더
- UDP 응용
- UPD는 신뢰성이 없지만 일부 응용에서 선호 (예를 들어, 택배의 당일배송은 비용을 증가시킨다. 고속 배송과 낮은 비용은 모두 원하는 형태이지만, 이들 각각은 충돌한다.)
- 흐름 및 오류 제어를 하지 않는 간단한 요청, 응답 통신을 요구하는 프로세스에 적당
- 별도의 흐름 및 오류 제어 기법을 가진 프로세서에 적당하다.
- SNMP, RIP 을 위해 사용됨
- UDP 사양
- 비연결 서비스
- 오류 제어의 결여
- 혼잡 제어의 결여
9.4 TCP
- 전송 제어 프로토콜 (TCP, transmission control protocol)
- 연결지향
- 신뢰성
- 분명하게 연결 설정, 데이터 전송, 연결 해제 단계 정의
- TCP 서비스
- 프로세스-대-프로세스 통신
- 스트림 전송 서비스
- 전이중 통신
- 다중화와 역다중화
- 연결지향 서비스
- 신뢰성 있는 서비스
- TCP 특징
- 세그먼트
- TCP 헤더
- 근원지 포트 주소 : 16 bit
- 목적지 포트 주소 : 16 bit
- 순서 번호 : 32 bit
- 확인 응답 번호 (acknowledgement number) : 32 bit
- 세그먼트 수신자가 상대방으로부터 바이트 번호 x를 성공적으로 수신했다면 x+1이 확인 응답 번호가 된다.
- 헤더 길이 : 4 bit
- 헤더 길이는 20~60 바이트가 될 수 있다. 따라서 이 필드의 값은 5~15 사이의 값
- 제어 : 6 bit
- 윈도 크기 : 16 bit
- 검사합 : 16 bit
- 긴급 지시자 : 16bit
- 선택항목
- TCP 연결
- 연결-지향 프로토콜 ⇒ 근원지와 목적지 사이에 가상 경로 설정 ⇒ 훼손, 손실된 프레임의 재전송, 확인 응답 프로세스 가능하게 함
- 한 메세지에 속하는 모든 세그먼트들은 이 가상 경로를 통해 전송
- 비연결 지향성 프로토콜인 IP 서비스들을 사용하는 TCP가 어떻게 연결 지향성인가?
- TCP 연결은 물리적이지 않고 바로 가상이라는 점이다. TCP는 상위 층에서 동작
- TCP는 세그먼트들을 수신자에게 전달하기 위하여 IP 서비스를 사용하지만 연결 자체를 제어함
- 캡슐화 (Encapsulation)
- 데이터 전송
-
연결이 설정되면 양방향 데이터 전송 가능
-
클라이언트와 서버는 양방향으로 데이터와 승인 정보 보낼 수 있음
-
승인 (ackowledgement)과 동일한 방향으로 이동하는 데이터가 동일한 세그먼트에 전달된다는 것을 아는 것으로 충분
-
승인은 데이터와 함께 피기백(piggyback)된다.
데이터 전송
세방향 핸드 쉐이킹을 사용한 연결 종료
- 연결 리셋 (Connection Reset)
- 한쪽 끝에 있는 TCP는 연결 요청을 거부하거나, 기존 연결을 중단하거나, 휴지상태(idle state)에 있는 연결을 종료할 수 있다.
- 이 모든 것은 RST(재설정) 플래그로 수행됨
- 상태 천이도
일반적인 시나리오의 시간축 다이어그램
- TCP의 윈도
- 흐름 제어 (flow control)
-
윈도우 축소
- 수신창(receive window)은 축소 불가
- 수신자가 rwnd 값을 정의하여 창을 축소하는 경우 송신창은 축소 가능
- 수신자는 마지막 및 새 확인 응답(last and new ack)과 마지막 및 새 rwnd 값(last and new receive window value) 사이의 다음 관계를 유지하여 송신창의 축소를 방지 해야 함
- new ackNo + new rwnd ≥ last ackNo + last rwnd
-
오류 제어
- TCP는 신뢰성 O ⇒ 응용 프로그램은 TCP가 전체 스트림을 순서에 맞고 오류, 손실, 중복 없이 상대편 응용 프로그램에게 전달함을 확신
- 훼손된 세그먼트 감지 및 재전송, 손실 세그먼트 재전송, 분실된 세그먼트가 도착 전 순서가 맞지 않는 세그먼트를 저장하고 중복 세그먼트의 감지 및 폐기
- 검사합, 확인응답(acknowledgement), 타임아웃 (timeout) 등을 통해 수행
-
TCP 혼잡 제어
-
혼잡 윈도우 (Congestion Window)
- Actual window size = minimum (rwnd, cwnd)
-
TCP의 혼잡 제어를 위해 다른 정책
- 느린 시작 : 지수 증가
Taho TCP의 예, SS는 느린 출발, CA는 혼잡 회피 상태를 의미한다.
Reno TCP의 예
가산 증가, 지수 감소
-
TCP 처리량 (Throughput)
- 혼잡창(congeston window)동작을 기반으로 하는 TCP의 처리량 cwnd가 RTT의 상수 함수인 경우 쉽게 찾을 수 있다.
- Throughput = (0.75) Wmax / RTT (Wmax는 혼잡시 평균 window의 크기)
-
TCP 타이머
- TCP 동작을 순조롭게 수행하기 위해 적어도 4개의 타이머 사용
- 재전송, 지속, 킵얼라이브, 시간-기다림 타이머
-
RTT
- 옵션
- TCP 헤더에는 최대 40 바이트의 옵션 정보 가능
- 목적지에게 부가 정보를 전달하거나 또는 다른 옵션의 정렬을 맞추기 위해 사용
9.5 SCTP
-
SCTP 결합
- SCTP는 TCP 처럼 연결지향 프로토콜
- SCTP에서는 멀티홈잉을 강조하기 위해 결합(association)이라고 함
-
흐릅제어
- TCP와 유사
- TCP에서는 하나의 데이터 단위 (바이트)를 다루지만 SCTP에서는 2개의 데이터 단위인 바이트와 청크를 다룸
-
오류 제어
- 송신기에 수신기 버퍼의 상태를 보고하기 위해 SACK 청크 사용
- 사로 다른 형태의 엔티티와 타이머 사용