반응형
학습 목표
- 전송층의 프로세스-대-프로세스-통신을 정의하고, 이것과 네트워크층의 호스트-대호스트 통신을 비교한다.
- 전송층의 주소 메커니즘, 포트 번호, 그리고 여러 가지 목적을 위해 사용되는 포트 번호의 범위를 정의한다.
- 전송층의 패킷화 문제, 그리고 메시지의 캡슐화와 역캡슐화를 설명한다.
- 전송층에서 제공하는 다중화(다-대-일)와 역다중화(일-대-다)를 설명한다.
- 전송층에서 흐름 제어가 어떻게 동작하는지를 설명한다.
- 전송층에서 오류 제어가 어떻게 동작하는지를 설명한다.
- 전송층에서 혼잡 제어가 어떻게 동작하는지를 설명한다.
- 전송층의 비연결형과 연결형 서비스를 설명한다.
- 단순 프로토콜, 정지-대기 프로토콜, N-프레임-후퇴 프로토콜 그리고 선택적 반복 프로토콜 등 4개의 일반 전송층 프로토콜과 응용들의 동작을 설명한다.
- 피기배깅 방법을 이용한 전송층의 양방향 통신 방식에 대하여 설명한다.
1. 개요
- 전송층은 네으춰크 층과 응용층 사이에 위치한다.
- 전송층은 두 으용층 사이에서 프로세스-대-프로세스 통신을 제공하는데, 하나는 로컬 호스트이고 하나는 원격 호스트이다.
2. 전송층 서비스
2.1 프로세스-대-프로세스 통신
- 전송층 프로토콜의 첫 번째 임무는 프로세스-대-프로세스 통신을 제공하는 것이다.
- 네트워크층은 컴퓨터 레벨의 통신(즉, 호스트-대-호스트 통신)만 책임을 진다.
- 목적지 컴퓨터에게만 메시지를 전송한다.
2.2 주소 체계: 포트번호
- 가장 보편적인 방법은 클라이언트 서버 패러다임을 이용하는 것이다.
- 클라이언트라는 로컬 호스트에 있는 프로세스는 보통 서버라는 원격 호스트에 있는 프로세스로부터 제공되는 서비스를 필요로 한다.
- 로컬 호스트와 원격 호스트는 IP주소를 이용하여 정의된다.
- 프로세스를 정의하기 위해서는 포트 번호 라는 두 번째의 식별 번호가 필요하다.
- TCP/IP 프로토콜 모음에서 포트 번호는 0과 65,535 사이의 정수이다.
- 클라이언트 프로그램은 임시 포트 번호 라는 임의의 포트 번호로 자신을 지정한다.
- 단명하며 일반적으로 클라이언트의 수명은 짧기 때문이다.
- 서버 포트 번호는 임의로 지정할 수 없다.
- 임의로 지정하게 된다면 서버 이용하기 원하는 클라이언트 측의 프로세스는 서버의 포트 번호를 알 수가 없다.
- ICANN 범위
- 잘 알려진 포트번호 well-known port number 0~ 1023
- 등록된 포트번호 registered port number 1024 ~ 49151
- INCANN에 의해서 배정되거나 제어되지 않는다. 중복 피하기 위해 ICANN에 등록될 수 있다.
- 동적 포트번호 dynaminc port number 49152 ~695335
- 제어되거나 등록되지 않는다.
- 임시 또는 사설 포트 번호로 사용될 수 있다.
- 소켓 주소
- IP주소와 포트 번호의 조합을 소켓 주소라고 한다.
- 클라이언트 소켓 주소는 클라이언트 프로세스를 유일하게 정의하고 서버 소켓 주소는 서버 프로세스를 유일하게 정의한다.
2.3 캡슐화와 역캡슐화
- 캡슐화는 전송 측에서 수행된다.
- 전송할 메시지가 있는 프로세스는 메시지와 한 쌍의 소켓 주소, 그리고 전송층 프로트콜에 필요한 정보들을 전송층으로 보낸다.
- 전송층은 수신한 데이터에 전송층 헤더를 붙인다.
- 전송층 패킷을 사용자 데이터그램, 세그먼트 , 또는 패킷이라고 한다.
- 역캡슐화는 수신 측에서 수행한다.
- 메시지가 목적지 전송층에 도착하면, 전송층은 헤더를 제거하고 메시지를 응용층에서 실행하는 프로세스로 전달한다.
- 수신된 메시지에 대한 응답을 보낼 경우를 대비하여 송신 측 소켓 주소가 프로세스로 전달된다.
2.4 다중화와 역다중화
- 개체가 여러 발신지로부터 정보 수신하는 경우를 다중화 multiplexing이라고 하며, 개체가 여러 목적지로 정보를 전달하는 경우를 역다중화 demultiplexing이라고 한다.
- 송신측 전송층은 다중화를 수행하며, 수신 측 전송층은 역다중화를 수행한다.
2.5 흐름 제어
- 하나의 개체가 정보를 생성하고 다른 개체가 정보 소비할때 생성률과 소비율 간에 균형이 이루어져야 한다.
- 만일 정보가 소비되는 속도보다 더 빨리 생산된다면, 소비자 측에서 데이터 과도하게 수신되게 되어 정보의 일부가 손실될 수 있다.
- 흐름 제어(flow control)
- 생성되는 정보가 소비되는 속도보다 더 늦다면, 소비자 측은 정보의 수신을 기다리게 되어 시스템의 효율성이 떨어진다.
- 밀기와 끌기
- 정보를 생산자에서 보시자로 전달하는 방법은 밀기와 끌기 중 하나로 이루어질 수 있다.
- pushing : 소비자의 요청 없이 정보가 생성될 때마다 전송 측에서 정보를 전달하는 경우
- 흐름 데어가 필요하다.
- pulling : 소비자가 요청한 경우에만 생성자가 정보 전달하는 경우
- 흐름 제어가 필요하지 않다.
- 전송층에서의 흐름 제어

- 버퍼
- 흐름 제어의 여러가지 방법 중, 일반적인 방법은 버퍼를 두는 것이다.
- 송신 전송층에 하나, 그리고 수신 전송층에 하나 등 2개의 버퍼를 이용할 수 있다.
- 버퍼는 송신 측과 수신 측에서 패킷을 저장할 수 있는 메모리 영역이다.
- 소비자에서 생산자로 신호를 전송하는 경우에 흐름 제어 기반의 통신이 이루어진다.
2.6 오류 제어
- 인터넷에서는 네트워크층이 신뢰성을 제공하지 않기 때문에, 응용층에서 신뢰성을 요구하는 경우에 전송층에서 신뢰성을 제공할 수 있어야 한다.
- 신뢰성은 전송층에 오류 제어 서비스를 추가함으로써 제공할 수 있다.
- 훼손된 패킷의 감지 및 폐기
- 손실되거나 제거된 패킷을 추적하고 재선종
- 중복 수신 패킷을 확인하고 폐기
- 손실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷을 버퍼에 저장
- 순서 번호
- 패킷의 순서 번호를 저장할 수 있또록 전송층 패킷에 한 필드를 추가해야한다.
- 어떤 패킷이 중복되었는지 또는 순서가 어긋나게 도착하는지 알 수 있다.
- 확인응답
- 오류 제어를 위하여 긍정과 부정 신호를 모두 사용할 수 있다.
- 수신 측에서는 오류 없이 잘 수신된 패킷들에 대해서 확인응답을 전송할 수 있다.
- 수신 측은 훼손된 패킷을 단순히 버린다.
- 송신 측에서는 타이머를 사용해서 패킷의 손실을 감지한다.
- 패킷 전송한 후 송신 측은 타이머 구동하고, 타이머 만료되기 전까지 ACK가 도착하지 않으면 송신 측은 패킷을 재전송한다.
2.8 혼잡 제어
- 전송되는 패킷의 수를 나타내는 네트워크의 로드가 네트워크의 처리할 수 있는 패킷의 수를 넘어가는 경우에 혼잡이 발생한다.
- 혼잡은 라우터나 스위치가 패킷을 저장하기 위한 버퍼나 큐를 가지고 있기 때문에 발생한다.
- 혼잡 제어는 혼잡이 일어나지 않도록 사전에 방지하거나, 또는 만일 발생하면 호납을 제거하기 위한 기술과 메커니즘을 말한다.
- 개방 루프 혼잡 제어
- 혼잡을 사전에 방지하기 위한 정책들이 적용된다.
- 재전송 정책
- 창 정책
- 선택적 반복 selective-repeat 창 방식과 N-프레임-후퇴 go-back-N창 방식
- 확인응답 정책
- 수신 측에서 자신이 전송할 패킷이 있거나 또는 특정 타이머가 만료되는 경우에
- 혹은 한번에 N개의 패킷에 대해 확인 응답 처리
- 폐 루프 혼잡 제어
- 혼잡이 발생한 후에 혼잡을 완화시키기 위한 방식
- 혼잡이 발생하면 창의 크기를 조절한다.
2.9 비연결형과 연결형 서비스
- 비연결형 서비스
- 패킷은 순서에 어긋나게 목적지에 도착할 수 있다.
- 동일한 메시지에 속하는 서로 다른 데이터그램이 서로 다른 경로를 겹칠 수 있다.
- 흐름 제어나 오류 제어 또는 혼잡 제어가 구현될 필요가 없다.
- 연결형 서비스
- 클라이언트와 서버는 먼저 연결을 설정하고 데이터 교환은 연결이 설정된 이후에 가능하다.
- 데이터 교환이 완료된 후에야 연결은 해제된다.
3. 전송층 프로토콜
3.1 단순 프로토콜
- 흐름 제어나 오류 제어가 없다.
- 이 프로토콜에서는 수신 측은 수신한 패킷을 즉시 처리할 수 있다고 가정한다.

3.2 정지-후-대기 프로토콜
- 흐름 제어와 오류 제어를 모두 제공한다.
- 송신 측과 수신 측은 모두 크기가 1인 미닫이 창을 사용한다.
- 송신 측은 한번에 하나의 패킷을 전송하고 확인응답이 오기 전까지는 다음 패킷을 전송하지 않는다.
- 패킷이 훼손되었는지 검사하기 위해 각 게이터 패킷에 검사합을 추가한다.
- 송신 측은 패킷을 전송할 때마다 타이머를 구동한다.
- 타이머가 만료되기 전에 확인응답이 도착하면, 타이머는 정지되고 송신측은 다음 패킷을 전송한다.
- 만일 타이머가 만료되면, 송신측은 패킷이 손실되거나 훼손되었다고 간주하고 패킷을 재전송한다.
3.3 N-프레임-후퇴 프로토콜
- 전송 효율을 향상시키기 위해서는 송신 측은 확인 응답을 기다리는 동안에 여러 개의 패킷을 전송할 수 있어야 한다.
- N-프레임-후퇴 프로토콜은 확인응답을 수신하기 전에 여러 개의 패킷을 전송할 수 있다.

3.4 선택적 반복 프로토콜
- N-프레임-후퇴 프로토콜은 하부의 네트워크 프로토콜에서 많은 패킷이 손실될 때마다 비효율적이다.
- 하나의 패킷이 손실되거나 훼손될 때마다, 송신 측은 모든 미해결 패킷들을 재전송한다.
- 선택적 반복 프로토콜은 손실된 패킷만 선택적으로 재전송된다.

3.5 양방향 프로토콜 : 피기백킹
- 앞에서 설명한 네 개의 프로토콜은 모두 단방향이다.
- 피기백킹 이라는 기술은 양방향 통신의 효율을 향상시키기 위해 사용된다.
- A에서 B로 데이터 전달하는 패킷은 또한 B로부터 수신한 패킷에 대한 확인응답과 관련된 피드백 정보도 같이 전달할 수 있다.
- 마찬가지로 B에서 A로 전달하는 패킷에도 A로부터 수신된 패킷에 대한 확인응답과 관련된 피드백 정보도 같이 전달할 수 있다.

반응형
'스터디' 카테고리의 다른 글
| [이벤트 기반 마이크로서비스 구축] Chapter14. 지원 도구 (0) | 2026.03.08 |
|---|---|
| [이벤트 기반 마이크로서비스 구축] Chapter13. 이벤트 기반 마이크로서비스와 요청-응답 마이크로서비스의 통합 (0) | 2026.03.07 |
| [이벤트 기반 마이크로서비스 구축] Chapter9 FaaS 응용 마이크로서비스 (0) | 2026.02.21 |
| [이벤트 기반 마이크로서비스 구축] Chapter8 마이크로서비스 워크플로 구축 - 미쉐린은 오케스트레이션을 버렸고, Netflix는 오케스트레이션을 만들었다 (0) | 2026.02.20 |
| [이벤트 기반 마이크로서비스 구축] Chapter4. 기존 시스템에 이벤트 기반 아키텍쳐 통합 (1) | 2026.01.25 |