전송층 서비스
1. 전송층은 응용층과 네트워크 층 사이에 위치
2. 두 응용층 사이에서 프로세스 - 대 - 프로세스 통신을 제공
3. 통신은 논리적 연결을 이용하여 제공
프로세스-대-프로세스 통신 전송층 프로토콜의 첫번째 의무는 프로세스-대-프로세스 통신 제공 (프로세스: 전송층의 서비스를 사용하는 응용층 객체(동작하는 프로그램)) 네트워크층은 컴퓨터 레벨(호스트-대-호스트)에서 통신 - 네트워크층 프로토콜은 메세지를 단지 목적지 컴퓨터에 전달 - 메세지는 정확한 프로세스에게 처리되어야 하며 이것이 전송층 프로토콜에서 수행됨 전송층 프로토콜은 적절한 프로세스에게 메세지를 전달할 책임이 있음 |
포트 번호(Port Number) - 통신을 위해서는 로컬 호스트, 로컬 프로세스, 원격 호스트, 원격 프로세스를 정의해야 한다. - 로컬 호스트와 원격 호스트는 IP주소를 이용하여 정의 - 프로세스를 정의하기 위해 포트 번호라 부르는 두 번째 식별자가 필요 - TCP/IP 프로토콜 그룹에서 포트 번호는 0과 65,535 사이 값을 가지는 정수 클라이언트 프로그램은 임시 포트 번호라 부르는 포트 번호를 스스로 정의 - 임시 포트 번호는 일부 클라이언트/서버 프로그램에서 적절하게 동작하기 위해서 1,023보다 큰 것을 권고 서버 프로세스도 포트 번호를 가지고 자기 자신을 정의해야 함 - 이 포트 번호는 임의로 선택될 수 없음 - TCP/IP는 서버들을 위해 공통의 포트 번호 사용을 결정 (잘 알려진 포트 번호라고 함) |
모든 클라이언트 프로세스는 해당하는 서버 프로세스의 잘 알려진 포트 번호를 알고 있음
ex) daytime 클라이언트 프로세스는 위에서 언급한 것처럼 임시 포트 번호 52,000을 사용하여 자기 자신을 식별하는 반면에, daytime 서버 프로세스는 잘 알려진 포트 번호 13을 사용해야 함
ICANN 범위 인터넷 할당 번호 관리 기관(ICANN)은 포트 번호를 3개 구간으로 나눔 1. 잘 알려진(well-known) 포트: 0~1,023 범위의 번호가 포트에 할당 되었고 ICANN에 의해 통제 2. 등록(registered) 포트: 1,024~49,151 범위의 포트는 ICANN에 의해 할당이나 통제를 받지 않음, 중복 방지를 위해서 ICANN에 등록만 진행 3. 동적(dynamic) 혹은 사설 포트: 49,152~65,535 범위의 포트는 ICANN에 의해 통제를 받지도 않고 소켓 주소가 아님 |
캡슐화 & 역캡슐화 (프로세스에서 다른 프로세스로 메세지를 보내기 위해 전송층 프로토콜은 메세지를 캡슐화하고 역캡슐화를 진행) 캡슐화는 송신 사이트에서 발생 - 프로세스가 보낼 메세지가 있으면 전송층 프로토콜에 따라 달라지는 소켓 주소 및 기타 정보와 함꼐 메세지를 전송 계층으로 전달 - 전송층은 데이터를 수신하고 전송 계층 헤더를 추가 역캡슐화는 수신 사이트에서 발생 - 메세지가 목적지 전송층에 도착하면, 전송층은 헤더를 제거하고 나머지 메세지를 응용층의 프로세스에게 전달 - 송신 소켓 주소는 수신된 메세지에 응답할 필요가 있는 경우를 위해 프로세스에게 전달 |
흐름제어(Flow Control)
예를 들어보자, 한 기업이 제품을 생산하고, 이를 소비자가 소비할 때 생산율과 소비율 사이에는 균형이 필요하다. 품목이 소비할 수 있는 것보다 빨리 생산되면, 소비자가 압도당해 일부 품목을 폐기해야 할 수 있고, 품목이 소비될 수 있는 것보다 느리게 생간되면 소비자는 기다려야 하고 시스템의 효율성이 떨어진다.
흐름제어는 첫 번째 문제와 관련이 있다. 소비자 측면에서는 데이터 항목이 손실되는 것을 방지해야 한다.
밀기 혹은 끌기 정보를 생산자로부터 소비자로 배달하는 방법: 밀기(pushing) & 끌기(pulling) 밀기 - 소비자의 사전 요청없이 정보가 생성될 때마다 전송측에서 정보를 전달하는 경우 (생산자가 밀기 방식으로 정보를 전달하면, 소비자는 정보의 과도한 수신에 직면할 수 있고 따라서 정보의 손실을 방지하기 위하여 반대 방향으로 흐름제어가 필요. 즉, 소비자는 전송을 중지하도록 생산자에게 경고하고 또한 자신이 정보를 다시 수신할 준비가 되면 생산자에게 알려줄 필요가 있음) 끌기 - 소비자가 요구한 경우에만 생산자가 정보를 전달하는 경우 (끌기 방식에서는 소비자가 수신할 준비가 되면 생산자에게 정보를 요청하면 되기 때문에 흐름제어는 필요없음) |
흐름 제어 처리(Handling Flow Control) 전송층 통신에서 4개의 개체(Entity)가 필요 - 발신자 프로세스, 발신자 전송층, 수신자 전송층, 수신자 프로세스 응용층의 송신 프로세스는 단순한 생산자 - 메세지를 생산하고 밀기 방식을 이용하여 전송층으로 전송 송신하는 전송층은 소비자와 생산자라는 이중 역할을 수행 - 생산자로부터 전송된 메세지를 받아서 패킷으로 캡슐화하여 수신 전송층으로 전송 수신 전송층도 이중 역할을 수행 - 송신측의 전송층으로부터 전송된 패킷을 소비 - 생산자의 역할로, 메세지를 역캡슐화하고 응용층으로 전송: 끌기 방식 - 즉, 전송층은 응용층 프로세스가 메세지를 요청하기 전까지 기다림 |
버퍼(Buffer): 송신측과 수신측에서 패킷을 저장할 수 있는 메모리 영역 여러가지 방법으로 흐름제어가 구현될 수 있지만, 그 중 일반적으로 송신 전송층에 하나, 수신 전송층에 하나, 즉 2개의 버퍼를 사용하는 것이다. - 소비자로부터 생산자로 신호를 전송하는 경우 흐름제어 기반의 통신이 발생 - 송신 전송층의 버퍼가 가득 차면, 송신 전송층은 메세지의 경유를 멈추도록 응용층에게 통보 - 버퍼에 빈 공간이 생기면, 송신 전송층은 응용층에게 메세지가 다시 지나갈 수 있다고 통보 - 수신 전송층의 버퍼가 가득 차면, 수신 전송층은 패킷의 전송을 멈추도록 송신 전송층에게 통보 - 버퍼에 빈 공간이 생기면, 수신 전송층은 송신 전송층에게 패킷을 다시 전송해도 된다고 통보 |
오류 제어(Error Control)
TCP/IP 프로토콜의 경우 네트워크층에서 신뢰성을 제공하지 않기 때문에 전송층에서 신뢰성을 제공해야 한다.
전송층에서 오류 제어가 제공하는 기능 - 손상된 패킷을 감지 & 폐기 - 손실되거나 폐기된 패킷을 추적하고 재전송 - 중복 전송 패킷을 확인하고 폐기 - 분실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷들을 버퍼에 저장 |
흐름제어와는 다르게 오류제어는 송신 전송층과 수신 전송층만이 연관
순서 번호 오류 제어가 수행되기 위해서는 송신 전송층은 어떤 패킷이 재전송되어야 하는지를 알아야 하며, 수신 전송층은 어떤 패킷이 중복되었는지, 또는 어떤 패킷이 순서에 어긋나게 도착했는지 알아야 된다. - 패킷이 번호를 가지고 있으면 가능 - 패킷의 순서 번호를 저장할 수 있도록 전송층 패킷에 한 필드를 추가 - 만일 패킷이 훼손되거나 손실되었으면, 수신 전송층은 어떻게든 송신 전송층에게 순서 번호를 가진 해당 패킷을 재전송하도록 알려줄 수 있음 - 수신한 2개의 패킷이 동일한 순서 번호를 가지는 경우에 수신 전송층은 패킷의 중복 수신을 감지할 수 있음 - 순서 번호의 간격을 관찰함으로써 패킷이 순서에 어긋나게 들어왔는지도 확인할 수 있음 |
확인 응답 오류 제어를 위하여 긍정과 부정 신호를 사용할 수 있음 수신측에서는 오류 없이 잘 수신된 패킷들에 대해서 확인응답(ACK)를 전송할 수 있음 - 수신측은 훼손된 패킷과 중복 수신된 패킷을 폐기 - 순서에 어긋나게 들어온 패킷은 폐기하거나, 손실된 패킷이 도착하기 전까지 버퍼에 저장함 송신측에서 타이머를 사용하는 경우에는 패킷의 손실을 감지할 수 있음 - 패킷을 전송한 후 송신측은 타이머를 가동하고, 타이머가 만료되기 전까지 ACK가 도착하지 않으면 송신측은 패킷을 재전송함 |
미닫이 창(sliding window)
순서 번호가 모듈러 2^m을 사용하기 때문에 0부터 2^m-1까지의 순서 번호를 원형으로 표현 가능
버퍼는 미닫이 창이라고 하는 일련의 조각 집합으로 표현되며, 각 조각은 언제나 원형의 일부를 점유 송신측에서 패킷이 전송되면 관련 조각은 청색으로 표현 모든 조각이 표시 된다는 것은 버퍼가 다 차서 메세지를 응용층으로부터 수신할 수 없다는 것을 의미 확인응답이 수신되면 해당 조각의 표시는 흰색으로 해제 창의 시작부터 몇 개의 연속적인 조각의 표시가 해제되면, 창의 끝에서 좀 더 많은 빈 조각을 허용하기 위해 창을 관련 순서 번호의 범위를 미는 것처럼 돌림 |
비연결형과 연결형 프로토콜
네트워크층 프로토콜과 마찬가지로 전송층 프로토콜도 비연결형과 연결형 두 가지 형태의 서비스를 제공
(전송층에서의 비연결형 서비스는 패킷 간의 독립성을 의미, 연결형 서비스는 종속성을 의미)
비연결형 서비스 - 비연결형 서비스에서 발신지 프로세스(응용 프로그램)는 메시지를 전송층에서 수신 가능한 크기의 여러 개의 데이터 조각으로 나눈 후 데이터 조각들을 하나씩 전송층으로 전달
- 전송층은 데이터들의 관계를 고려하지 않고 각각의 데이터 조각을 독립적인 하나의 단위로 간주 - 응용층으로부터 하나의 조각이 들어오면, 전송층은 조각을 패킷으로 캡슐화한 후에 전송 - 패킷의 독립성을 보기 위하여 클라이언트 프로세스가 서버 프로세스로 3개의 메시지 조각을 전송하는 경우를 가정 - 이 조각들은 순서에 맞게 비연결형 전송으로 전달되지만, 전송층에서는 패킷 간의 연관성이 없기 때문에 패킷의 순서가 어긋나게 목적지에 도착할 수 있으며, 따라서 서버 프로세스에도 순서에 어긋나서 도착할 수 있음 |
연결형 서비스 연결형 서비스에서 클라이언트와 서버는 먼저 그들간에 논리적인 연결을 설정함
- 데이터 교환은 연결이 설정된 이후에 가능하고, 데이터의 교환이 완료된 후에 연결은 해지됨
전송층에서 연결형 서비스는 네트워크층의 연결형 서비스와 다름
- 네트워크층에서 연결형 서비스는 2개의 종단 호스트와 그 사이에 있는 모든 라우터들 간의 협력을 의미함
- 전송층에서 연결형 서비스는 단지 2개의 종단 호스트만 포함하며, 서비스는 종단에서만 이루어짐
비연결형 또는 연결형 서비스 위에서 연결형 프로토콜을 구현할 수 있어야 함을 의미함
- 연결형 프로토콜에서는 흐름 제어, 오류 제어, 그리고 혼잡 제어등이 구현 가능함
|
유한 상태 기기(Finite State Machine: FSM) 비연결형과 연결형 프로토콜을 제공하는 전송 계층 프로토콜의 동작을 설명 가능 비연결형 전송층은 단 하나의 상태인 정착 상태만을 가지는 FSM으로 표현 - 한 끝의 기기는 항상 정착 상태에 있으며, 전송층 패킷을 송수신 할 준비가 되어 있음 연결형 전송층에서 FSM은 3개의 상태를 경유해서 설정 상태에 도달하게 되며, 연결을 종료하기 전에 3개의 상태를 경유 - 설정되어 있는 연결이 없는 기기는 닫힌(closed) 상태에 있으며, 로컬 프로세스로부터 연결 설정 요청이 들어오기 전까지는 이 상태를 유지 - 로컬 프로세스로부터 연결 설정 요청을 수신한 기기는 원격 전송층에게 개설 요청 패킷을 전송하고 open-wait-I 상태로 진행 - 상대방으로부터 확인응답을 받은 로컬 FSM은 open-wait II 상태로 진행 - 기기가 이 상태에 있는 동안에는 단방향 연결이 설정 - 그렇지만 양방향 연결이 설정되기 위해서는 상대방으로부터 연결 요청을 수신해야 하며 그전까지는 이 상태에서 대기 - 상대방으로부터 연결 요청을 수신한 기기는 확인응답을 전송하고 정착(established) 상태로 진행 - 둘 다 설정 상태에 있는 경우 양 종단 간에 데이터와 데이터 확인응답이 교환될 수 있음
- 그렇지만 비연결형과 연결형 전송층에서 설정 상태는 데이터 전송 상태를 포함
- 연결을 종료하기 위하여 응용층은 자신의 로컬 전송층에게 닫기(close) 요청 메시지를 전송
- 전송층은 상대방 전송층에게 닫기-요청(close-request) 패킷을 전송하고 close-wait-I 상태로 진행
- 상대방으로부터 확인응답을 수신한 전송층은 close-wait II 상태로 진행한 후 상대방으로부터 닫기-요청 패킷을 수신하기를 대기
- 이 패킷이 도착하면 전송층은 확인응답을 전송하고 닫힌(closed) 상태로 진행 |
전송층 프로토콜
인터넷의 전송 프로토콜에 대해 설명
UDP - 오류 제어가 응용층 프로세스에 의해 제공되는 응용에서 단순성과 효율성으로 사용되는 신뢰성 없는 비연결형 전송층 프로토콜 TCP - 신뢰성이 중요한 응용에 의해 사용될 수 있는 신뢰성 있는 연결형 프로토콜 SCTP - UDP, TCP의 특성을 결합한 새로운 전송층 프로토콜 |
포트 번호 전송층 프로토콜의 역할 중 하나는 프로세스-대-프로세스 통신을 생성하는 것 - 이런 프로토콜은 이것을 수행하기 위해 포트 번호를 사용 - 포트 번호는 전송층에서 종단간 주소를 제공, 마치 네트워크층에서 IP 주소하는 역할과 동일한 다중화와 역다중화를 위해 사용 |
모든 내용은 '데이터 통신과 네트워킹 6판' 책을 공부하여 작성 하였습니다.
'데이터 통신' 카테고리의 다른 글
[데이터 통신과 네트워킹] TCP 서비스와 특징, 세그먼트, TCP 연결 (1) | 2022.09.26 |
---|---|
[데이터 통신과 네트워킹] 사용자 데이터그램 프로토콜(UDP) (0) | 2022.09.23 |
데이터 통신과 네트워킹 6판 Chapter 7 기본 연습문제 풀이 (0) | 2022.06.08 |
데이터 통신과 네트워킹 6판 Chapter 6 기본 연습문제 풀이 (0) | 2022.06.06 |
데이터 통신과 네트워킹 Chapter7 ICMPv6, IPv6로의 변환 (0) | 2022.06.01 |