Computer Science/네트워크

[컴퓨터네트워크] 08. 전송계층(1)

lumana 2024. 5. 18. 18:00

전송계층

전송계층 소개

  • Process-to-process 통신 지원
    • Local host<-->remote host
  • 논리 연결(logical connection)을 통해 통신 지원

전송계층 서비스

  • 에플리케이션 계층에게 서비스 제공
  • 네트워크 계층의 서비스 이용

 

 

 

 

Ex 8.1

유닉스에서 well-known 포트는 /etc/services(유닉스, 리눅스) 파일에 저장되어 있다. Grep 명령을 통해 찾는 정보가 있는 라인을 추출할 수 있다.

$grep tftp/etc/services
tftp 69/tcp
tftp 69/udp
  • tcp와 udp에서 69번을 사용한다

SNMP는 2개(161, 162)의 포트 번호를 다른 용도로 사용한다

$grep snmp/etc/services
snmp161/tcp#Simple Net Mgmt Proto
snmp161/udp#Simple Net Mgmt Proto
snmptrap162/upd$Traps for SNMP

 

 

 

 

Ex 8.2

앞의 예제에서 봉 때, 소비자(consumers)와 생산자(produ cers) 사이에 통신할 때 2가지의 경우가 생긴다

: 버퍼가 차거나(full) 버퍼가비어있거나(vacant).

양 측에서 한 개의 슬롯만 있는 버퍼를 쓸 경우, 통신은 간단하다.

보내는 전달계층의 버퍼가 비면(empty), 응용 계층에게 다음 것을 보내라고 알린다.

수신측 전달계층의 버퍼가 비면, 송신측의 전달층에게 다음 데이터를 보내라고 확인응답(Acknowledgement)한다.

하지만, 하나의 슬롯이 있는 버퍼만 사용하는 흐름제어는 비효율적이다.

 

 

연결(Connection)

  • 전달계층의 프로토콜은 네트워크 계층에서처럼 2종류의 서비스 제공
    • 비연결형과 연결형
  • 네트워크 계층 서비스와의 차이점
    • 네트워크 계층에서의 비연결 서비스의 의미는 같은 메시지의 다른 데이터그램에 대해 다른 경로를 갈 수 있다는 것
    • 네트워크 계층에서의 연결 서비스의 의미는 같은 메시지의 다른 데이터 그램에 대해 같은 경로를 가는것
    • 전달계층에서의 비연결서비스란 패킷 간의 독립성
    • 전달계층에서의 연결서비스는 패킷 간의 종속성

 

 

전달계층 프로토콜

  • 전달계층의 프로토콜은 앞절에 나온 서비스를 조합하여 만듬
  • 프로토콜의 동작 이해를 위해 간단한 것부터 복잡한 것까지 알아보자
  • TCP/IP 프로토콜은 이들 프로토콜의 다양한 수정과 조합

Simple Protocol

실제로 사용되는 것은 아니고, 모형임

  • 간단한 비연결형 프로토콜
  • 흐름제어, 오류제어 없음
  • 수신기는 수신하는 패킷을 즉시처리 가능
    • 수신 패킷에 대해 넘칠 가능성 없음

 

EX 8.3

그림 8.19에서는 Simple Protocol을 사용하고 있는데, 매우 간단함
송신자는 수진자를 전혀 고려하지 않고 하나의 패킷을 보낸다

Stop-and-Wait 프로토콜

  • 두번째는 Stop-and-Wait 프로토콜이라 불리는 연결지향형의 프로토콜
  • 흐름제어와 오류제어 사용
  • 송신자와 수신자는 크기 1인 슬라이딩 윈도우 사용
  • 송신자는 한번에 한 개의 패킷을 보내고, 다음 데이터를 보내기
    전에 확인응답(acknowledgement)을 기다림
  • 패킷 오류를 검사하기 위해 각 패킷에 체크섬(checksum)을 추가
  • 패킷이 수신되면 수신자는 체크섬을 검사해서, 오류가 있으면 통보없이 버림

 

EX 8.4

그림 8.22 예제

  1. Stop-and-Wait 프로토콜 동작. 패킷 0을 보내고 확인 응답(Ack) 수신
  2. 패킷 1은 유실. 타임아웃 발생. 패킷 1 재전송
  3. 패킷 1 Ack 수신. 타이머 중지
  4. 패킷 0 송신. 수신측은 Ack를 전송했지만 유실
  5. 송신 측은 패킷이 유실된 것인지, Ack가 유실된 것인지 알 수 없음. 타임아웃이 발생하고, 패킷 0을 재전송함. 이후 Ack를 받음

EX 8.5

Stop-and-Wait 시스템에서, 라인의 밴드폭이 1 Mbps, 1비트가 왕복하는데 20 milliseconds 걸림. bandwidth-delay product는 얼마인가? 데이터 패킷의 길이가 1,000 비트인 경우, 링크의 이용률은 얼마인가?

Solution

bandwidth-delay product는 (1×10^6)×(20×10^(−3))=20,000 bits(직사각형 넓이 구한다고 생각하자)
이 시스템은 데이터를 보내고 응답을 받는 시간에 20,000 비트를 보낼 수있다. 시스템이그시간에 1,000 비트를 보냈다면 링크이용률은 1,000/20,000, 즉 5 퍼센트임.

=> 높은 밴드폭인 경우 Stop-and-Wait는 용량을 낭비함.

EX 8.6

앞의 예제에서 Ack를 받기 전에 15개의 패킷을 보낸다면 링크 이용률은?

 

Solution

bandwidth-delay product 는 20,000 bits. 15 패킷 = 15,000 비트. 이용률은 15,000/20,000, 즉 75 퍼센트 이용률은 재전송이 일어날 경우 더 떨어짐