티스토리 뷰
3.1 트랜스포트 계층 서비스 및 개요
트랜스포트 계층 프로토콜
- 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공한다.
- 네트워크 라우터가 아닌 종단 시스템에서 구현된다.
세그먼트(segment)
- 송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 트랜스포트 계층 패킷으로 변환한다.
- 이를 세그먼트라고 부른다.
- 이러한 변환은 애플리케이션 메시지를 트랜스포트 계층 세그먼트로 만들기 위해 작은 조각으로 분할하고, 각각의 조각에 트랜스포트 계층 헤더를 추가함으로써 수행된다.
3.1.1 트랜스포트 계층과 네트워크 계층 사이의 관계
트랜스포트 계층 프로토콜
- 서로 다른 호스트에서 동작하는 프로세스들 사이의 논리적 통신을 제공
네트워크 계층 프로토콜
- 호스트들 사이의 논리적 통신을 제공한다.
두 집안이 우편을 주고 받을 때, A집과 B집이 있다고 가정하자.
두 집안에는 우편을 수거하고 나눠 주는 한명의 아이가 있다.
A 집안에는 앤이 B 집안에는 빌이 담당한다.
매주 앤은 A 집안의 형제자매에게서 우편물을 수거하고 매일 집에 찾아오는 집배원에게 우편물을 준다.
편지가 A 집안에 도착하면 앤은 그 우편물을 나눠 준다.
B 집안의 빌도 똑같은 역할을 한다.
우편 서비스는 두 집 간에 논리 통신을 제공한다.
애플리케이션 메시지 = 봉투 안의 편지
프로세스 = 사촌 형제
호스트(또한 종단 시스템) = 집
트랜스포트 계층 프로토콜 = "앤"과 "빌"
네트워크 계층 프로토콜 = 우편 서비스(우편집배원 포함)
3.1.2 인터넷 트랜스포트 계층의 개요
✅ IP: 인터넷 네트워크 계층 프로토콜
- IP 서비스 모델: 호스트들 간에 논리적 통신을 제공하는 최선형 전달 서비스(best-effort delivery service)
- IP가 통신하는 호스트들 간에 세그먼트를 전달하기 위해서 최대한 노력하지만, 어떤 보장도 하지 않는다는 것을 의미한다.
UDP와 TCP의 가장 기본적인 기능은 종단 시스템 사이의 IP 전달 서비스를 종단 시스템에서 동작하는 두 프로세스 간의 전달 서비스로 확장하는 것이다.
- 호스트-대-호스트 전달을 프로세스-대-프로세스 전달로 확장하는 것을 트랜스포트 다중화와 역중화라고 부른다.
UDP
- IP와 같이 비신뢰적인 서비스
TCP
- 신뢰적인 데이터 전달을 제공
- 흐름제어
- 순서번호
- 확인응답
- 타이머
3.2 다중화와 역다중화
수신 측 호스트의 트랜스포트 계층은 실제로 데이터를 직접 프로세스로 전달하지 않는다. 대신에 중간 매개자인 소켓에게 전달한다.
- 어떤 주어진 시간에 수신 측 호스트에 하나 이상의 소켓이 있을 수 있으므로, 각각의 소켓은 어떤 하나의 유일한 식별자를 가진다. 이 식별자의 포맷은 소켓이 UDP 소켓인지 또는 TCP 소켓인지에 따라서 달라진다.
수신 측의 트랜스포트 계층은 수신 소켓을 식별하기 위해서 세그먼트에 필드 집합을 가지고 있는데 이를 검사한다.
- 그리고 이 세그먼트를 해당 소켓으로 보낸다. 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화(demultiplexing)라고 한다.
출발지 호스트에서 소켓으로부터 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해서 각 데이터에 헤더 정보(나중에 역다중화에 사용된다)로 캡슐화하고, 그 세그먼트를 네트워크 계층으로 전달하는 작업을 다중화(multiplexing)이라고 한다.
비연결형 다중화와 역다중화
- UDP 소켓이 목적지 IP 주소와 목적지 포트 번호로 구성된 두 요소로 된 집합에 의해서 식별된다.
- 출발지 IP 주소와 출발지 포트 번호가 다르더라도 동일한 목적지 IP 주소와 목적지 포트 번호를 가지면 2개의 세그먼트들은 같은 목적지 소켓을 통해 동일한 프로세스로 향할 것이다.
출발지 포트 번호의 사용 목적
- 복귀 주소의 한 부분으로 사용된다.
연결지향형 다중화와 역다중화
- TCP 소켓은 4개 요소들의 집합 즉 출발지 IP 주소, 출발지 포트 번호, 목적지 IP 주소, 목적지 포트 번호에 의해서 식별된다는 것이다.
- 네 가지 값이 일치하면 세그먼트는 이 소켓으로 역다중화될 것이다.
3.3 비연결형 트랜스포트 UDP
세그먼트를 송신하기 전에 송신 트랜스포트 계층 개체들과 수신 트랜스포트 계층 개체들 사이에 핸드셰이크를 사용하지 않는다. 이런 이유로 UDP를 비연결형이라고 한다.
- 무슨 데이터를 언제 보낼지에 대해 애플리케이션 레벨에서 더 정교한 제어
- 연결 설정이 없다.
- 연결 상태가 없다.
- 작은 패킷 헤더 오버헤드
LAN: 길이 작아, 근거리 통신망의 경우 오류가 생길일이 거의 X
-> 오류 검증이 오히려 손해 -> UDP가 사용됨.
3.3.1 UDP 세그먼트 구조
3.3.2 UDP 체크섬
- UDP 체크섬은 오류 검출을 제공한다.
- 출발지와 목적지 사이의 모든 링크가 오류 검사를 제공한다는 보장이 없기 때문이다.
3.4 신뢰성 있는 데이터 전송의 원리
아래 층이 unreliable 한 것을 reliable하게 하기 위함. -> TCP
3.4.1 신뢰적인 데이터 전달 프로토콜의 구축
비트 오류와 손실 있는 채널 상에서의 신뢰적 데이터 전송: rdt3.0
패킷이 손실된 경우
- timeout 안에 ACK가 오지 않는다.
- timeout 후에 해당 데이터를 다시 보낸다.
패킷이 손실되지 않았음에도 ACK 손실이 일어난 경우
- 보내졌는데 송신 측에서 착각하고 다시 보낸다.
- timeout 후에 데이터가 재전송된다.
- 이런 경우 수신 측에서 받은 패킷의 번호가 중복되는 것을 확인하고 하나를 버리면 된다.
timeout 시간을 너무 짧게 정한 경우
- ACK가 오기전에 재전송 할 수 있음.
- (timeout 시간을 너무 길게하면 기다리는 시간이 길어질 수 있으므로 좋지 않음.)
- 아무튼 timeout 시간을 적당하게 잘 정해야 한다!!!
위 그림에서 볼 수 있듯 패킷의 순서번호가 0과 1이 번갈아 일어나므로, 프로토콜 rdt3.0은 때때로 얼터네이팅 비트 프로토콜(alternating-bit protocol)이라고 부른다.
3.4.2 파이프라인된 신뢰적 데이터 전송 프로토콜
프로토콜 rdt3.0은 기능적으로 정확한 프로토콜이다. 그러나 오늘날의 고속 네트워크에서 누구나 이것의 성능에 만족하는 것은 아니다. rdt3.0의 핵심적인 성능 문제는 rdt3.0이 전송-후-대기(stop-and-wait) 프로토콜이라는 것이다.
이러한 특별한 성능 문제에 대한 간단한 해결책: 파이프라이닝
- 전송-후-대기 방법으로 동작하는 대신에 송신자에게 그림 3.17(b)에서 보이는 것처럼 확인응답을 기다리지 않고 여러 패킷을 전송하도록 허용하는 것이다.
파이프라인 오류 회복의 두 가지 기본적인 접근방법
- N부터 반복(Go-Back-N, GBN)
- 선택적 반복(Selective Repeat, SR)
3.4.3 N부터 반복(Go-Back-N, GBN)
문제
- 패킷들 중에서 중간에 가던게 loss 될 수 있음.
해결
- loss 된 것만 다시 보내는 것은 구현이 어렵다.
- 만약 1, 2, 3, 4, 5, 6 중 4번이 loss 되었다면 받는 쪽에서 4번부터 받지 않고 보내는 쪽에서 4번부터 다시 보내게 된다.
윈도우 크기(window size)
- 아직 확인응답 안된 패킷을 위해 허용할 수 있는 순서번호의 범위는 순서번호의 범위 상 크기가 N인 윈도우로 나타낸다.
- GBN 프로토콜은 슬라이딩 윈도우 프로토콜(sliding-window protocol)이라고 부른다.
3.4.4 선택적 반복(Selective Repeat, SR)
GBN의 경우 패킷 하나의 오류 때문에 많은 패킷을 재전송하므로, 많은 패킷을 불필요하게 재전송하는 경우가 발생한다.
문제
- 패킷들 중에서 중간에 가던게 loss 될 수 있음.
해결
- 에러가 난 것만 다시 보낼 수 있음.
- 수신자에서 오류(손실되거나 변조된)가 발생한 패킷을 수신했다고 의심되는 패킷만을 송신자가 다시 전송하므로 불필요한 재전송을 피한다.
SR 수신자는 패킷의 순서와는 무관하게 손상없이 수신된 패킷에 대한 확인응답을 할 것이다.
- 순서가 틀린 패킷은 분실된 패킷(아직 도착하지 않은 더 낮은 순서번호를 가진 패킷)이 수신될 때까지 버퍼에 저장하고, 손실된 패킷이 수신된 시점에서, 일련의 패킷을 순서대로 상위 계층에 전달할 수 있다.
패킷의 원래 전송과 재전송을 구별하기 위해 윈도우 크기 조절을 잘 해야 한다.
최소한의 윈도우 크기
- SR 프로토콜에 대한 순서번호 공간 크기의 절반보다 작거나 같아야 한다.
'CS > 컴퓨터네트워크' 카테고리의 다른 글
[Computer Network] 4.3 인터넷 프로토콜(IP): IPv4, 주소 지정 (0) | 2022.11.11 |
---|---|
[Computer Network] 4.1 네트워크 계층 개요, 4.2 라우터 내부에는 무엇이 있을까? (0) | 2022.11.08 |
[Computer Network] 2.7 소켓 프로그래밍: 네트워크 애플리케이션 생성 (0) | 2022.10.13 |
[Computer Network] 2.5 P2P 파일 분배 (0) | 2022.10.12 |
[Computer Network] 2.4 DNS - 인터넷 디렉터리 서비스 (0) | 2022.10.12 |