2023. 1. 19. 17:55ㆍcomputer science
전송 계층
전송 계층은 애플리케이션 계층과 네트워크 계층 사이에 위치한다.
두 애플리케이션 계층(하나는 로컬 호스트에, 다른 하나는 원격 호스트에) 간에 프로세스 간 통신을 제공한다.
통신은 논리적 연결을 사용하여 제공된다.

전송 계층 서비스
전송 계층
애플리케이션 계층에 서비스를 제공한다.
- 프로세스 간 통신
- 캡슐화 및 캡슐화 해제
- 다중화 및 역다중화
- 흐름 제어
- 오류 제어
네트워크 계층에서 서비스를 수신한다.

Domain of network-layer protocol은 연결을 담당하고,
Domain of transport-layer protocol은 프로세스간의 연결을 담당한다.



소켓 주소
TCP 스위트의 전송 계층 프로토콜은 연결하기 위해 각 끝에서 IP 주소와 포트 번호를 모두 필요로 한다.
IP 주소와 포트 번호의 조합을 소켓 주소라고 한다.





Flow control은 과부하 조절이다.

- 손상된 패킷을 탐지하고 폐기한다.
- 손실 및 폐기된 패킷을 추적하고 재전송한다.
- 예시를 들자면 작게 말해서 안들리면 현상
- 반복해서 메시지를 보낸다.
- 중복 패킷을 인식하여 삭제하는 중이다.
- 오류인 줄 알고 메시지를 다시 보냈지만, 오류가 아닌 현상
- 누락된 패킷이 도착할 때까지 순서가 잘못된 패킷을 버퍼링하는 중이다.
- 데이터그램 per packing packet마다 경로가 다르고 순서가 다를 수 있어 맞춰주는 것이 중요하다.


Shifting을 한다.
위 그림처럼 막대형도 사용하지만 원형도 사용할 수 있다.
연결 Connection
전송 계층 프로토콜은 두 가지 유형의 서비스를 제공할 수 있다.
- 무연결 및 연결 지향
- 전송 계층에서 무연결 서비스는 패킷 간의 독립성을 의미한다.
- 연결 지향은 의존성을 의미한다.

인간은 예를 들어 나는(0) 당신을(1) 사랑한다(2), 나는(0) 사랑한다(2) 당신을(1)으로 0 1 2, 0 2 1 순서가 달라져도 의미를 이해하는데는 지장이 없다. 하지만 컴퓨터는 0 1 2로 송신했으면, 수신도 0 1 2로 해야 한다.
0 1 2 순으로 보냈는데 1보다 2가 먼저 도착할 경우 Message 2 hold는 buffer에 저장되어 0 1 2 순으로 메시지가 갈 수 있도록 한다.
Client에서 0 1 2로 보내면 Server에서는 0 1 2로 메시지를 수신한다.
전송 계층 프로토콜
- 다음을 통해 전송 계층 프로토콜을 생성할 수 있다. 이전 섹션에서 설명한 일련의 서비스를 결합한다.
- 이러한 행동들을 더 잘 이해하기 위해 프로토콜은 가장 간단한 프로토콜부터 시작하여 점차 더 복잡해진다.
- TCP/IP 프로토콜은 전송 계층을 사용한다. 이러한 프로토콜 중 일부를 수정하거나 조합한 프로토콜이다.
단순 프로토콜
단순 프로토콜
- 무연결
- 흐름 또는 오류 제어 없음
- 수신자는 수신한 모든 패킷을 즉시 처리할 수 있다.



중지 및 대기 프로토콜
중지 및 대기 프로토콜
- 연결 지향
- 흐름 및 오류 제어 모두 사용
- 송신자(Source)와 수신자(Destination) 모두 크기 1의 슬라이딩 창을 사용한다.
- 보낸 사람은 한 번에 하나의 패킷을 보내고 다음 패킷을 보내기 전에 확인 응답을 기다린다.
- 손상된 패킷을 탐지하려면 각 데이터 패킷에 체크섬을 추가한다.
- 체크섬이 올바르지 않으면 패킷이 손상되고 자동으로 삭제된다.


그림 2.5는 flow control과 비슷하다.

Go-Back-N 프로토콜(GBN)
GBN(Go-Back-N) 프로토콜
- 변속기 효율성 향상(파이프 채우기)
- 보낸 사람이 확인을 기다리는 동안 여러 패킷이 전환 중이어야 한다.


window size는 buffer로 memory만큼 저장한다.

5번까지는 잘 받았으니 ack된 것이다. 이제 6번을 주라고 하는 것이다.

R 뒤에 0 1 2는 받을 수 없다.

Sender는 window size가 fail날 때까지 계속 보낼 수 있다.
반대로 Receiver는 stop과 protocol이 똑같다.

선택적 반복 프로토콜
Go-Back-N 프로토콜의 문제
- 수신기는 하나의 변수만 추적한다.
- 순서가 잘못된 패킷을 버퍼링할 필요가 없다. 단순히 폐기된다.
- 그러나 기본 네트워크 프로토콜이 많은 패킷을 잃는다면 이 프로토콜은 비효율적이다.
- 단일 패킷이 손실되거나 손상될 때마다 송신자는 모든 미결 패킷을 재전송한다. 이러한 패킷 중 일부는 안전하고 정상적이지만 순서가 틀릴 수 있다.
선택적 반복 프로토콜
- 실제로 손실된 선택적 패킷만 다시 보낸다.
- loss난 것만 보내겠다는 것이다.


(생략) 참고만하자
loss난 패킷을 통해서 트랙을 유지한다.
양방향 프로토콜
이전 네 가지 프로토콜
- 단방향: 데이터 패킷은 한 방향으로만 이동하고 확인 응답은 다른 방향으로 이동한다.
양방향 프로토콜
- 실제로 데이터 패킷은 일반적으로 클라이언트와 서버, 서버 간에 양방향으로 흐른다.
- 또한 인정은 양방향으로 흐를 필요가 있다.
- piggybacking(피기백)은 양방향 프로토콜의 효율성을 향상시키는 데 사용된다.
- 패킷이 A에서 B로 데이터를 전송할 때, 그것은 또한 B에서 도착한 패킷에 대한 확인 피드백을 전달할 수 있다.
- piggybacking(피기백)은 양방향 프로토콜의 효율성을 향상시키는 데 사용된다.

ackNo는 잘 받았다는 알림이다.
piggybacking: timeout때문에 재전송 우려가 있다.
TCP/IP 프로토콜 스위트의 전송 계층 프로토콜 도입
이전 내용에서 전송 계층 뒤에 있는 일반적인 원리에 대해 논의한 후, 우리는 이번 3번째 챕터에서 (TCP/IP 프로토콜 제품군과 함께) 인터넷의 전송 프로토콜에 집중한다.
Internet

- UDP는 응용프로그램 계층 프로세스에 의해 오류 제어가 제공될 수 있는 응용프로그램에서 단순성과 효율성을 위해 사용되는 신뢰할 수 없는 무연결 전송 계층 프로토콜이다.
- TCP는 신뢰성이 중요한 모든 응용 프로그램에서 사용할 수 있는 신뢰성 있는 연결 지향 프로토콜이다.
- 위 내용은 수업에 나올 정도로 중요했다.
- SCTP는 UDP와 TCP의 기능을 결합한 새로운 전송 계층 프로토콜이다.
- SCTP는 간단하게 강의자료로 참고만 하는 것이 좋다.

UDP 및 TCP와 함께 사용되는 일부 잘 알려진 포트

UDP 및 TCP와 함께 사용되는 일부 잘 알려진 포트
UDP
사용자 데이터그램 프로토콜(User Datagram Protocol; UDP)
- 무연결, 신뢰할 수 없는 전송 프로토콜
- 최소 오버헤드를 사용하는 매우 간단한 프로토콜
사용자 데이터그램
UDP 패킷
- 호출된 사용자 데이터그램
- 각각 2바이트(16비트)씩 4개의 필드로 구성된 8바이트의 고정 크기 헤더를 가진다.
- 처음 두 필드
- 소스 및 대상 포트 번호
- 세 번째 필드
- 사용자 데이터그램, 헤더 및 데이터의 총 길이이다. 16비트는 0 ~ 65,535바이트의 총 길이를 정의할 수 있다.
- 마지막 필드
- 선택적 체크섬

UDP 서비스
UDP 서비스
- 프로세스와 프로세스 간 통신
- 무연결
- 흐름 제어 없음
- 오류 제어 없음
- 체크섬 (option)
- 정체 제어 없음
- 캡슐화 및 캡슐화 해제
- 대기 행렬 없음 (저장 안함)
- 다중화 및 역다중화

체크섬 계산을 위한 의사 헤더
UDP 응용 프로그램
- UDP는 흐름과 오류 제어에 대한 걱정이 거의 없는 간단한 요청-응답 통신이 필요한 프로세스에 적합하다. 대량 데이터를 전송해야 하는 FTP와 같은 프로세스에는 일반적으로 사용되지 않는다.
- UDP는 내부 흐름 및 오류 제어 메커니즘이 있는 프로세스에 적합하다. 예를 들어 TFIP(Trivial File Transfer Protocol) 프로세스에는 흐름 및 오류 제어가 포함된다. 그것은 UDP를 쉽게 사용할 수 있다.
- UDP는 멀티캐스팅에 적합한 전송 프로토콜이다. 멀티캐스팅 기능은 UDP 소프트웨어에는 내장되어 있지만 TCP 소프트웨어에는 내장되어 있지 않다.
- UDP는 SNMP와 같은 관리 프로세스에 사용된다.
- UDP는 라우팅 정보 프로토콜(RIP; UDP를 쓸 때)과 같은 일부 경로 업데이트 프로토콜에 사용된다.
- UDP는 일반적으로 수신된 메시지의 섹션 간에 불균일한 지연을 허용할 수 없는 대화형 실시간 응용 프로그램에 사용된다.
- OSPF는 linkstate packet를 만들어야 하기 때문에 데이터 베이스를 만들기 위해 TCP를 사용한다.
TCP
전송 제어 프로토콜(TCP)
- 연결 지향적이고 안정적인 프로토콜
- 연결 설정, 데이터 전송 및 연결 해체 단계를 명시적으로 정의한다.
- GBN 및 SR 프로토콜의 조합을 사용하여 안정성을 제공한다.
TCP 서비스
TCP가 애플리케이션 계층의 프로세스에 제공하는 서비스
- 프로세스 간 통신 Process to Process Communication (Peer to Peer X)
- 스트림 전송 서비스
- 송신 및 수신 버퍼
- 세그먼트
- 전이중 통신
- 멀티플렉싱 및 디멀티플렉싱
- 연결 지향 서비스
- 신뢰성 높은 서비스



TCP 기능
TCP의 서비스를 제공하기 위해 TCP는 몇 가지 기능을 가지고 있다.
- 세그먼트
- 연결
- Windows
- 흐름 제어
- 오류 제어
- 혼잡 제어
- RTT 기준 RTO
세그먼트
TCP에서 패킷을 세그먼트라고 한다.

Reserved 6bits는 나중에 쓰기 위해 남겨둔 것이다.
TCP 데이터그램에 의사 헤더 추가

TCP 데이터그램에 의사 헤더 추가
번호 부여 시스템 Numbering System
TCP 연결이 5,000바이트의 파일을 전송한다고 가정한다. 첫 번째 바이트는 10,001이다. 데이터가 각각 1,000바이트를 전달하는 5개의 세그먼트로 전송될 경우 각 세그먼트의 시퀀스 번호는 무엇일까?
예제 5.1 번호 지정 시스템 솔루션
다음은 각 세그먼트의 시퀀스 번호를 보여 준다.

각 연결에서 전송되는 데이터의 바이트 수는 TCP로 지정된다.
번호는 0에서 2^32 ~ 1 사이의 임의로 생성된 숫자로 시작한다.
1000 byte | 10001 ~ 15000 |
TCP연결
TCP는 연결 지향적이다.
- 모든 세그먼트는 논리적 경로를 통해 전송된다.
- 손상되거나 손실된 프레임의 재전송뿐만 아니라 확인 프로세스를 용이하게 한다.
- TCP 연결은 논리적이지 물리적 연결이 아니다.
- TCP는 IP 서비스를 사용하여 개별 세그먼트를 수신자에게 전달한다.
- 하지만, 그것은 연결 자체를 통제한다.




TCP의 Windows
TCP는 데이터 전송의 각 방향에 대해 두 개의 창(전송 창과 수신 창)을 사용한다.
- 양방향 통신을 위한 4개의 창

5.10 그림 a의 Send window size는 destination의 size이다.
5.10 그림 b는 1000 byte의 크기를 가지고 있다.

흐름 제어
흐름 제어
- 생산자가 데이터를 생성하는 속도와 소비자가 데이터를 사용할 수 있는 속도를 조정한다.
- TCP는 흐름 제어와 오류 제어를 분리한다.


Client → Server로 Data가 가고,
Server → Client로 ACK가 간다.
오류 제어
- TCP는 신뢰할 수 있는 전송 계층 프로토콜이다.
- 순서대로
- 실수 없이,
- 부품 분실 또는 복제 없음
- 오류 제어
- 손상된 세그먼트 탐지 및 재전송
- 손실된 세그먼트를 다시 보내는 중
- 누락된 세그먼트가 도착할 때까지 순서가 잘못된 세그먼트 저장
- 중복된 세그먼트 탐지 및 삭제
- 오류 제어를 위한 세 가지 간단한 도구
- 체크섬, 확인 응답 및 제한 시간(RTT(왕복 시간) 기준), Sequence Number
TCP 정체 제어
TCP는 다양한 정책을 사용하여 네트워크의 정체를 처리한다.
- 느린 시작: 지수 증가
- 정체 방지: 추가적 증가
- 빠른 복구
전송할 세그먼트 수를 제어하기 위해 TCP는 cwnd라는 혼잡 창을 사용한다. 이 창의 크기는 네트워크의 혼잡 상황에 의해 제어된다.
- 송신 = 최소값의 실제 창 크기(rwnd, cwnd)
TCP 송신자는 어떻게 네트워크에서 혼잡의 가능성을 탐지할 수 있을까?
- 시간 초과 : 세그먼트가 손실되고 그 손실이 혼잡으로 인한 것임을 의미한다. → 더 심각하다다.
- 세 개의 중복 ACK 수신: 한 개의 세그먼트가 누락되었지만 세 개의 세그먼트가 수신되었음을 의미한다. → 덜 심하다.


빠른 복구
- 중복 ACK가 도착하면(이 알고리즘의 사용을 트리거하는 중복 ACK 세 개(sthresh = cwnd/2, cwnd = ssthresh + 3)), cwnd = cwnd + (1/ cwnd)이다.

Taho TCP용 FSM

Taho TCP용 FSM
Taho TCP의 예

Taho TCP의 예
Reno TCP용 FSM

Reno TCP용 FSM
Reno TCP의 예

Reno TCP의 예
RTT 와 RTO
RTT: 왕복 시간
RTO: 재전송 시간 초과
측정 RTT(RTT_M): 세그먼트를 보내고 해당 세그먼트에 대한 승인을 받는 데 걸리는 시간을 의미한다.
평활 RTT(RTT): RTT_M과 이전 RTT_S의 가중 평균이다.

- α의 값은 구현에 따라 다르지만 일반적으로 1/8로 설정된다.
- 5 + 5 + 5 + 5 , 20 / 4 = 5
- 3 + 3 + 3, 9 / 3 = 3
- 5 + 3, 8 / 2 = 4
RTT 편차(RTT_D): RTT_S와 RTT_M을 기준으로 계산된다.

- β의 값도 구현에 따라 다르지만 일반적으로 1/4로 설정된다.
재전송 제한 시간(RTO): 평활화된 왕복 시간과 그 편차를 기반으로 한다.

Karn의 알고리즘과 지수 백오프
칸스 알고리즘
- TCP는 새로운 RTO를 계산할 때 전송된 세그먼트의 RTT를 고려하지 않는다.
지수 백오프
- RTO 값은 재전송 시마다 두 배가 된다.

크게 잡으면 계속 기다리게 된다.
Q. 칸스 알고리즘에서는 왜 적용을 안할까?
A. 늦게 온 (Lost) ACK인지 정상적 ACK인지 확인해야하기 때문이다.
SCTP
IMT2000 3GPP - 스트림 제어 전송 프로토콜
- 새로운 전송 계층 프로토콜
- UDP와 TCP의 일부 기능을 결합한다.
- 멀티미디어 통신을 위한 프로토콜을 만들기 위한 노력
SCTP 서비스
애플리케이션 계층 프로세스에 대한 SCTP 서비스
- 프로세스 간 통신
- 다중 스트림
- 멀티홈
- 전이중 통신
- 연결 지향 통신
- 신뢰할 수 있는 서비스
다중 스트림 개념

다중 스트림 개념
멀티홈 개념

멀티홈 개념
TCP 세그먼트와 SCTP 패킷의 비교

TCP 세그먼트와 SCTP 패킷의 비교
SCTP 기능
SCTP의 일반적인 특징
- 변속기 시퀀스 번호(TSN)
- 데이터 청크 번호 지정
- 스트림 식별자(SI)
- 각 스트림 식별
- 스트림 시퀀스 번호(SSN)
- 각 스트림의 각 데이터 청크 번호 지정

패킷, 데이터 청크 및 스트림
패킷 형식
SCTP 패킷
- 필수 일반 헤더와 청크라는 블록 집합이 있다.
- 두 가지 유형의 청크:
- 컨트롤 청크
- 연결 제어 및 유지 관리
- 데이터 청크
- 사용자 데이터 이동
- 패킷에서 제어 청크는 데이터 청크보다 먼저 온다.
- 컨트롤 청크
SCTP 패킷 형식

SCTP 패킷 형식
일반 헤더

일반 헤더
청크의 공통 레이아웃

청크의 공통 레이아웃
Chunks 청크

Chunks
'computer science' 카테고리의 다른 글
데이터링크 계층 (0) | 2023.01.19 |
---|---|
카카오톡으로 알아보는 OSI 7 Layer (0) | 2023.01.19 |
네트워크 계층 #2 (0) | 2023.01.19 |
네트워크 계층 #1 (0) | 2023.01.19 |
네트워크와 인터넷 (0) | 2023.01.19 |